summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/Python-ast.c239
-rw-r--r--Python/_warnings.c221
-rw-r--r--Python/ast.c1261
-rw-r--r--Python/bltinmodule.c22
-rw-r--r--Python/ceval.c795
-rw-r--r--Python/clinic/bltinmodule.c.h49
-rw-r--r--Python/clinic/import.c.h29
-rw-r--r--Python/compile.c743
-rw-r--r--Python/dtoa.c6
-rw-r--r--Python/dynload_win.c8
-rw-r--r--Python/fileutils.c34
-rw-r--r--Python/formatter_unicode.c2
-rw-r--r--Python/frozen.c20
-rw-r--r--Python/frozenmain.c4
-rw-r--r--Python/future.c5
-rw-r--r--Python/getargs.c676
-rw-r--r--Python/graminit.c106
-rw-r--r--Python/import.c415
-rw-r--r--Python/importdl.c4
-rw-r--r--Python/importlib.h3662
-rw-r--r--Python/importlib_external.h4899
-rwxr-xr-xPython/makeopcodetargets.py48
-rw-r--r--Python/marshal.c118
-rw-r--r--Python/modsupport.c4
-rw-r--r--Python/mystrtoul.c6
-rw-r--r--Python/opcode_targets.h6
-rw-r--r--Python/peephole.c632
-rw-r--r--Python/pylifecycle.c105
-rw-r--r--Python/pystate.c38
-rw-r--r--Python/pystrtod.c9
-rw-r--r--Python/pythonrun.c32
-rw-r--r--Python/pytime.c274
-rw-r--r--Python/random.c336
-rw-r--r--Python/symtable.c13
-rw-r--r--Python/sysmodule.c75
-rw-r--r--Python/traceback.c221
-rw-r--r--Python/wordcode_helpers.h38
37 files changed, 8707 insertions, 6448 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index edfcbad..1193c7c 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -285,6 +285,18 @@ _Py_IDENTIFIER(s);
static char *Str_fields[]={
"s",
};
+static PyTypeObject *FormattedValue_type;
+_Py_IDENTIFIER(conversion);
+_Py_IDENTIFIER(format_spec);
+static char *FormattedValue_fields[]={
+ "value",
+ "conversion",
+ "format_spec",
+};
+static PyTypeObject *JoinedStr_type;
+static char *JoinedStr_fields[]={
+ "values",
+};
static PyTypeObject *Bytes_type;
static char *Bytes_fields[]={
"s",
@@ -294,6 +306,10 @@ static char *NameConstant_fields[]={
"value",
};
static PyTypeObject *Ellipsis_type;
+static PyTypeObject *Constant_type;
+static char *Constant_fields[]={
+ "value",
+};
static PyTypeObject *Attribute_type;
_Py_IDENTIFIER(attr);
_Py_IDENTIFIER(ctx);
@@ -697,6 +713,7 @@ static PyObject* ast2obj_object(void *o)
return (PyObject*)o;
}
#define ast2obj_singleton ast2obj_object
+#define ast2obj_constant ast2obj_object
#define ast2obj_identifier ast2obj_object
#define ast2obj_string ast2obj_object
#define ast2obj_bytes ast2obj_object
@@ -734,6 +751,19 @@ static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
return 0;
}
+static int obj2ast_constant(PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (obj) {
+ if (PyArena_AddPyObject(arena, obj) < 0) {
+ *out = NULL;
+ return -1;
+ }
+ Py_INCREF(obj);
+ }
+ *out = obj;
+ return 0;
+}
+
static int obj2ast_identifier(PyObject* obj, PyObject** out, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && obj != Py_None) {
@@ -769,7 +799,7 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
return 1;
}
- i = (int)PyLong_AsLong(obj);
+ i = _PyLong_AsInt(obj);
if (i == -1 && PyErr_Occurred())
return 1;
*out = i;
@@ -917,6 +947,11 @@ static int init_types(void)
if (!Num_type) return 0;
Str_type = make_type("Str", expr_type, Str_fields, 1);
if (!Str_type) return 0;
+ FormattedValue_type = make_type("FormattedValue", expr_type,
+ FormattedValue_fields, 3);
+ if (!FormattedValue_type) return 0;
+ JoinedStr_type = make_type("JoinedStr", expr_type, JoinedStr_fields, 1);
+ if (!JoinedStr_type) return 0;
Bytes_type = make_type("Bytes", expr_type, Bytes_fields, 1);
if (!Bytes_type) return 0;
NameConstant_type = make_type("NameConstant", expr_type,
@@ -924,6 +959,8 @@ static int init_types(void)
if (!NameConstant_type) return 0;
Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0);
if (!Ellipsis_type) return 0;
+ Constant_type = make_type("Constant", expr_type, Constant_fields, 1);
+ if (!Constant_type) return 0;
Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3);
if (!Attribute_type) return 0;
Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3);
@@ -2063,6 +2100,42 @@ Str(string s, int lineno, int col_offset, PyArena *arena)
}
expr_ty
+FormattedValue(expr_ty value, int conversion, expr_ty format_spec, int lineno,
+ int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field value is required for FormattedValue");
+ return NULL;
+ }
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = FormattedValue_kind;
+ p->v.FormattedValue.value = value;
+ p->v.FormattedValue.conversion = conversion;
+ p->v.FormattedValue.format_spec = format_spec;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
+JoinedStr(asdl_seq * values, int lineno, int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = JoinedStr_kind;
+ p->v.JoinedStr.values = values;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
Bytes(bytes s, int lineno, int col_offset, PyArena *arena)
{
expr_ty p;
@@ -2114,6 +2187,25 @@ Ellipsis(int lineno, int col_offset, PyArena *arena)
}
expr_ty
+Constant(constant value, int lineno, int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field value is required for Constant");
+ return NULL;
+ }
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Constant_kind;
+ p->v.Constant.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int
col_offset, PyArena *arena)
{
@@ -3164,6 +3256,34 @@ ast2obj_expr(void* _o)
goto failed;
Py_DECREF(value);
break;
+ case FormattedValue_kind:
+ result = PyType_GenericNew(FormattedValue_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(o->v.FormattedValue.value);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(o->v.FormattedValue.conversion);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_conversion, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(o->v.FormattedValue.format_spec);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_format_spec, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case JoinedStr_kind:
+ result = PyType_GenericNew(JoinedStr_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(o->v.JoinedStr.values, ast2obj_expr);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_values, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
case Bytes_kind:
result = PyType_GenericNew(Bytes_type, NULL, NULL);
if (!result) goto failed;
@@ -3186,6 +3306,15 @@ ast2obj_expr(void* _o)
result = PyType_GenericNew(Ellipsis_type, NULL, NULL);
if (!result) goto failed;
break;
+ case Constant_kind:
+ result = PyType_GenericNew(Constant_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_constant(o->v.Constant.value);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
case Attribute_kind:
result = PyType_GenericNew(Attribute_type, NULL, NULL);
if (!result) goto failed;
@@ -6025,6 +6154,86 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (*out == NULL) goto failed;
return 0;
}
+ isinstance = PyObject_IsInstance(obj, (PyObject*)FormattedValue_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ int conversion;
+ expr_ty format_spec;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_expr(tmp, &value, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from FormattedValue");
+ return 1;
+ }
+ if (exists_not_none(obj, &PyId_conversion)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_conversion);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_int(tmp, &conversion, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ conversion = 0;
+ }
+ if (exists_not_none(obj, &PyId_format_spec)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_format_spec);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_expr(tmp, &format_spec, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ format_spec = NULL;
+ }
+ *out = FormattedValue(value, conversion, format_spec, lineno,
+ col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, (PyObject*)JoinedStr_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_seq* values;
+
+ if (_PyObject_HasAttrId(obj, &PyId_values)) {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ tmp = _PyObject_GetAttrId(obj, &PyId_values);
+ if (tmp == NULL) goto failed;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ values = _Py_asdl_seq_new(len, arena);
+ if (values == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty value;
+ res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
+ if (res != 0) goto failed;
+ asdl_seq_SET(values, i, value);
+ }
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from JoinedStr");
+ return 1;
+ }
+ *out = JoinedStr(values, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type);
if (isinstance == -1) {
return 1;
@@ -6079,6 +6288,28 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (*out == NULL) goto failed;
return 0;
}
+ isinstance = PyObject_IsInstance(obj, (PyObject*)Constant_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ constant value;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_constant(tmp, &value, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Constant");
+ return 1;
+ }
+ *out = Constant(value, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
if (isinstance == -1) {
return 1;
@@ -7346,12 +7577,18 @@ PyInit__ast(void)
if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return NULL;
if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return NULL;
if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return NULL;
+ if (PyDict_SetItemString(d, "FormattedValue",
+ (PyObject*)FormattedValue_type) < 0) return NULL;
+ if (PyDict_SetItemString(d, "JoinedStr", (PyObject*)JoinedStr_type) < 0)
+ return NULL;
if (PyDict_SetItemString(d, "Bytes", (PyObject*)Bytes_type) < 0) return
NULL;
if (PyDict_SetItemString(d, "NameConstant", (PyObject*)NameConstant_type) <
0) return NULL;
if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0)
return NULL;
+ if (PyDict_SetItemString(d, "Constant", (PyObject*)Constant_type) < 0)
+ return NULL;
if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < 0)
return NULL;
if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) < 0)
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 978bad1..40f5c8e 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -40,12 +40,11 @@ check_matched(PyObject *obj, PyObject *arg)
A NULL return value can mean false or an error.
*/
static PyObject *
-get_warnings_attr(const char *attr)
+get_warnings_attr(const char *attr, int try_import)
{
static PyObject *warnings_str = NULL;
PyObject *all_modules;
- PyObject *warnings_module;
- int result;
+ PyObject *warnings_module, *obj;
if (warnings_str == NULL) {
warnings_str = PyUnicode_InternFromString("warnings");
@@ -53,15 +52,34 @@ get_warnings_attr(const char *attr)
return NULL;
}
- all_modules = PyImport_GetModuleDict();
- result = PyDict_Contains(all_modules, warnings_str);
- if (result == -1 || result == 0)
- return NULL;
+ /* don't try to import after the start of the Python finallization */
+ if (try_import && _Py_Finalizing == NULL) {
+ warnings_module = PyImport_Import(warnings_str);
+ if (warnings_module == NULL) {
+ /* Fallback to the C implementation if we cannot get
+ the Python implementation */
+ PyErr_Clear();
+ return NULL;
+ }
+ }
+ else {
+ all_modules = PyImport_GetModuleDict();
- warnings_module = PyDict_GetItem(all_modules, warnings_str);
- if (!PyObject_HasAttrString(warnings_module, attr))
+ warnings_module = PyDict_GetItem(all_modules, warnings_str);
+ if (warnings_module == NULL)
return NULL;
- return PyObject_GetAttrString(warnings_module, attr);
+
+ Py_INCREF(warnings_module);
+ }
+
+ if (!PyObject_HasAttrString(warnings_module, attr)) {
+ Py_DECREF(warnings_module);
+ return NULL;
+ }
+
+ obj = PyObject_GetAttrString(warnings_module, attr);
+ Py_DECREF(warnings_module);
+ return obj;
}
@@ -70,7 +88,7 @@ get_once_registry(void)
{
PyObject *registry;
- registry = get_warnings_attr("onceregistry");
+ registry = get_warnings_attr("onceregistry", 0);
if (registry == NULL) {
if (PyErr_Occurred())
return NULL;
@@ -87,7 +105,7 @@ get_default_action(void)
{
PyObject *default_action;
- default_action = get_warnings_attr("defaultaction");
+ default_action = get_warnings_attr("defaultaction", 0);
if (default_action == NULL) {
if (PyErr_Occurred()) {
return NULL;
@@ -110,7 +128,7 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
Py_ssize_t i;
PyObject *warnings_filters;
- warnings_filters = get_warnings_attr("filters");
+ warnings_filters = get_warnings_attr("filters", 0);
if (warnings_filters == NULL) {
if (PyErr_Occurred())
return NULL;
@@ -287,8 +305,8 @@ update_registry(PyObject *registry, PyObject *text, PyObject *category,
}
static void
-show_warning(PyObject *filename, int lineno, PyObject *text, PyObject
- *category, PyObject *sourceline)
+show_warning(PyObject *filename, int lineno, PyObject *text,
+ PyObject *category, PyObject *sourceline)
{
PyObject *f_stderr;
PyObject *name;
@@ -359,10 +377,64 @@ error:
PyErr_Clear();
}
+static int
+call_show_warning(PyObject *category, PyObject *text, PyObject *message,
+ PyObject *filename, int lineno, PyObject *lineno_obj,
+ PyObject *sourceline, PyObject *source)
+{
+ PyObject *show_fn, *msg, *res, *warnmsg_cls = NULL;
+
+ /* If the source parameter is set, try to get the Python implementation.
+ The Python implementation is able to log the traceback where the source
+ was allocated, whereas the C implementation doesnt. */
+ show_fn = get_warnings_attr("_showwarnmsg", source != NULL);
+ if (show_fn == NULL) {
+ if (PyErr_Occurred())
+ return -1;
+ show_warning(filename, lineno, text, category, sourceline);
+ return 0;
+ }
+
+ if (!PyCallable_Check(show_fn)) {
+ PyErr_SetString(PyExc_TypeError,
+ "warnings._showwarnmsg() must be set to a callable");
+ goto error;
+ }
+
+ warnmsg_cls = get_warnings_attr("WarningMessage", 0);
+ if (warnmsg_cls == NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "unable to get warnings.WarningMessage");
+ goto error;
+ }
+
+ msg = PyObject_CallFunctionObjArgs(warnmsg_cls, message, category,
+ filename, lineno_obj, Py_None, Py_None, source,
+ NULL);
+ Py_DECREF(warnmsg_cls);
+ if (msg == NULL)
+ goto error;
+
+ res = PyObject_CallFunctionObjArgs(show_fn, msg, NULL);
+ Py_DECREF(show_fn);
+ Py_DECREF(msg);
+
+ if (res == NULL)
+ return -1;
+
+ Py_DECREF(res);
+ return 0;
+
+error:
+ Py_XDECREF(show_fn);
+ return -1;
+}
+
static PyObject *
warn_explicit(PyObject *category, PyObject *message,
PyObject *filename, int lineno,
- PyObject *module, PyObject *registry, PyObject *sourceline)
+ PyObject *module, PyObject *registry, PyObject *sourceline,
+ PyObject *source)
{
PyObject *key = NULL, *text = NULL, *result = NULL, *lineno_obj = NULL;
PyObject *item = NULL;
@@ -470,31 +542,9 @@ warn_explicit(PyObject *category, PyObject *message,
if (rc == 1) /* Already warned for this module. */
goto return_none;
if (rc == 0) {
- PyObject *show_fxn = get_warnings_attr("showwarning");
- if (show_fxn == NULL) {
- if (PyErr_Occurred())
- goto cleanup;
- show_warning(filename, lineno, text, category, sourceline);
- }
- else {
- PyObject *res;
-
- if (!PyCallable_Check(show_fxn)) {
- PyErr_SetString(PyExc_TypeError,
- "warnings.showwarning() must be set to a "
- "callable");
- Py_DECREF(show_fxn);
- goto cleanup;
- }
-
- res = PyObject_CallFunctionObjArgs(show_fxn, message, category,
- filename, lineno_obj,
- NULL);
- Py_DECREF(show_fxn);
- Py_XDECREF(res);
- if (res == NULL)
- goto cleanup;
- }
+ if (call_show_warning(category, text, message, filename, lineno,
+ lineno_obj, sourceline, source) < 0)
+ goto cleanup;
}
else /* if (rc == -1) */
goto cleanup;
@@ -738,7 +788,8 @@ get_category(PyObject *message, PyObject *category)
}
static PyObject *
-do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
+do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level,
+ PyObject *source)
{
PyObject *filename, *module, *registry, *res;
int lineno;
@@ -747,7 +798,7 @@ do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
return NULL;
res = warn_explicit(category, message, filename, lineno, module, registry,
- NULL);
+ NULL, source);
Py_DECREF(filename);
Py_DECREF(registry);
Py_DECREF(module);
@@ -757,25 +808,27 @@ do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
static PyObject *
warnings_warn(PyObject *self, PyObject *args, PyObject *kwds)
{
- static char *kw_list[] = { "message", "category", "stacklevel", 0 };
- PyObject *message, *category = NULL;
+ static char *kw_list[] = {"message", "category", "stacklevel",
+ "source", NULL};
+ PyObject *message, *category = NULL, *source = NULL;
Py_ssize_t stack_level = 1;
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|On:warn", kw_list,
- &message, &category, &stack_level))
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OnO:warn", kw_list,
+ &message, &category, &stack_level, &source))
return NULL;
category = get_category(message, category);
if (category == NULL)
return NULL;
- return do_warn(message, category, stack_level);
+ return do_warn(message, category, stack_level, source);
}
static PyObject *
warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
{
static char *kwd_list[] = {"message", "category", "filename", "lineno",
- "module", "registry", "module_globals", 0};
+ "module", "registry", "module_globals",
+ "source", 0};
PyObject *message;
PyObject *category;
PyObject *filename;
@@ -783,10 +836,11 @@ warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
PyObject *module = NULL;
PyObject *registry = NULL;
PyObject *module_globals = NULL;
+ PyObject *sourceobj = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOUi|OOO:warn_explicit",
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOUi|OOOO:warn_explicit",
kwd_list, &message, &category, &filename, &lineno, &module,
- &registry, &module_globals))
+ &registry, &module_globals, &sourceobj))
return NULL;
if (module_globals) {
@@ -842,14 +896,14 @@ warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
/* Handle the warning. */
returned = warn_explicit(category, message, filename, lineno, module,
- registry, source_line);
+ registry, source_line, sourceobj);
Py_DECREF(source_list);
return returned;
}
standard_call:
return warn_explicit(category, message, filename, lineno, module,
- registry, NULL);
+ registry, NULL, sourceobj);
}
static PyObject *
@@ -864,14 +918,14 @@ warnings_filters_mutated(PyObject *self, PyObject *args)
static int
warn_unicode(PyObject *category, PyObject *message,
- Py_ssize_t stack_level)
+ Py_ssize_t stack_level, PyObject *source)
{
PyObject *res;
if (category == NULL)
category = PyExc_RuntimeWarning;
- res = do_warn(message, category, stack_level);
+ res = do_warn(message, category, stack_level, source);
if (res == NULL)
return -1;
Py_DECREF(res);
@@ -879,12 +933,28 @@ warn_unicode(PyObject *category, PyObject *message,
return 0;
}
+static int
+_PyErr_WarnFormatV(PyObject *source,
+ PyObject *category, Py_ssize_t stack_level,
+ const char *format, va_list vargs)
+{
+ PyObject *message;
+ int res;
+
+ message = PyUnicode_FromFormatV(format, vargs);
+ if (message == NULL)
+ return -1;
+
+ res = warn_unicode(category, message, stack_level, source);
+ Py_DECREF(message);
+ return res;
+}
+
int
PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level,
const char *format, ...)
{
- int ret;
- PyObject *message;
+ int res;
va_list vargs;
#ifdef HAVE_STDARG_PROTOTYPES
@@ -892,25 +962,38 @@ PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level,
#else
va_start(vargs);
#endif
- message = PyUnicode_FromFormatV(format, vargs);
- if (message != NULL) {
- ret = warn_unicode(category, message, stack_level);
- Py_DECREF(message);
- }
- else
- ret = -1;
+ res = _PyErr_WarnFormatV(NULL, category, stack_level, format, vargs);
va_end(vargs);
- return ret;
+ return res;
}
int
+PyErr_ResourceWarning(PyObject *source, Py_ssize_t stack_level,
+ const char *format, ...)
+{
+ int res;
+ va_list vargs;
+
+#ifdef HAVE_STDARG_PROTOTYPES
+ va_start(vargs, format);
+#else
+ va_start(vargs);
+#endif
+ res = _PyErr_WarnFormatV(source, PyExc_ResourceWarning,
+ stack_level, format, vargs);
+ va_end(vargs);
+ return res;
+}
+
+
+int
PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
{
int ret;
PyObject *message = PyUnicode_FromString(text);
if (message == NULL)
return -1;
- ret = warn_unicode(category, message, stack_level);
+ ret = warn_unicode(category, message, stack_level, NULL);
Py_DECREF(message);
return ret;
}
@@ -921,7 +1004,7 @@ PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
#undef PyErr_Warn
PyAPI_FUNC(int)
-PyErr_Warn(PyObject *category, char *text)
+PyErr_Warn(PyObject *category, const char *text)
{
return PyErr_WarnEx(category, text, 1);
}
@@ -936,7 +1019,7 @@ PyErr_WarnExplicitObject(PyObject *category, PyObject *message,
if (category == NULL)
category = PyExc_RuntimeWarning;
res = warn_explicit(category, message, filename, lineno,
- module, registry, NULL);
+ module, registry, NULL, NULL);
if (res == NULL)
return -1;
Py_DECREF(res);
@@ -1000,7 +1083,7 @@ PyErr_WarnExplicitFormat(PyObject *category,
if (message != NULL) {
PyObject *res;
res = warn_explicit(category, message, filename, lineno,
- module, registry, NULL);
+ module, registry, NULL, NULL);
Py_DECREF(message);
if (res != NULL) {
Py_DECREF(res);
diff --git a/Python/ast.c b/Python/ast.c
index 6da33f7..b56fadd 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -132,6 +132,52 @@ validate_arguments(arguments_ty args)
}
static int
+validate_constant(PyObject *value)
+{
+ if (value == Py_None || value == Py_Ellipsis)
+ return 1;
+
+ if (PyLong_CheckExact(value)
+ || PyFloat_CheckExact(value)
+ || PyComplex_CheckExact(value)
+ || PyBool_Check(value)
+ || PyUnicode_CheckExact(value)
+ || PyBytes_CheckExact(value))
+ return 1;
+
+ if (PyTuple_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
+ PyObject *it;
+
+ it = PyObject_GetIter(value);
+ if (it == NULL)
+ return 0;
+
+ while (1) {
+ PyObject *item = PyIter_Next(it);
+ if (item == NULL) {
+ if (PyErr_Occurred()) {
+ Py_DECREF(it);
+ return 0;
+ }
+ break;
+ }
+
+ if (!validate_constant(item)) {
+ Py_DECREF(it);
+ Py_DECREF(item);
+ return 0;
+ }
+ Py_DECREF(item);
+ }
+
+ Py_DECREF(it);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
validate_expr(expr_ty exp, expr_context_ty ctx)
{
int check_ctx = 1;
@@ -240,6 +286,14 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
return validate_expr(exp->v.Call.func, Load) &&
validate_exprs(exp->v.Call.args, Load, 0) &&
validate_keywords(exp->v.Call.keywords);
+ case Constant_kind:
+ if (!validate_constant(exp->v.Constant.value)) {
+ PyErr_Format(PyExc_TypeError,
+ "got an invalid type in Constant: %s",
+ Py_TYPE(exp->v.Constant.value)->tp_name);
+ return 0;
+ }
+ return 1;
case Num_kind: {
PyObject *n = exp->v.Num.n;
if (!PyLong_CheckExact(n) && !PyFloat_CheckExact(n) &&
@@ -257,6 +311,14 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
}
return 1;
}
+ case JoinedStr_kind:
+ return validate_exprs(exp->v.JoinedStr.values, Load, 0);
+ case FormattedValue_kind:
+ if (validate_expr(exp->v.FormattedValue.value, Load) == 0)
+ return 0;
+ if (exp->v.FormattedValue.format_spec)
+ return validate_expr(exp->v.FormattedValue.format_spec, Load);
+ return 1;
case Bytes_kind: {
PyObject *b = exp->v.Bytes.s;
if (!PyBytes_CheckExact(b)) {
@@ -413,8 +475,8 @@ validate_stmt(stmt_ty stmt)
case Import_kind:
return validate_nonempty_seq(stmt->v.Import.names, "names", "Import");
case ImportFrom_kind:
- if (stmt->v.ImportFrom.level < -1) {
- PyErr_SetString(PyExc_ValueError, "ImportFrom level less than -1");
+ if (stmt->v.ImportFrom.level < 0) {
+ PyErr_SetString(PyExc_ValueError, "Negative ImportFrom level");
return 0;
}
return validate_nonempty_seq(stmt->v.ImportFrom.names, "names", "ImportFrom");
@@ -512,8 +574,7 @@ PyAST_Validate(mod_ty mod)
/* Data structure used internally */
struct compiling {
- char *c_encoding; /* source encoding */
- PyArena *c_arena; /* arena for allocating memeory */
+ PyArena *c_arena; /* Arena for allocating memory. */
PyObject *c_filename; /* filename */
PyObject *c_normalize; /* Normalization function from unicodedata. */
PyObject *c_normalize_args; /* Normalization argument tuple. */
@@ -535,9 +596,7 @@ static stmt_ty ast_for_for_stmt(struct compiling *, const node *, int);
static expr_ty ast_for_call(struct compiling *, const node *, expr_ty);
static PyObject *parsenumber(struct compiling *, const char *);
-static PyObject *parsestr(struct compiling *, const node *n, int *bytesmode);
-static PyObject *parsestrplus(struct compiling *, const node *n,
- int *bytesmode);
+static expr_ty parsestrplus(struct compiling *, const node *n);
#define COMP_GENEXP 0
#define COMP_LISTCOMP 1
@@ -701,23 +760,11 @@ PyAST_FromNodeObject(const node *n, PyCompilerFlags *flags,
c.c_arena = arena;
/* borrowed reference */
c.c_filename = filename;
- c.c_normalize = c.c_normalize_args = NULL;
- if (flags && flags->cf_flags & PyCF_SOURCE_IS_UTF8) {
- c.c_encoding = "utf-8";
- if (TYPE(n) == encoding_decl) {
-#if 0
- ast_error(c, n, "encoding declaration in Unicode string");
- goto out;
-#endif
- n = CHILD(n, 0);
- }
- } else if (TYPE(n) == encoding_decl) {
- c.c_encoding = STR(n);
+ c.c_normalize = NULL;
+ c.c_normalize_args = NULL;
+
+ if (TYPE(n) == encoding_decl)
n = CHILD(n, 0);
- } else {
- /* PEP 3120 */
- c.c_encoding = "utf-8";
- }
k = 0;
switch (TYPE(n)) {
@@ -864,7 +911,7 @@ get_operator(const node *n)
}
}
-static const char* FORBIDDEN[] = {
+static const char * const FORBIDDEN[] = {
"None",
"True",
"False",
@@ -881,7 +928,7 @@ forbidden_name(struct compiling *c, identifier name, const node *n,
return 1;
}
if (full_checks) {
- const char **p;
+ const char * const *p;
for (p = FORBIDDEN; *p; p++) {
if (PyUnicode_CompareWithASCIIString(name, *p) == 0) {
ast_error(c, n, "assignment to keyword");
@@ -943,13 +990,8 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
s = e->v.List.elts;
break;
case Tuple_kind:
- if (asdl_seq_LEN(e->v.Tuple.elts)) {
- e->v.Tuple.ctx = ctx;
- s = e->v.Tuple.elts;
- }
- else {
- expr_name = "()";
- }
+ e->v.Tuple.ctx = ctx;
+ s = e->v.Tuple.elts;
break;
case Lambda_kind:
expr_name = "lambda";
@@ -986,6 +1028,8 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
case Num_kind:
case Str_kind:
case Bytes_kind:
+ case JoinedStr_kind:
+ case FormattedValue_kind:
expr_name = "literal";
break;
case NameConstant_kind:
@@ -1259,16 +1303,20 @@ ast_for_arguments(struct compiling *c, const node *n)
and varargslist (lambda definition).
parameters: '(' [typedargslist] ')'
- typedargslist: ((tfpdef ['=' test] ',')*
- ('*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef]
- | '**' tfpdef)
- | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])
+ typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' [
+ '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
+ | '**' tfpdef [',']]]
+ | '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
+ | '**' tfpdef [','])
tfpdef: NAME [':' test]
- varargslist: ((vfpdef ['=' test] ',')*
- ('*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef]
- | '**' vfpdef)
- | vfpdef ['=' test] (',' vfpdef ['=' test])* [','])
+ varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' [
+ '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]]
+ | '**' vfpdef [',']]]
+ | '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]]
+ | '**' vfpdef [',']
+ )
vfpdef: NAME
+
*/
int i, j, k, nposargs = 0, nkwonlyargs = 0;
int nposdefaults = 0, found_default = 0;
@@ -1370,7 +1418,8 @@ ast_for_arguments(struct compiling *c, const node *n)
i += 2; /* the name and the comma */
break;
case STAR:
- if (i+1 >= NCH(n)) {
+ if (i+1 >= NCH(n) ||
+ (i+2 == NCH(n) && TYPE(CHILD(n, i+1)) == COMMA)) {
ast_error(c, CHILD(n, i),
"named arguments must follow bare *");
return NULL;
@@ -1993,7 +2042,6 @@ ast_for_atom(struct compiling *c, const node *n)
| '...' | 'None' | 'True' | 'False'
*/
node *ch = CHILD(n, 0);
- int bytesmode = 0;
switch (TYPE(ch)) {
case NAME: {
@@ -2015,7 +2063,7 @@ ast_for_atom(struct compiling *c, const node *n)
return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena);
}
case STRING: {
- PyObject *str = parsestrplus(c, n, &bytesmode);
+ expr_ty str = parsestrplus(c, n);
if (!str) {
const char *errtype = NULL;
if (PyErr_ExceptionMatches(PyExc_UnicodeError))
@@ -2032,6 +2080,7 @@ ast_for_atom(struct compiling *c, const node *n)
PyOS_snprintf(buf, sizeof(buf), "(%s) %s", errtype, s);
Py_DECREF(errstr);
} else {
+ PyErr_Clear();
PyOS_snprintf(buf, sizeof(buf), "(%s) unknown error", errtype);
}
ast_error(c, n, buf);
@@ -2041,14 +2090,7 @@ ast_for_atom(struct compiling *c, const node *n)
}
return NULL;
}
- if (PyArena_AddPyObject(c->c_arena, str) < 0) {
- Py_DECREF(str);
- return NULL;
- }
- if (bytesmode)
- return Bytes(str, LINENO(n), n->n_col_offset, c->c_arena);
- else
- return Str(str, LINENO(n), n->n_col_offset, c->c_arena);
+ return str;
}
case NUMBER: {
PyObject *pynum = parsenumber(c, STR(ch));
@@ -3208,14 +3250,14 @@ ast_for_import_stmt(struct compiling *c, const node *n)
alias_ty import_alias = alias_for_import_name(c, n, 1);
if (!import_alias)
return NULL;
- asdl_seq_SET(aliases, 0, import_alias);
+ asdl_seq_SET(aliases, 0, import_alias);
}
else {
for (i = 0; i < NCH(n); i += 2) {
alias_ty import_alias = alias_for_import_name(c, CHILD(n, i), 1);
if (!import_alias)
return NULL;
- asdl_seq_SET(aliases, i / 2, import_alias);
+ asdl_seq_SET(aliases, i / 2, import_alias);
}
}
if (mod != NULL)
@@ -3935,82 +3977,932 @@ decode_utf8(struct compiling *c, const char **sPtr, const char *end)
}
static PyObject *
-decode_unicode(struct compiling *c, const char *s, size_t len, int rawmode, const char *encoding)
+decode_unicode_with_escapes(struct compiling *c, const char *s, size_t len)
{
PyObject *v, *u;
char *buf;
char *p;
const char *end;
- if (encoding == NULL) {
- u = NULL;
+ /* check for integer overflow */
+ if (len > PY_SIZE_MAX / 6)
+ return NULL;
+ /* "ä" (2 bytes) may become "\U000000E4" (10 bytes), or 1:5
+ "\ä" (3 bytes) may become "\u005c\U000000E4" (16 bytes), or ~1:6 */
+ u = PyBytes_FromStringAndSize((char *)NULL, len * 6);
+ if (u == NULL)
+ return NULL;
+ p = buf = PyBytes_AsString(u);
+ end = s + len;
+ while (s < end) {
+ if (*s == '\\') {
+ *p++ = *s++;
+ if (*s & 0x80) {
+ strcpy(p, "u005c");
+ p += 5;
+ }
+ }
+ if (*s & 0x80) { /* XXX inefficient */
+ PyObject *w;
+ int kind;
+ void *data;
+ Py_ssize_t len, i;
+ w = decode_utf8(c, &s, end);
+ if (w == NULL) {
+ Py_DECREF(u);
+ return NULL;
+ }
+ kind = PyUnicode_KIND(w);
+ data = PyUnicode_DATA(w);
+ len = PyUnicode_GET_LENGTH(w);
+ for (i = 0; i < len; i++) {
+ Py_UCS4 chr = PyUnicode_READ(kind, data, i);
+ sprintf(p, "\\U%08x", chr);
+ p += 10;
+ }
+ /* Should be impossible to overflow */
+ assert(p - buf <= Py_SIZE(u));
+ Py_DECREF(w);
+ } else {
+ *p++ = *s++;
+ }
+ }
+ len = p - buf;
+ s = buf;
+
+ v = PyUnicode_DecodeUnicodeEscape(s, len, NULL);
+ Py_XDECREF(u);
+ return v;
+}
+
+/* Compile this expression in to an expr_ty. We know that we can
+ temporarily modify the character before the start of this string
+ (it's '{'), and we know we can temporarily modify the character
+ after this string (it is a '}'). Leverage this to create a
+ sub-string with enough room for us to add parens around the
+ expression. This is to allow strings with embedded newlines, for
+ example. */
+static expr_ty
+fstring_compile_expr(PyObject *str, Py_ssize_t expr_start,
+ Py_ssize_t expr_end, struct compiling *c, const node *n)
+
+{
+ PyCompilerFlags cf;
+ mod_ty mod;
+ char *utf_expr;
+ Py_ssize_t i;
+ Py_UCS4 end_ch = -1;
+ int all_whitespace;
+ PyObject *sub = NULL;
+
+ /* We only decref sub if we allocated it with a PyUnicode_Substring.
+ decref_sub records that. */
+ int decref_sub = 0;
+
+ assert(str);
+
+ assert(expr_start >= 0 && expr_start < PyUnicode_GET_LENGTH(str));
+ assert(expr_end >= 0 && expr_end < PyUnicode_GET_LENGTH(str));
+ assert(expr_end >= expr_start);
+
+ /* There has to be at least one character on each side of the
+ expression inside this str. This will have been caught before
+ we're called. */
+ assert(expr_start >= 1);
+ assert(expr_end <= PyUnicode_GET_LENGTH(str)-1);
+
+ /* If the substring is all whitespace, it's an error. We need to
+ catch this here, and not when we call PyParser_ASTFromString,
+ because turning the expression '' in to '()' would go from
+ being invalid to valid. */
+ /* Note that this code says an empty string is all
+ whitespace. That's important. There's a test for it: f'{}'. */
+ all_whitespace = 1;
+ for (i = expr_start; i < expr_end; i++) {
+ if (!Py_UNICODE_ISSPACE(PyUnicode_READ_CHAR(str, i))) {
+ all_whitespace = 0;
+ break;
+ }
+ }
+ if (all_whitespace) {
+ ast_error(c, n, "f-string: empty expression not allowed");
+ goto error;
+ }
+
+ /* If the substring will be the entire source string, we can't use
+ PyUnicode_Substring, since it will return another reference to
+ our original string. Because we're modifying the string in
+ place, that's a no-no. So, detect that case and just use our
+ string directly. */
+
+ if (expr_start-1 == 0 && expr_end+1 == PyUnicode_GET_LENGTH(str)) {
+ /* If str is well formed, then the first and last chars must
+ be '{' and '}', respectively. But, if there's a syntax
+ error, for example f'{3!', then the last char won't be a
+ closing brace. So, remember the last character we read in
+ order for us to restore it. */
+ end_ch = PyUnicode_ReadChar(str, expr_end-expr_start+1);
+ assert(end_ch != (Py_UCS4)-1);
+
+ /* In all cases, however, start_ch must be '{'. */
+ assert(PyUnicode_ReadChar(str, 0) == '{');
+
+ sub = str;
} else {
- /* check for integer overflow */
- if (len > PY_SIZE_MAX / 6)
- return NULL;
- /* "ä" (2 bytes) may become "\U000000E4" (10 bytes), or 1:5
- "\ä" (3 bytes) may become "\u005c\U000000E4" (16 bytes), or ~1:6 */
- u = PyBytes_FromStringAndSize((char *)NULL, len * 6);
- if (u == NULL)
- return NULL;
- p = buf = PyBytes_AsString(u);
- end = s + len;
- while (s < end) {
- if (*s == '\\') {
- *p++ = *s++;
- if (*s & 0x80) {
- strcpy(p, "u005c");
- p += 5;
+ /* Create a substring object. It must be a new object, with
+ refcount==1, so that we can modify it. */
+ sub = PyUnicode_Substring(str, expr_start-1, expr_end+1);
+ if (!sub)
+ goto error;
+ assert(sub != str); /* Make sure it's a new string. */
+ decref_sub = 1; /* Remember to deallocate it on error. */
+ }
+
+ /* Put () around the expression. */
+ if (PyUnicode_WriteChar(sub, 0, '(') < 0 ||
+ PyUnicode_WriteChar(sub, expr_end-expr_start+1, ')') < 0)
+ goto error;
+
+ /* No need to free the memory returned here: it's managed by the
+ string. */
+ utf_expr = PyUnicode_AsUTF8(sub);
+ if (!utf_expr)
+ goto error;
+
+ cf.cf_flags = PyCF_ONLY_AST;
+ mod = PyParser_ASTFromString(utf_expr, "<fstring>",
+ Py_eval_input, &cf, c->c_arena);
+ if (!mod)
+ goto error;
+
+ if (sub != str)
+ /* Clear instead of decref in case we ever modify this code to change
+ the error handling: this is safest because the XDECREF won't try
+ and decref it when it's NULL. */
+ /* No need to restore the chars in sub, since we know it's getting
+ ready to get deleted (refcount must be 1, since we got a new string
+ in PyUnicode_Substring). */
+ Py_CLEAR(sub);
+ else {
+ assert(!decref_sub);
+ assert(end_ch != (Py_UCS4)-1);
+ /* Restore str, which we earlier modified directly. */
+ if (PyUnicode_WriteChar(str, 0, '{') < 0 ||
+ PyUnicode_WriteChar(str, expr_end-expr_start+1, end_ch) < 0)
+ goto error;
+ }
+ return mod->v.Expression.body;
+
+error:
+ /* Only decref sub if it was the result of a call to SubString. */
+ if (decref_sub)
+ Py_XDECREF(sub);
+
+ if (end_ch != (Py_UCS4)-1) {
+ /* We only get here if we modified str. Make sure that's the
+ case: str will be equal to sub. */
+ if (str == sub) {
+ /* Don't check the error, because we've already set the
+ error state (that's why we're in 'error', after
+ all). */
+ PyUnicode_WriteChar(str, 0, '{');
+ PyUnicode_WriteChar(str, expr_end-expr_start+1, end_ch);
+ }
+ }
+ return NULL;
+}
+
+/* Return -1 on error.
+
+ Return 0 if we reached the end of the literal.
+
+ Return 1 if we haven't reached the end of the literal, but we want
+ the caller to process the literal up to this point. Used for
+ doubled braces.
+*/
+static int
+fstring_find_literal(PyObject *str, Py_ssize_t *ofs, PyObject **literal,
+ int recurse_lvl, struct compiling *c, const node *n)
+{
+ /* Get any literal string. It ends when we hit an un-doubled brace, or the
+ end of the string. */
+
+ Py_ssize_t literal_start, literal_end;
+ int result = 0;
+
+ enum PyUnicode_Kind kind = PyUnicode_KIND(str);
+ void *data = PyUnicode_DATA(str);
+
+ assert(*literal == NULL);
+
+ literal_start = *ofs;
+ for (; *ofs < PyUnicode_GET_LENGTH(str); *ofs += 1) {
+ Py_UCS4 ch = PyUnicode_READ(kind, data, *ofs);
+ if (ch == '{' || ch == '}') {
+ /* Check for doubled braces, but only at the top level. If
+ we checked at every level, then f'{0:{3}}' would fail
+ with the two closing braces. */
+ if (recurse_lvl == 0) {
+ if (*ofs + 1 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs + 1) == ch) {
+ /* We're going to tell the caller that the literal ends
+ here, but that they should continue scanning. But also
+ skip over the second brace when we resume scanning. */
+ literal_end = *ofs + 1;
+ *ofs += 2;
+ result = 1;
+ goto done;
}
- }
- if (*s & 0x80) { /* XXX inefficient */
- PyObject *w;
- int kind;
- void *data;
- Py_ssize_t len, i;
- w = decode_utf8(c, &s, end);
- if (w == NULL) {
- Py_DECREF(u);
- return NULL;
+
+ /* Where a single '{' is the start of a new expression, a
+ single '}' is not allowed. */
+ if (ch == '}') {
+ ast_error(c, n, "f-string: single '}' is not allowed");
+ return -1;
}
- kind = PyUnicode_KIND(w);
- data = PyUnicode_DATA(w);
- len = PyUnicode_GET_LENGTH(w);
- for (i = 0; i < len; i++) {
- Py_UCS4 chr = PyUnicode_READ(kind, data, i);
- sprintf(p, "\\U%08x", chr);
- p += 10;
+ }
+
+ /* We're either at a '{', which means we're starting another
+ expression; or a '}', which means we're at the end of this
+ f-string (for a nested format_spec). */
+ break;
+ }
+ }
+ literal_end = *ofs;
+
+ assert(*ofs == PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ(kind, data, *ofs) == '{' ||
+ PyUnicode_READ(kind, data, *ofs) == '}');
+done:
+ if (literal_start != literal_end) {
+ *literal = PyUnicode_Substring(str, literal_start, literal_end);
+ if (!*literal)
+ return -1;
+ }
+
+ return result;
+}
+
+/* Forward declaration because parsing is recursive. */
+static expr_ty
+fstring_parse(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n);
+
+/* Parse the f-string str, starting at ofs. We know *ofs starts an
+ expression (so it must be a '{'). Returns the FormattedValue node,
+ which includes the expression, conversion character, and
+ format_spec expression.
+
+ Note that I don't do a perfect job here: I don't make sure that a
+ closing brace doesn't match an opening paren, for example. It
+ doesn't need to error on all invalid expressions, just correctly
+ find the end of all valid ones. Any errors inside the expression
+ will be caught when we parse it later. */
+static int
+fstring_find_expr(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ expr_ty *expression, struct compiling *c, const node *n)
+{
+ /* Return -1 on error, else 0. */
+
+ Py_ssize_t expr_start;
+ Py_ssize_t expr_end;
+ expr_ty simple_expression;
+ expr_ty format_spec = NULL; /* Optional format specifier. */
+ Py_UCS4 conversion = -1; /* The conversion char. -1 if not specified. */
+
+ enum PyUnicode_Kind kind = PyUnicode_KIND(str);
+ void *data = PyUnicode_DATA(str);
+
+ /* 0 if we're not in a string, else the quote char we're trying to
+ match (single or double quote). */
+ Py_UCS4 quote_char = 0;
+
+ /* If we're inside a string, 1=normal, 3=triple-quoted. */
+ int string_type = 0;
+
+ /* Keep track of nesting level for braces/parens/brackets in
+ expressions. */
+ Py_ssize_t nested_depth = 0;
+
+ /* Can only nest one level deep. */
+ if (recurse_lvl >= 2) {
+ ast_error(c, n, "f-string: expressions nested too deeply");
+ return -1;
+ }
+
+ /* The first char must be a left brace, or we wouldn't have gotten
+ here. Skip over it. */
+ assert(PyUnicode_READ(kind, data, *ofs) == '{');
+ *ofs += 1;
+
+ expr_start = *ofs;
+ for (; *ofs < PyUnicode_GET_LENGTH(str); *ofs += 1) {
+ Py_UCS4 ch;
+
+ /* Loop invariants. */
+ assert(nested_depth >= 0);
+ assert(*ofs >= expr_start);
+ if (quote_char)
+ assert(string_type == 1 || string_type == 3);
+ else
+ assert(string_type == 0);
+
+ ch = PyUnicode_READ(kind, data, *ofs);
+ if (quote_char) {
+ /* We're inside a string. See if we're at the end. */
+ /* This code needs to implement the same non-error logic
+ as tok_get from tokenizer.c, at the letter_quote
+ label. To actually share that code would be a
+ nightmare. But, it's unlikely to change and is small,
+ so duplicate it here. Note we don't need to catch all
+ of the errors, since they'll be caught when parsing the
+ expression. We just need to match the non-error
+ cases. Thus we can ignore \n in single-quoted strings,
+ for example. Or non-terminated strings. */
+ if (ch == quote_char) {
+ /* Does this match the string_type (single or triple
+ quoted)? */
+ if (string_type == 3) {
+ if (*ofs+2 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == ch &&
+ PyUnicode_READ(kind, data, *ofs+2) == ch) {
+ /* We're at the end of a triple quoted string. */
+ *ofs += 2;
+ string_type = 0;
+ quote_char = 0;
+ continue;
+ }
+ } else {
+ /* We're at the end of a normal string. */
+ quote_char = 0;
+ string_type = 0;
+ continue;
}
- /* Should be impossible to overflow */
- assert(p - buf <= Py_SIZE(u));
- Py_DECREF(w);
+ }
+ /* We're inside a string, and not finished with the
+ string. If this is a backslash, skip the next char (it
+ might be an end quote that needs skipping). Otherwise,
+ just consume this character normally. */
+ if (ch == '\\' && *ofs+1 < PyUnicode_GET_LENGTH(str)) {
+ /* Just skip the next char, whatever it is. */
+ *ofs += 1;
+ }
+ } else if (ch == '\'' || ch == '"') {
+ /* Is this a triple quoted string? */
+ if (*ofs+2 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == ch &&
+ PyUnicode_READ(kind, data, *ofs+2) == ch) {
+ string_type = 3;
+ *ofs += 2;
} else {
- *p++ = *s++;
+ /* Start of a normal string. */
+ string_type = 1;
}
+ /* Start looking for the end of the string. */
+ quote_char = ch;
+ } else if (ch == '[' || ch == '{' || ch == '(') {
+ nested_depth++;
+ } else if (nested_depth != 0 &&
+ (ch == ']' || ch == '}' || ch == ')')) {
+ nested_depth--;
+ } else if (ch == '#') {
+ /* Error: can't include a comment character, inside parens
+ or not. */
+ ast_error(c, n, "f-string cannot include '#'");
+ return -1;
+ } else if (nested_depth == 0 &&
+ (ch == '!' || ch == ':' || ch == '}')) {
+ /* First, test for the special case of "!=". Since '=' is
+ not an allowed conversion character, nothing is lost in
+ this test. */
+ if (ch == '!' && *ofs+1 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == '=')
+ /* This isn't a conversion character, just continue. */
+ continue;
+
+ /* Normal way out of this loop. */
+ break;
+ } else {
+ /* Just consume this char and loop around. */
}
- len = p - buf;
- s = buf;
}
- if (rawmode)
- v = PyUnicode_DecodeRawUnicodeEscape(s, len, NULL);
- else
- v = PyUnicode_DecodeUnicodeEscape(s, len, NULL);
- Py_XDECREF(u);
- return v;
+ expr_end = *ofs;
+ /* If we leave this loop in a string or with mismatched parens, we
+ don't care. We'll get a syntax error when compiling the
+ expression. But, we can produce a better error message, so
+ let's just do that.*/
+ if (quote_char) {
+ ast_error(c, n, "f-string: unterminated string");
+ return -1;
+ }
+ if (nested_depth) {
+ ast_error(c, n, "f-string: mismatched '(', '{', or '['");
+ return -1;
+ }
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ /* Compile the expression as soon as possible, so we show errors
+ related to the expression before errors related to the
+ conversion or format_spec. */
+ simple_expression = fstring_compile_expr(str, expr_start, expr_end, c, n);
+ if (!simple_expression)
+ return -1;
+
+ /* Check for a conversion char, if present. */
+ if (PyUnicode_READ(kind, data, *ofs) == '!') {
+ *ofs += 1;
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ conversion = PyUnicode_READ(kind, data, *ofs);
+ *ofs += 1;
+
+ /* Validate the conversion. */
+ if (!(conversion == 's' || conversion == 'r'
+ || conversion == 'a')) {
+ ast_error(c, n, "f-string: invalid conversion character: "
+ "expected 's', 'r', or 'a'");
+ return -1;
+ }
+ }
+
+ /* Check for the format spec, if present. */
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+ if (PyUnicode_READ(kind, data, *ofs) == ':') {
+ *ofs += 1;
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ /* Parse the format spec. */
+ format_spec = fstring_parse(str, ofs, recurse_lvl+1, c, n);
+ if (!format_spec)
+ return -1;
+ }
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ(kind, data, *ofs) != '}')
+ goto unexpected_end_of_string;
+
+ /* We're at a right brace. Consume it. */
+ assert(*ofs < PyUnicode_GET_LENGTH(str));
+ assert(PyUnicode_READ(kind, data, *ofs) == '}');
+ *ofs += 1;
+
+ /* And now create the FormattedValue node that represents this entire
+ expression with the conversion and format spec. */
+ *expression = FormattedValue(simple_expression, (int)conversion,
+ format_spec, LINENO(n), n->n_col_offset,
+ c->c_arena);
+ if (!*expression)
+ return -1;
+
+ return 0;
+
+unexpected_end_of_string:
+ ast_error(c, n, "f-string: expecting '}'");
+ return -1;
}
-/* s is a Python string literal, including the bracketing quote characters,
- * and r &/or b prefixes (if any), and embedded escape sequences (if any).
- * parsestr parses it, and returns the decoded Python string object.
- */
+/* Return -1 on error.
+
+ Return 0 if we have a literal (possible zero length) and an
+ expression (zero length if at the end of the string.
+
+ Return 1 if we have a literal, but no expression, and we want the
+ caller to call us again. This is used to deal with doubled
+ braces.
+
+ When called multiple times on the string 'a{{b{0}c', this function
+ will return:
+
+ 1. the literal 'a{' with no expression, and a return value
+ of 1. Despite the fact that there's no expression, the return
+ value of 1 means we're not finished yet.
+
+ 2. the literal 'b' and the expression '0', with a return value of
+ 0. The fact that there's an expression means we're not finished.
+
+ 3. literal 'c' with no expression and a return value of 0. The
+ combination of the return value of 0 with no expression means
+ we're finished.
+*/
+static int
+fstring_find_literal_and_expr(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ PyObject **literal, expr_ty *expression,
+ struct compiling *c, const node *n)
+{
+ int result;
+
+ assert(*literal == NULL && *expression == NULL);
+
+ /* Get any literal string. */
+ result = fstring_find_literal(str, ofs, literal, recurse_lvl, c, n);
+ if (result < 0)
+ goto error;
+
+ assert(result == 0 || result == 1);
+
+ if (result == 1)
+ /* We have a literal, but don't look at the expression. */
+ return 1;
+
+ assert(*ofs <= PyUnicode_GET_LENGTH(str));
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ_CHAR(str, *ofs) == '}')
+ /* We're at the end of the string or the end of a nested
+ f-string: no expression. The top-level error case where we
+ expect to be at the end of the string but we're at a '}' is
+ handled later. */
+ return 0;
+
+ /* We must now be the start of an expression, on a '{'. */
+ assert(*ofs < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ_CHAR(str, *ofs) == '{');
+
+ if (fstring_find_expr(str, ofs, recurse_lvl, expression, c, n) < 0)
+ goto error;
+
+ return 0;
+
+error:
+ Py_CLEAR(*literal);
+ return -1;
+}
+
+#define EXPRLIST_N_CACHED 64
+
+typedef struct {
+ /* Incrementally build an array of expr_ty, so be used in an
+ asdl_seq. Cache some small but reasonably sized number of
+ expr_ty's, and then after that start dynamically allocating,
+ doubling the number allocated each time. Note that the f-string
+ f'{0}a{1}' contains 3 expr_ty's: 2 FormattedValue's, and one
+ Str for the literal 'a'. So you add expr_ty's about twice as
+ fast as you add exressions in an f-string. */
+
+ Py_ssize_t allocated; /* Number we've allocated. */
+ Py_ssize_t size; /* Number we've used. */
+ expr_ty *p; /* Pointer to the memory we're actually
+ using. Will point to 'data' until we
+ start dynamically allocating. */
+ expr_ty data[EXPRLIST_N_CACHED];
+} ExprList;
+
+#ifdef NDEBUG
+#define ExprList_check_invariants(l)
+#else
+static void
+ExprList_check_invariants(ExprList *l)
+{
+ /* Check our invariants. Make sure this object is "live", and
+ hasn't been deallocated. */
+ assert(l->size >= 0);
+ assert(l->p != NULL);
+ if (l->size <= EXPRLIST_N_CACHED)
+ assert(l->data == l->p);
+}
+#endif
+
+static void
+ExprList_Init(ExprList *l)
+{
+ l->allocated = EXPRLIST_N_CACHED;
+ l->size = 0;
+
+ /* Until we start allocating dynamically, p points to data. */
+ l->p = l->data;
+
+ ExprList_check_invariants(l);
+}
+
+static int
+ExprList_Append(ExprList *l, expr_ty exp)
+{
+ ExprList_check_invariants(l);
+ if (l->size >= l->allocated) {
+ /* We need to alloc (or realloc) the memory. */
+ Py_ssize_t new_size = l->allocated * 2;
+
+ /* See if we've ever allocated anything dynamically. */
+ if (l->p == l->data) {
+ Py_ssize_t i;
+ /* We're still using the cached data. Switch to
+ alloc-ing. */
+ l->p = PyMem_RawMalloc(sizeof(expr_ty) * new_size);
+ if (!l->p)
+ return -1;
+ /* Copy the cached data into the new buffer. */
+ for (i = 0; i < l->size; i++)
+ l->p[i] = l->data[i];
+ } else {
+ /* Just realloc. */
+ expr_ty *tmp = PyMem_RawRealloc(l->p, sizeof(expr_ty) * new_size);
+ if (!tmp) {
+ PyMem_RawFree(l->p);
+ l->p = NULL;
+ return -1;
+ }
+ l->p = tmp;
+ }
+
+ l->allocated = new_size;
+ assert(l->allocated == 2 * l->size);
+ }
+
+ l->p[l->size++] = exp;
+
+ ExprList_check_invariants(l);
+ return 0;
+}
+
+static void
+ExprList_Dealloc(ExprList *l)
+{
+ ExprList_check_invariants(l);
+
+ /* If there's been an error, or we've never dynamically allocated,
+ do nothing. */
+ if (!l->p || l->p == l->data) {
+ /* Do nothing. */
+ } else {
+ /* We have dynamically allocated. Free the memory. */
+ PyMem_RawFree(l->p);
+ }
+ l->p = NULL;
+ l->size = -1;
+}
+
+static asdl_seq *
+ExprList_Finish(ExprList *l, PyArena *arena)
+{
+ asdl_seq *seq;
+
+ ExprList_check_invariants(l);
+
+ /* Allocate the asdl_seq and copy the expressions in to it. */
+ seq = _Py_asdl_seq_new(l->size, arena);
+ if (seq) {
+ Py_ssize_t i;
+ for (i = 0; i < l->size; i++)
+ asdl_seq_SET(seq, i, l->p[i]);
+ }
+ ExprList_Dealloc(l);
+ return seq;
+}
+
+/* The FstringParser is designed to add a mix of strings and
+ f-strings, and concat them together as needed. Ultimately, it
+ generates an expr_ty. */
+typedef struct {
+ PyObject *last_str;
+ ExprList expr_list;
+} FstringParser;
+
+#ifdef NDEBUG
+#define FstringParser_check_invariants(state)
+#else
+static void
+FstringParser_check_invariants(FstringParser *state)
+{
+ if (state->last_str)
+ assert(PyUnicode_CheckExact(state->last_str));
+ ExprList_check_invariants(&state->expr_list);
+}
+#endif
+
+static void
+FstringParser_Init(FstringParser *state)
+{
+ state->last_str = NULL;
+ ExprList_Init(&state->expr_list);
+ FstringParser_check_invariants(state);
+}
+
+static void
+FstringParser_Dealloc(FstringParser *state)
+{
+ FstringParser_check_invariants(state);
+
+ Py_XDECREF(state->last_str);
+ ExprList_Dealloc(&state->expr_list);
+}
+
+/* Make a Str node, but decref the PyUnicode object being added. */
+static expr_ty
+make_str_node_and_del(PyObject **str, struct compiling *c, const node* n)
+{
+ PyObject *s = *str;
+ *str = NULL;
+ assert(PyUnicode_CheckExact(s));
+ if (PyArena_AddPyObject(c->c_arena, s) < 0) {
+ Py_DECREF(s);
+ return NULL;
+ }
+ return Str(s, LINENO(n), n->n_col_offset, c->c_arena);
+}
+
+/* Add a non-f-string (that is, a regular literal string). str is
+ decref'd. */
+static int
+FstringParser_ConcatAndDel(FstringParser *state, PyObject *str)
+{
+ FstringParser_check_invariants(state);
+
+ assert(PyUnicode_CheckExact(str));
+
+ if (PyUnicode_GET_LENGTH(str) == 0) {
+ Py_DECREF(str);
+ return 0;
+ }
+
+ if (!state->last_str) {
+ /* We didn't have a string before, so just remember this one. */
+ state->last_str = str;
+ } else {
+ /* Concatenate this with the previous string. */
+ PyUnicode_AppendAndDel(&state->last_str, str);
+ if (!state->last_str)
+ return -1;
+ }
+ FstringParser_check_invariants(state);
+ return 0;
+}
+
+/* Parse an f-string. The f-string is in str, starting at ofs, with no 'f'
+ or quotes. str is not decref'd, since we don't know if it's used elsewhere.
+ And if we're only looking at a part of a string, then decref'ing is
+ definitely not the right thing to do! */
+static int
+FstringParser_ConcatFstring(FstringParser *state, PyObject *str,
+ Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n)
+{
+ FstringParser_check_invariants(state);
+
+ /* Parse the f-string. */
+ while (1) {
+ PyObject *literal = NULL;
+ expr_ty expression = NULL;
+
+ /* If there's a zero length literal in front of the
+ expression, literal will be NULL. If we're at the end of
+ the f-string, expression will be NULL (unless result == 1,
+ see below). */
+ int result = fstring_find_literal_and_expr(str, ofs, recurse_lvl,
+ &literal, &expression,
+ c, n);
+ if (result < 0)
+ return -1;
+
+ /* Add the literal, if any. */
+ if (!literal) {
+ /* Do nothing. Just leave last_str alone (and possibly
+ NULL). */
+ } else if (!state->last_str) {
+ state->last_str = literal;
+ literal = NULL;
+ } else {
+ /* We have a literal, concatenate it. */
+ assert(PyUnicode_GET_LENGTH(literal) != 0);
+ if (FstringParser_ConcatAndDel(state, literal) < 0)
+ return -1;
+ literal = NULL;
+ }
+ assert(!state->last_str ||
+ PyUnicode_GET_LENGTH(state->last_str) != 0);
+
+ /* We've dealt with the literal now. It can't be leaked on further
+ errors. */
+ assert(literal == NULL);
+
+ /* See if we should just loop around to get the next literal
+ and expression, while ignoring the expression this
+ time. This is used for un-doubling braces, as an
+ optimization. */
+ if (result == 1)
+ continue;
+
+ if (!expression)
+ /* We're done with this f-string. */
+ break;
+
+ /* We know we have an expression. Convert any existing string
+ to a Str node. */
+ if (!state->last_str) {
+ /* Do nothing. No previous literal. */
+ } else {
+ /* Convert the existing last_str literal to a Str node. */
+ expr_ty str = make_str_node_and_del(&state->last_str, c, n);
+ if (!str || ExprList_Append(&state->expr_list, str) < 0)
+ return -1;
+ }
+
+ if (ExprList_Append(&state->expr_list, expression) < 0)
+ return -1;
+ }
+
+ assert(*ofs <= PyUnicode_GET_LENGTH(str));
+
+ /* If recurse_lvl is zero, then we must be at the end of the
+ string. Otherwise, we must be at a right brace. */
+
+ if (recurse_lvl == 0 && *ofs < PyUnicode_GET_LENGTH(str)) {
+ ast_error(c, n, "f-string: unexpected end of string");
+ return -1;
+ }
+ if (recurse_lvl != 0 && PyUnicode_READ_CHAR(str, *ofs) != '}') {
+ ast_error(c, n, "f-string: expecting '}'");
+ return -1;
+ }
+
+ FstringParser_check_invariants(state);
+ return 0;
+}
+
+/* Convert the partial state reflected in last_str and expr_list to an
+ expr_ty. The expr_ty can be a Str, or a JoinedStr. */
+static expr_ty
+FstringParser_Finish(FstringParser *state, struct compiling *c,
+ const node *n)
+{
+ asdl_seq *seq;
+
+ FstringParser_check_invariants(state);
+
+ /* If we're just a constant string with no expressions, return
+ that. */
+ if(state->expr_list.size == 0) {
+ if (!state->last_str) {
+ /* Create a zero length string. */
+ state->last_str = PyUnicode_FromStringAndSize(NULL, 0);
+ if (!state->last_str)
+ goto error;
+ }
+ return make_str_node_and_del(&state->last_str, c, n);
+ }
+
+ /* Create a Str node out of last_str, if needed. It will be the
+ last node in our expression list. */
+ if (state->last_str) {
+ expr_ty str = make_str_node_and_del(&state->last_str, c, n);
+ if (!str || ExprList_Append(&state->expr_list, str) < 0)
+ goto error;
+ }
+ /* This has already been freed. */
+ assert(state->last_str == NULL);
+
+ seq = ExprList_Finish(&state->expr_list, c->c_arena);
+ if (!seq)
+ goto error;
+
+ /* If there's only one expression, return it. Otherwise, we need
+ to join them together. */
+ if (seq->size == 1)
+ return seq->elements[0];
+
+ return JoinedStr(seq, LINENO(n), n->n_col_offset, c->c_arena);
+
+error:
+ FstringParser_Dealloc(state);
+ return NULL;
+}
+
+/* Given an f-string (with no 'f' or quotes) that's in str starting at
+ ofs, parse it into an expr_ty. Return NULL on error. Does not
+ decref str. */
+static expr_ty
+fstring_parse(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n)
+{
+ FstringParser state;
+
+ FstringParser_Init(&state);
+ if (FstringParser_ConcatFstring(&state, str, ofs, recurse_lvl,
+ c, n) < 0) {
+ FstringParser_Dealloc(&state);
+ return NULL;
+ }
+
+ return FstringParser_Finish(&state, c, n);
+}
+
+/* n is a Python string literal, including the bracketing quote
+ characters, and r, b, u, &/or f prefixes (if any), and embedded
+ escape sequences (if any). parsestr parses it, and returns the
+ decoded Python string object. If the string is an f-string, set
+ *fmode and return the unparsed string object.
+*/
static PyObject *
-parsestr(struct compiling *c, const node *n, int *bytesmode)
+parsestr(struct compiling *c, const node *n, int *bytesmode, int *fmode)
{
size_t len;
const char *s = STR(n);
int quote = Py_CHARMASK(*s);
int rawmode = 0;
- int need_encoding;
if (Py_ISALPHA(quote)) {
while (!*bytesmode || !rawmode) {
if (quote == 'b' || quote == 'B') {
@@ -4024,15 +4916,24 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
quote = *++s;
rawmode = 1;
}
+ else if (quote == 'f' || quote == 'F') {
+ quote = *++s;
+ *fmode = 1;
+ }
else {
break;
}
}
}
+ if (*fmode && *bytesmode) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
if (quote != '\'' && quote != '\"') {
PyErr_BadInternalCall();
return NULL;
}
+ /* Skip the leading quote char. */
s++;
len = strlen(s);
if (len > INT_MAX) {
@@ -4041,22 +4942,26 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
return NULL;
}
if (s[--len] != quote) {
+ /* Last quote char must match the first. */
PyErr_BadInternalCall();
return NULL;
}
if (len >= 4 && s[0] == quote && s[1] == quote) {
+ /* A triple quoted string. We've already skipped one quote at
+ the start and one at the end of the string. Now skip the
+ two at the start. */
s += 2;
len -= 2;
+ /* And check that the last two match. */
if (s[--len] != quote || s[--len] != quote) {
PyErr_BadInternalCall();
return NULL;
}
}
- if (!*bytesmode && !rawmode) {
- return decode_unicode(c, s, len, rawmode, c->c_encoding);
- }
+ /* Avoid invoking escape decoding routines if possible. */
+ rawmode = rawmode || strchr(s, '\\') == NULL;
if (*bytesmode) {
- /* Disallow non-ascii characters (but not escapes) */
+ /* Disallow non-ASCII characters. */
const char *ch;
for (ch = s; *ch; ch++) {
if (Py_CHARMASK(*ch) >= 0x80) {
@@ -4065,71 +4970,93 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
return NULL;
}
}
- }
- need_encoding = (!*bytesmode && c->c_encoding != NULL &&
- strcmp(c->c_encoding, "utf-8") != 0);
- if (rawmode || strchr(s, '\\') == NULL) {
- if (need_encoding) {
- PyObject *v, *u = PyUnicode_DecodeUTF8(s, len, NULL);
- if (u == NULL || !*bytesmode)
- return u;
- v = PyUnicode_AsEncodedString(u, c->c_encoding, NULL);
- Py_DECREF(u);
- return v;
- } else if (*bytesmode) {
+ if (rawmode)
return PyBytes_FromStringAndSize(s, len);
- } else if (strcmp(c->c_encoding, "utf-8") == 0) {
- return PyUnicode_FromStringAndSize(s, len);
- } else {
- return PyUnicode_DecodeLatin1(s, len, NULL);
- }
+ else
+ return PyBytes_DecodeEscape(s, len, NULL, /* ignored */ 0, NULL);
+ } else {
+ if (rawmode)
+ return PyUnicode_DecodeUTF8Stateful(s, len, NULL, NULL);
+ else
+ return decode_unicode_with_escapes(c, s, len);
}
- return PyBytes_DecodeEscape(s, len, NULL, 1,
- need_encoding ? c->c_encoding : NULL);
}
-/* Build a Python string object out of a STRING+ atom. This takes care of
- * compile-time literal catenation, calling parsestr() on each piece, and
- * pasting the intermediate results together.
- */
-static PyObject *
-parsestrplus(struct compiling *c, const node *n, int *bytesmode)
+/* Accepts a STRING+ atom, and produces an expr_ty node. Run through
+ each STRING atom, and process it as needed. For bytes, just
+ concatenate them together, and the result will be a Bytes node. For
+ normal strings and f-strings, concatenate them together. The result
+ will be a Str node if there were no f-strings; a FormattedValue
+ node if there's just an f-string (with no leading or trailing
+ literals), or a JoinedStr node if there are multiple f-strings or
+ any literals involved. */
+static expr_ty
+parsestrplus(struct compiling *c, const node *n)
{
- PyObject *v;
+ int bytesmode = 0;
+ PyObject *bytes_str = NULL;
int i;
- REQ(CHILD(n, 0), STRING);
- v = parsestr(c, CHILD(n, 0), bytesmode);
- if (v != NULL) {
- /* String literal concatenation */
- for (i = 1; i < NCH(n); i++) {
- PyObject *s;
- int subbm = 0;
- s = parsestr(c, CHILD(n, i), &subbm);
- if (s == NULL)
- goto onError;
- if (*bytesmode != subbm) {
- ast_error(c, n, "cannot mix bytes and nonbytes literals");
- Py_DECREF(s);
- goto onError;
- }
- if (PyBytes_Check(v) && PyBytes_Check(s)) {
- PyBytes_ConcatAndDel(&v, s);
- if (v == NULL)
- goto onError;
- }
- else {
- PyObject *temp = PyUnicode_Concat(v, s);
- Py_DECREF(s);
- Py_DECREF(v);
- v = temp;
- if (v == NULL)
- goto onError;
+
+ FstringParser state;
+ FstringParser_Init(&state);
+
+ for (i = 0; i < NCH(n); i++) {
+ int this_bytesmode = 0;
+ int this_fmode = 0;
+ PyObject *s;
+
+ REQ(CHILD(n, i), STRING);
+ s = parsestr(c, CHILD(n, i), &this_bytesmode, &this_fmode);
+ if (!s)
+ goto error;
+
+ /* Check that we're not mixing bytes with unicode. */
+ if (i != 0 && bytesmode != this_bytesmode) {
+ ast_error(c, n, "cannot mix bytes and nonbytes literals");
+ Py_DECREF(s);
+ goto error;
+ }
+ bytesmode = this_bytesmode;
+
+ assert(bytesmode ? PyBytes_CheckExact(s) : PyUnicode_CheckExact(s));
+
+ if (bytesmode) {
+ /* For bytes, concat as we go. */
+ if (i == 0) {
+ /* First time, just remember this value. */
+ bytes_str = s;
+ } else {
+ PyBytes_ConcatAndDel(&bytes_str, s);
+ if (!bytes_str)
+ goto error;
}
+ } else if (this_fmode) {
+ /* This is an f-string. Concatenate and decref it. */
+ Py_ssize_t ofs = 0;
+ int result = FstringParser_ConcatFstring(&state, s, &ofs, 0, c, n);
+ Py_DECREF(s);
+ if (result < 0)
+ goto error;
+ } else {
+ /* This is a regular string. Concatenate it. */
+ if (FstringParser_ConcatAndDel(&state, s) < 0)
+ goto error;
}
}
- return v;
+ if (bytesmode) {
+ /* Just return the bytes object and we're done. */
+ if (PyArena_AddPyObject(c->c_arena, bytes_str) < 0)
+ goto error;
+ return Bytes(bytes_str, LINENO(n), n->n_col_offset, c->c_arena);
+ }
+
+ /* We're not a bytes string, bytes_str should never have been set. */
+ assert(bytes_str == NULL);
+
+ return FstringParser_Finish(&state, c, n);
- onError:
- Py_XDECREF(v);
+error:
+ Py_XDECREF(bytes_str);
+ FstringParser_Dealloc(&state);
return NULL;
}
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index eedd7c3..220c92d 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -331,7 +331,7 @@ builtin_any(PyObject *module, PyObject *iterable)
Py_DECREF(it);
return NULL;
}
- if (cmp == 1) {
+ if (cmp > 0) {
Py_DECREF(it);
Py_RETURN_TRUE;
}
@@ -469,6 +469,7 @@ filter_next(filterobject *lz)
PyObject *it = lz->it;
long ok;
PyObject *(*iternext)(PyObject *);
+ int checktrue = lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type;
iternext = *Py_TYPE(it)->tp_iternext;
for (;;) {
@@ -476,12 +477,11 @@ filter_next(filterobject *lz)
if (item == NULL)
return NULL;
- if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) {
+ if (checktrue) {
ok = PyObject_IsTrue(item);
} else {
PyObject *good;
- good = PyObject_CallFunctionObjArgs(lz->func,
- item, NULL);
+ good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
if (good == NULL) {
Py_DECREF(item);
return NULL;
@@ -1173,13 +1173,14 @@ map_next(mapobject *lz)
PyObject *result;
Py_ssize_t numargs, i;
- numargs = PyTuple_Size(lz->iters);
+ numargs = PyTuple_GET_SIZE(lz->iters);
argtuple = PyTuple_New(numargs);
if (argtuple == NULL)
return NULL;
for (i=0 ; i<numargs ; i++) {
- val = PyIter_Next(PyTuple_GET_ITEM(lz->iters, i));
+ PyObject *it = PyTuple_GET_ITEM(lz->iters, i);
+ val = Py_TYPE(it)->tp_iternext(it);
if (val == NULL) {
Py_DECREF(argtuple);
return NULL;
@@ -1929,9 +1930,8 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
Py_CLEAR(stringpo);
if (po == NULL)
goto _readline_errors;
- promptstr = PyBytes_AsString(po);
- if (promptstr == NULL)
- goto _readline_errors;
+ assert(PyBytes_Check(po));
+ promptstr = PyBytes_AS_STRING(po);
}
else {
po = NULL;
@@ -2710,10 +2710,10 @@ _PyBuiltin_Init(void)
SETBUILTIN("zip", &PyZip_Type);
debug = PyBool_FromLong(Py_OptimizeFlag == 0);
if (PyDict_SetItemString(dict, "__debug__", debug) < 0) {
- Py_XDECREF(debug);
+ Py_DECREF(debug);
return NULL;
}
- Py_XDECREF(debug);
+ Py_DECREF(debug);
return mod;
#undef ADD_TO_ALL
diff --git a/Python/ceval.c b/Python/ceval.c
index 8e396fd..bd0cbe7 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -113,7 +113,7 @@ static PyObject * call_function(PyObject ***, int, uint64*, uint64*);
#else
static PyObject * call_function(PyObject ***, int);
#endif
-static PyObject * fast_function(PyObject *, PyObject ***, int, int, int);
+static PyObject * fast_function(PyObject *, PyObject **, int, int, int);
static PyObject * do_call(PyObject *, PyObject ***, int, int);
static PyObject * ext_do_call(PyObject *, PyObject ***, int, int, int);
static PyObject * update_keyword_args(PyObject *, int, PyObject ***,
@@ -125,7 +125,7 @@ static PyObject * load_args(PyObject ***, int);
#ifdef LLTRACE
static int lltrace;
-static int prtrace(PyObject *, char *);
+static int prtrace(PyObject *, const char *);
#endif
static int call_trace(Py_tracefunc, PyObject *,
PyThreadState *, PyFrameObject *,
@@ -139,12 +139,13 @@ static int maybe_call_line_trace(Py_tracefunc, PyObject *,
PyThreadState *, PyFrameObject *, int *, int *, int *);
static PyObject * cmp_outcome(int, PyObject *, PyObject *);
+static PyObject * import_name(PyFrameObject *, PyObject *, PyObject *, PyObject *);
static PyObject * import_from(PyObject *, PyObject *);
static int import_all_from(PyObject *, PyObject *);
static void format_exc_check_arg(PyObject *, const char *, PyObject *);
static void format_exc_unbound(PyCodeObject *co, int oparg);
static PyObject * unicode_concatenate(PyObject *, PyObject *,
- PyFrameObject *, unsigned char *);
+ PyFrameObject *, const unsigned short *);
static PyObject * special_lookup(PyObject *, _Py_Identifier *);
#define NAME_ERROR_MSG \
@@ -800,7 +801,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
int lastopcode = 0;
#endif
PyObject **stack_pointer; /* Next free slot in value stack */
- unsigned char *next_instr;
+ const unsigned short *next_instr;
int opcode; /* Current opcode */
int oparg; /* Current opcode argument, if any */
enum why_code why; /* Reason for block stack unwind */
@@ -818,7 +819,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
time it is tested. */
int instr_ub = -1, instr_lb = 0, instr_prev = -1;
- unsigned char *first_instr;
+ const unsigned short *first_instr;
PyObject *names;
PyObject *consts;
@@ -886,24 +887,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Import the static jump table */
#include "opcode_targets.h"
-/* This macro is used when several opcodes defer to the same implementation
- (e.g. SETUP_LOOP, SETUP_FINALLY) */
-#define TARGET_WITH_IMPL(op, impl) \
- TARGET_##op: \
- opcode = op; \
- if (HAS_ARG(op)) \
- oparg = NEXTARG(); \
- case op: \
- goto impl; \
-
#define TARGET(op) \
TARGET_##op: \
- opcode = op; \
- if (HAS_ARG(op)) \
- oparg = NEXTARG(); \
case op:
-
#define DISPATCH() \
{ \
if (!_Py_atomic_load_relaxed(&eval_breaker)) { \
@@ -917,7 +904,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
{ \
if (!lltrace && !_Py_TracingPossible) { \
f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
+ NEXTOPARG(); \
+ goto *opcode_targets[opcode]; \
} \
goto fast_next_opcode; \
}
@@ -926,7 +914,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
{ \
if (!_Py_TracingPossible) { \
f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
+ NEXTOPARG(); \
+ goto *opcode_targets[opcode]; \
} \
goto fast_next_opcode; \
}
@@ -935,10 +924,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#else
#define TARGET(op) \
case op:
-#define TARGET_WITH_IMPL(op, impl) \
- /* silence compiler warnings about `impl` unused */ \
- if (0) goto impl; \
- case op:
+
#define DISPATCH() continue
#define FAST_DISPATCH() goto fast_next_opcode
#endif
@@ -994,28 +980,38 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Code access macros */
-#define INSTR_OFFSET() ((int)(next_instr - first_instr))
-#define NEXTOP() (*next_instr++)
-#define NEXTARG() (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
-#define PEEKARG() ((next_instr[2]<<8) + next_instr[1])
-#define JUMPTO(x) (next_instr = first_instr + (x))
-#define JUMPBY(x) (next_instr += (x))
+#ifdef WORDS_BIGENDIAN
+ #define OPCODE(word) ((word) >> 8)
+ #define OPARG(word) ((word) & 255)
+#else
+ #define OPCODE(word) ((word) & 255)
+ #define OPARG(word) ((word) >> 8)
+#endif
+/* The integer overflow is checked by an assertion below. */
+#define INSTR_OFFSET() (2*(int)(next_instr - first_instr))
+#define NEXTOPARG() do { \
+ unsigned short word = *next_instr; \
+ opcode = OPCODE(word); \
+ oparg = OPARG(word); \
+ next_instr++; \
+ } while (0)
+#define JUMPTO(x) (next_instr = first_instr + (x)/2)
+#define JUMPBY(x) (next_instr += (x)/2)
/* OpCode prediction macros
Some opcodes tend to come in pairs thus making it possible to
predict the second code when the first is run. For example,
- COMPARE_OP is often followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And,
- those opcodes are often followed by a POP_TOP.
+ COMPARE_OP is often followed by POP_JUMP_IF_FALSE or POP_JUMP_IF_TRUE.
Verifying the prediction costs a single high-speed test of a register
variable against a constant. If the pairing was good, then the
processor's own internal branch predication has a high likelihood of
success, resulting in a nearly zero-overhead transition to the
next opcode. A successful prediction saves a trip through the eval-loop
- including its two unpredictable branches, the HAS_ARG test and the
- switch-case. Combined with the processor's internal branch prediction,
- a successful PREDICT has the effect of making the two opcodes run as if
- they were a single new opcode with the bodies combined.
+ including its unpredictable switch-case branch. Combined with the
+ processor's internal branch prediction, a successful PREDICT has the
+ effect of making the two opcodes run as if they were a single new opcode
+ with the bodies combined.
If collecting opcode statistics, your choices are to either keep the
predictions turned-on and interpret the results as if some opcodes
@@ -1030,13 +1026,19 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#if defined(DYNAMIC_EXECUTION_PROFILE) || USE_COMPUTED_GOTOS
#define PREDICT(op) if (0) goto PRED_##op
-#define PREDICTED(op) PRED_##op:
-#define PREDICTED_WITH_ARG(op) PRED_##op:
#else
-#define PREDICT(op) if (*next_instr == op) goto PRED_##op
-#define PREDICTED(op) PRED_##op: next_instr++
-#define PREDICTED_WITH_ARG(op) PRED_##op: oparg = PEEKARG(); next_instr += 3
+#define PREDICT(op) \
+ do{ \
+ unsigned short word = *next_instr; \
+ opcode = OPCODE(word); \
+ if (opcode == op){ \
+ oparg = OPARG(word); \
+ next_instr++; \
+ goto PRED_##op; \
+ } \
+ } while(0)
#endif
+#define PREDICTED(op) PRED_##op:
/* Stack manipulation macros */
@@ -1100,7 +1102,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
#define UNWIND_EXCEPT_HANDLER(b) \
- { \
+ do { \
PyObject *type, *value, *traceback; \
assert(STACK_LEVEL() >= (b)->b_level + 3); \
while (STACK_LEVEL() > (b)->b_level + 3) { \
@@ -1116,7 +1118,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_XDECREF(type); \
Py_XDECREF(value); \
Py_XDECREF(traceback); \
- }
+ } while(0)
/* Start of code */
@@ -1165,16 +1167,16 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
consts = co->co_consts;
fastlocals = f->f_localsplus;
freevars = f->f_localsplus + co->co_nlocals;
- first_instr = (unsigned char*) PyBytes_AS_STRING(co->co_code);
- /* An explanation is in order for the next line.
-
- f->f_lasti now refers to the index of the last instruction
- executed. You might think this was obvious from the name, but
- this wasn't always true before 2.3! PyFrame_New now sets
- f->f_lasti to -1 (i.e. the index *before* the first instruction)
- and YIELD_VALUE doesn't fiddle with f_lasti any more. So this
- does work. Promise.
- YIELD_FROM sets f_lasti to itself, in order to repeated yield
+ assert(PyBytes_Check(co->co_code));
+ assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX);
+ assert(PyBytes_GET_SIZE(co->co_code) % 2 == 0);
+ assert(_Py_IS_ALIGNED(PyBytes_AS_STRING(co->co_code), 2));
+ first_instr = (unsigned short*) PyBytes_AS_STRING(co->co_code);
+ /*
+ f->f_lasti refers to the index of the last instruction,
+ unless it's -1 in which case next_instr should be first_instr.
+
+ YIELD_FROM sets f_lasti to itself, in order to repeatedly yield
multiple values.
When the PREDICT() macros are enabled, some opcode pairs follow in
@@ -1183,9 +1185,13 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
were a single new opcode; accordingly,f->f_lasti will point to
the first code in the pair (for instance, GET_ITER followed by
FOR_ITER is effectively a single opcode and f->f_lasti will point
- at to the beginning of the combined pair.)
+ to the beginning of the combined pair.)
*/
- next_instr = first_instr + f->f_lasti + 1;
+ next_instr = first_instr;
+ if (f->f_lasti >= 0) {
+ assert(f->f_lasti % 2 == 0);
+ next_instr += f->f_lasti/2 + 1;
+ }
stack_pointer = f->f_stacktop;
assert(stack_pointer != NULL);
f->f_stacktop = NULL; /* remains NULL unless yield suspends frame */
@@ -1249,7 +1255,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_MakePendingCalls() above. */
if (_Py_atomic_load_relaxed(&eval_breaker)) {
- if (*next_instr == SETUP_FINALLY) {
+ if (OPCODE(*next_instr) == SETUP_FINALLY) {
/* Make the last opcode before
a try: finally: block uninterruptible. */
goto fast_next_opcode;
@@ -1322,11 +1328,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Extract opcode and argument */
- opcode = NEXTOP();
- oparg = 0; /* allows oparg to be stored in a register because
- it doesn't have to be remembered across a full loop */
- if (HAS_ARG(opcode))
- oparg = NEXTARG();
+ NEXTOPARG();
dispatch_opcode:
#ifdef DYNAMIC_EXECUTION_PROFILE
#ifdef DXPAIRS
@@ -1377,6 +1379,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
FAST_DISPATCH();
}
+ PREDICTED(LOAD_CONST);
TARGET(LOAD_CONST) {
PyObject *value = GETITEM(consts, oparg);
Py_INCREF(value);
@@ -1384,7 +1387,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
FAST_DISPATCH();
}
- PREDICTED_WITH_ARG(STORE_FAST);
+ PREDICTED(STORE_FAST);
TARGET(STORE_FAST) {
PyObject *value = POP();
SETLOCAL(oparg, value);
@@ -2006,6 +2009,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
SET_TOP(awaitable);
+ PREDICT(LOAD_CONST);
DISPATCH();
}
@@ -2048,9 +2052,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_DECREF(next_iter);
PUSH(awaitable);
+ PREDICT(LOAD_CONST);
DISPATCH();
}
+ PREDICTED(GET_AWAITABLE);
TARGET(GET_AWAITABLE) {
PyObject *iterable = TOP();
PyObject *iter = _PyCoro_GetAwaitableIter(iterable);
@@ -2078,6 +2084,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
goto error;
}
+ PREDICT(LOAD_CONST);
DISPATCH();
}
@@ -2111,7 +2118,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
f->f_stacktop = stack_pointer;
why = WHY_YIELD;
/* and repeat... */
- f->f_lasti--;
+ f->f_lasti -= 2;
goto fast_yield;
}
@@ -2133,6 +2140,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
+ PREDICTED(POP_BLOCK);
TARGET(POP_BLOCK) {
PyTryBlock *b = PyFrame_BlockPop(f);
UNWIND_BLOCK(b);
@@ -2249,7 +2257,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
+ PREDICTED(UNPACK_SEQUENCE);
TARGET(UNPACK_SEQUENCE) {
PyObject *seq = POP(), *item, **items;
if (PyTuple_CheckExact(seq) &&
@@ -2358,7 +2366,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
else {
v = PyObject_GetItem(locals, name);
- if (v == NULL && _PyErr_OCCURRED()) {
+ if (v == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
@@ -2398,26 +2406,33 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
PyObject *name = GETITEM(names, oparg);
PyObject *v;
if (PyDict_CheckExact(f->f_globals)
- && PyDict_CheckExact(f->f_builtins)) {
+ && PyDict_CheckExact(f->f_builtins))
+ {
v = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,
(PyDictObject *)f->f_builtins,
name);
if (v == NULL) {
- if (!_PyErr_OCCURRED())
+ if (!_PyErr_OCCURRED()) {
+ /* _PyDict_LoadGlobal() returns NULL without raising
+ * an exception if the key doesn't exist */
format_exc_check_arg(PyExc_NameError,
NAME_ERROR_MSG, name);
+ }
goto error;
}
Py_INCREF(v);
}
else {
/* Slow-path if globals or builtins is not a dict */
+
+ /* namespace 1: globals */
v = PyObject_GetItem(f->f_globals, name);
if (v == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
+ /* namespace 2: builtins */
v = PyObject_GetItem(f->f_builtins, name);
if (v == NULL) {
if (PyErr_ExceptionMatches(PyExc_KeyError))
@@ -2477,7 +2492,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
else {
value = PyObject_GetItem(locals, name);
- if (value == NULL && PyErr_Occurred()) {
+ if (value == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
@@ -2540,9 +2555,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(BUILD_TUPLE_UNPACK, _build_list_unpack)
- TARGET(BUILD_LIST_UNPACK)
- _build_list_unpack: {
+ TARGET(BUILD_TUPLE_UNPACK)
+ TARGET(BUILD_LIST_UNPACK) {
int convert_to_tuple = opcode == BUILD_TUPLE_UNPACK;
int i;
PyObject *sum = PyList_New(0);
@@ -2639,9 +2653,41 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(BUILD_MAP_UNPACK_WITH_CALL, _build_map_unpack)
- TARGET(BUILD_MAP_UNPACK)
- _build_map_unpack: {
+ TARGET(BUILD_CONST_KEY_MAP) {
+ int i;
+ PyObject *map;
+ PyObject *keys = TOP();
+ if (!PyTuple_CheckExact(keys) ||
+ PyTuple_GET_SIZE(keys) != (Py_ssize_t)oparg) {
+ PyErr_SetString(PyExc_SystemError,
+ "bad BUILD_CONST_KEY_MAP keys argument");
+ goto error;
+ }
+ map = _PyDict_NewPresized((Py_ssize_t)oparg);
+ if (map == NULL) {
+ goto error;
+ }
+ for (i = oparg; i > 0; i--) {
+ int err;
+ PyObject *key = PyTuple_GET_ITEM(keys, oparg - i);
+ PyObject *value = PEEK(i + 1);
+ err = PyDict_SetItem(map, key, value);
+ if (err != 0) {
+ Py_DECREF(map);
+ goto error;
+ }
+ }
+
+ Py_DECREF(POP());
+ while (oparg--) {
+ Py_DECREF(POP());
+ }
+ PUSH(map);
+ DISPATCH();
+ }
+
+ TARGET(BUILD_MAP_UNPACK_WITH_CALL)
+ TARGET(BUILD_MAP_UNPACK) {
int with_call = opcode == BUILD_MAP_UNPACK_WITH_CALL;
int num_maps;
int function_location;
@@ -2763,45 +2809,15 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
TARGET(IMPORT_NAME) {
- _Py_IDENTIFIER(__import__);
PyObject *name = GETITEM(names, oparg);
- PyObject *func = _PyDict_GetItemId(f->f_builtins, &PyId___import__);
- PyObject *from, *level, *args, *res;
- if (func == NULL) {
- PyErr_SetString(PyExc_ImportError,
- "__import__ not found");
- goto error;
- }
- Py_INCREF(func);
- from = POP();
- level = TOP();
- if (PyLong_AsLong(level) != -1 || PyErr_Occurred())
- args = PyTuple_Pack(5,
- name,
- f->f_globals,
- f->f_locals == NULL ?
- Py_None : f->f_locals,
- from,
- level);
- else
- args = PyTuple_Pack(4,
- name,
- f->f_globals,
- f->f_locals == NULL ?
- Py_None : f->f_locals,
- from);
- Py_DECREF(level);
- Py_DECREF(from);
- if (args == NULL) {
- Py_DECREF(func);
- STACKADJ(-1);
- goto error;
- }
+ PyObject *fromlist = POP();
+ PyObject *level = TOP();
+ PyObject *res;
READ_TIMESTAMP(intr0);
- res = PyEval_CallObject(func, args);
+ res = import_name(f, name, fromlist, level);
+ Py_DECREF(level);
+ Py_DECREF(fromlist);
READ_TIMESTAMP(intr1);
- Py_DECREF(args);
- Py_DECREF(func);
SET_TOP(res);
if (res == NULL)
goto error;
@@ -2848,7 +2864,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
FAST_DISPATCH();
}
- PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
+ PREDICTED(POP_JUMP_IF_FALSE);
TARGET(POP_JUMP_IF_FALSE) {
PyObject *cond = POP();
int err;
@@ -2872,7 +2888,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
+ PREDICTED(POP_JUMP_IF_TRUE);
TARGET(POP_JUMP_IF_TRUE) {
PyObject *cond = POP();
int err;
@@ -2949,7 +2965,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
+ PREDICTED(JUMP_ABSOLUTE);
TARGET(JUMP_ABSOLUTE) {
JUMPTO(oparg);
#if FAST_LOOPS
@@ -2975,6 +2991,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
if (iter == NULL)
goto error;
PREDICT(FOR_ITER);
+ PREDICT(CALL_FUNCTION);
DISPATCH();
}
@@ -3003,10 +3020,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
if (iter == NULL)
goto error;
}
+ PREDICT(LOAD_CONST);
DISPATCH();
}
- PREDICTED_WITH_ARG(FOR_ITER);
+ PREDICTED(FOR_ITER);
TARGET(FOR_ITER) {
/* before: [iter]; after: [iter, iter()] *or* [] */
PyObject *iter = TOP();
@@ -3028,6 +3046,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
STACKADJ(-1);
Py_DECREF(iter);
JUMPBY(oparg);
+ PREDICT(POP_BLOCK);
DISPATCH();
}
@@ -3044,10 +3063,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
goto fast_block_end;
}
- TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally)
- TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally)
- TARGET(SETUP_FINALLY)
- _setup_finally: {
+ TARGET(SETUP_LOOP)
+ TARGET(SETUP_EXCEPT)
+ TARGET(SETUP_FINALLY) {
/* NOTE: If you add any new block-setup opcodes that
are not try/except/finally handlers, you may need
to update the PyGen_NeedsFinalizing() function.
@@ -3078,6 +3096,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
if (res == NULL)
goto error;
PUSH(res);
+ PREDICT(GET_AWAITABLE);
DISPATCH();
}
@@ -3226,6 +3245,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
+ PREDICTED(CALL_FUNCTION);
TARGET(CALL_FUNCTION) {
PyObject **sp, *res;
PCALL(PCALL_ALL);
@@ -3242,10 +3262,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(CALL_FUNCTION_VAR, _call_function_var_kw)
- TARGET_WITH_IMPL(CALL_FUNCTION_KW, _call_function_var_kw)
- TARGET(CALL_FUNCTION_VAR_KW)
- _call_function_var_kw: {
+ TARGET(CALL_FUNCTION_VAR)
+ TARGET(CALL_FUNCTION_KW)
+ TARGET(CALL_FUNCTION_VAR_KW) {
int na = oparg & 0xff;
int nk = (oparg>>8) & 0xff;
int flags = (opcode - CALL_FUNCTION) & 3;
@@ -3287,117 +3306,36 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function)
- TARGET(MAKE_FUNCTION)
- _make_function: {
- int posdefaults = oparg & 0xff;
- int kwdefaults = (oparg>>8) & 0xff;
- int num_annotations = (oparg >> 16) & 0x7fff;
+ TARGET(MAKE_FUNCTION) {
+ PyObject *qualname = POP();
+ PyObject *codeobj = POP();
+ PyFunctionObject *func = (PyFunctionObject *)
+ PyFunction_NewWithQualName(codeobj, f->f_globals, qualname);
- PyObject *qualname = POP(); /* qualname */
- PyObject *code = POP(); /* code object */
- PyObject *func = PyFunction_NewWithQualName(code, f->f_globals, qualname);
- Py_DECREF(code);
+ Py_DECREF(codeobj);
Py_DECREF(qualname);
-
- if (func == NULL)
+ if (func == NULL) {
goto error;
-
- if (opcode == MAKE_CLOSURE) {
- PyObject *closure = POP();
- if (PyFunction_SetClosure(func, closure) != 0) {
- /* Can't happen unless bytecode is corrupt. */
- Py_DECREF(func);
- Py_DECREF(closure);
- goto error;
- }
- Py_DECREF(closure);
}
- if (num_annotations > 0) {
- Py_ssize_t name_ix;
- PyObject *names = POP(); /* names of args with annotations */
- PyObject *anns = PyDict_New();
- if (anns == NULL) {
- Py_DECREF(func);
- Py_DECREF(names);
- goto error;
- }
- name_ix = PyTuple_Size(names);
- assert(num_annotations == name_ix+1);
- while (name_ix > 0) {
- PyObject *name, *value;
- int err;
- --name_ix;
- name = PyTuple_GET_ITEM(names, name_ix);
- value = POP();
- err = PyDict_SetItem(anns, name, value);
- Py_DECREF(value);
- if (err != 0) {
- Py_DECREF(anns);
- Py_DECREF(func);
- Py_DECREF(names);
- goto error;
- }
- }
- Py_DECREF(names);
-
- if (PyFunction_SetAnnotations(func, anns) != 0) {
- /* Can't happen unless
- PyFunction_SetAnnotations changes. */
- Py_DECREF(anns);
- Py_DECREF(func);
- goto error;
- }
- Py_DECREF(anns);
+ if (oparg & 0x08) {
+ assert(PyTuple_CheckExact(TOP()));
+ func ->func_closure = POP();
}
-
- /* XXX Maybe this should be a separate opcode? */
- if (kwdefaults > 0) {
- PyObject *defs = PyDict_New();
- if (defs == NULL) {
- Py_DECREF(func);
- goto error;
- }
- while (--kwdefaults >= 0) {
- PyObject *v = POP(); /* default value */
- PyObject *key = POP(); /* kw only arg name */
- int err = PyDict_SetItem(defs, key, v);
- Py_DECREF(v);
- Py_DECREF(key);
- if (err != 0) {
- Py_DECREF(defs);
- Py_DECREF(func);
- goto error;
- }
- }
- if (PyFunction_SetKwDefaults(func, defs) != 0) {
- /* Can't happen unless
- PyFunction_SetKwDefaults changes. */
- Py_DECREF(func);
- Py_DECREF(defs);
- goto error;
- }
- Py_DECREF(defs);
+ if (oparg & 0x04) {
+ assert(PyDict_CheckExact(TOP()));
+ func->func_annotations = POP();
}
- if (posdefaults > 0) {
- PyObject *defs = PyTuple_New(posdefaults);
- if (defs == NULL) {
- Py_DECREF(func);
- goto error;
- }
- while (--posdefaults >= 0)
- PyTuple_SET_ITEM(defs, posdefaults, POP());
- if (PyFunction_SetDefaults(func, defs) != 0) {
- /* Can't happen unless
- PyFunction_SetDefaults changes. */
- Py_DECREF(defs);
- Py_DECREF(func);
- goto error;
- }
- Py_DECREF(defs);
+ if (oparg & 0x02) {
+ assert(PyDict_CheckExact(TOP()));
+ func->func_kwdefaults = POP();
}
- PUSH(func);
+ if (oparg & 0x01) {
+ assert(PyTuple_CheckExact(TOP()));
+ func->func_defaults = POP();
+ }
+
+ PUSH((PyObject *)func);
DISPATCH();
}
@@ -3419,9 +3357,68 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
+ TARGET(FORMAT_VALUE) {
+ /* Handles f-string value formatting. */
+ PyObject *result;
+ PyObject *fmt_spec;
+ PyObject *value;
+ PyObject *(*conv_fn)(PyObject *);
+ int which_conversion = oparg & FVC_MASK;
+ int have_fmt_spec = (oparg & FVS_MASK) == FVS_HAVE_SPEC;
+
+ fmt_spec = have_fmt_spec ? POP() : NULL;
+ value = POP();
+
+ /* See if any conversion is specified. */
+ switch (which_conversion) {
+ case FVC_STR: conv_fn = PyObject_Str; break;
+ case FVC_REPR: conv_fn = PyObject_Repr; break;
+ case FVC_ASCII: conv_fn = PyObject_ASCII; break;
+
+ /* Must be 0 (meaning no conversion), since only four
+ values are allowed by (oparg & FVC_MASK). */
+ default: conv_fn = NULL; break;
+ }
+
+ /* If there's a conversion function, call it and replace
+ value with that result. Otherwise, just use value,
+ without conversion. */
+ if (conv_fn != NULL) {
+ result = conv_fn(value);
+ Py_DECREF(value);
+ if (result == NULL) {
+ Py_XDECREF(fmt_spec);
+ goto error;
+ }
+ value = result;
+ }
+
+ /* If value is a unicode object, and there's no fmt_spec,
+ then we know the result of format(value) is value
+ itself. In that case, skip calling format(). I plan to
+ move this optimization in to PyObject_Format()
+ itself. */
+ if (PyUnicode_CheckExact(value) && fmt_spec == NULL) {
+ /* Do nothing, just transfer ownership to result. */
+ result = value;
+ } else {
+ /* Actually call format(). */
+ result = PyObject_Format(value, fmt_spec);
+ Py_DECREF(value);
+ Py_XDECREF(fmt_spec);
+ if (result == NULL) {
+ goto error;
+ }
+ }
+
+ PUSH(result);
+ DISPATCH();
+ }
+
TARGET(EXTENDED_ARG) {
- opcode = NEXTOP();
- oparg = oparg<<16 | NEXTARG();
+ int oldoparg = oparg;
+ NEXTOPARG();
+ oparg |= oldoparg << 8;
goto dispatch_opcode;
}
@@ -3782,6 +3779,7 @@ too_many_positional(PyCodeObject *co, int given, int defcount, PyObject **fastlo
Py_DECREF(kwonly_sig);
}
+
/* This is gonna seem *real weird*, but if you put some other code between
PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust
the test in the if statements in Misc/gdbinit (pystack and pystackv). */
@@ -3796,12 +3794,13 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
PyFrameObject *f;
PyObject *retval = NULL;
PyObject **fastlocals, **freevars;
- PyThreadState *tstate = PyThreadState_GET();
+ PyThreadState *tstate;
PyObject *x, *u;
- int total_args = co->co_argcount + co->co_kwonlyargcount;
- int i;
- int n = argcount;
- PyObject *kwdict = NULL;
+ const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount;
+ Py_ssize_t i, n;
+ PyObject *kwdict;
+
+ assert((kwcount == 0) || (kws != NULL));
if (globals == NULL) {
PyErr_SetString(PyExc_SystemError,
@@ -3809,36 +3808,50 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
return NULL;
}
+ /* Create the frame */
+ tstate = PyThreadState_GET();
assert(tstate != NULL);
- assert(globals != NULL);
f = PyFrame_New(tstate, co, globals, locals);
- if (f == NULL)
+ if (f == NULL) {
return NULL;
-
+ }
fastlocals = f->f_localsplus;
freevars = f->f_localsplus + co->co_nlocals;
- /* Parse arguments. */
+ /* Create a dictionary for keyword parameters (**kwags) */
if (co->co_flags & CO_VARKEYWORDS) {
kwdict = PyDict_New();
if (kwdict == NULL)
goto fail;
i = total_args;
- if (co->co_flags & CO_VARARGS)
+ if (co->co_flags & CO_VARARGS) {
i++;
+ }
SETLOCAL(i, kwdict);
}
- if (argcount > co->co_argcount)
+ else {
+ kwdict = NULL;
+ }
+
+ /* Copy positional arguments into local variables */
+ if (argcount > co->co_argcount) {
n = co->co_argcount;
+ }
+ else {
+ n = argcount;
+ }
for (i = 0; i < n; i++) {
x = args[i];
Py_INCREF(x);
SETLOCAL(i, x);
}
+
+ /* Pack other positional arguments into the *args argument */
if (co->co_flags & CO_VARARGS) {
u = PyTuple_New(argcount - n);
- if (u == NULL)
+ if (u == NULL) {
goto fail;
+ }
SETLOCAL(total_args, u);
for (i = n; i < argcount; i++) {
x = args[i];
@@ -3846,17 +3859,21 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
PyTuple_SET_ITEM(u, i-n, x);
}
}
+
+ /* Handle keyword arguments (passed as an array of (key, value)) */
for (i = 0; i < kwcount; i++) {
PyObject **co_varnames;
PyObject *keyword = kws[2*i];
PyObject *value = kws[2*i + 1];
- int j;
+ Py_ssize_t j;
+
if (keyword == NULL || !PyUnicode_Check(keyword)) {
PyErr_Format(PyExc_TypeError,
"%U() keywords must be strings",
co->co_name);
goto fail;
}
+
/* Speed hack: do raw pointer compares. As names are
normally interned this should almost always hit. */
co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item;
@@ -3865,6 +3882,7 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
if (nm == keyword)
goto kw_found;
}
+
/* Slow fallback, just in case */
for (j = 0; j < total_args; j++) {
PyObject *nm = co_varnames[j];
@@ -3875,6 +3893,7 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
else if (cmp < 0)
goto fail;
}
+
if (j >= total_args && kwdict == NULL) {
PyErr_Format(PyExc_TypeError,
"%U() got an unexpected "
@@ -3883,10 +3902,12 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
keyword);
goto fail;
}
+
if (PyDict_SetItem(kwdict, keyword, value) == -1) {
goto fail;
}
continue;
+
kw_found:
if (GETLOCAL(j) != NULL) {
PyErr_Format(PyExc_TypeError,
@@ -3899,16 +3920,22 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
Py_INCREF(value);
SETLOCAL(j, value);
}
+
+ /* Check the number of positional arguments */
if (argcount > co->co_argcount && !(co->co_flags & CO_VARARGS)) {
too_many_positional(co, argcount, defcount, fastlocals);
goto fail;
}
+
+ /* Add missing positional arguments (copy default values from defs) */
if (argcount < co->co_argcount) {
- int m = co->co_argcount - defcount;
- int missing = 0;
- for (i = argcount; i < m; i++)
- if (GETLOCAL(i) == NULL)
+ Py_ssize_t m = co->co_argcount - defcount;
+ Py_ssize_t missing = 0;
+ for (i = argcount; i < m; i++) {
+ if (GETLOCAL(i) == NULL) {
missing++;
+ }
+ }
if (missing) {
missing_arguments(co, missing, defcount, fastlocals);
goto fail;
@@ -3925,8 +3952,10 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
}
}
}
+
+ /* Add missing keyword arguments (copy default values from kwdefs) */
if (co->co_kwonlyargcount > 0) {
- int missing = 0;
+ Py_ssize_t missing = 0;
for (i = co->co_argcount; i < total_args; i++) {
PyObject *name;
if (GETLOCAL(i) != NULL)
@@ -3967,12 +3996,15 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
goto fail;
SETLOCAL(co->co_nlocals + i, c);
}
+
+ /* Copy closure variables to free variables */
for (i = 0; i < PyTuple_GET_SIZE(co->co_freevars); ++i) {
PyObject *o = PyTuple_GET_ITEM(closure, i);
Py_INCREF(o);
freevars[PyTuple_GET_SIZE(co->co_cellvars) + i] = o;
}
+ /* Handle generator/coroutine */
if (co->co_flags & (CO_GENERATOR | CO_COROUTINE)) {
PyObject *gen;
PyObject *coro_wrapper = tstate->coroutine_wrapper;
@@ -4037,8 +4069,10 @@ PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals,
PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure)
{
return _PyEval_EvalCodeWithName(_co, globals, locals,
- args, argcount, kws, kwcount,
- defs, defcount, kwdefs, closure,
+ args, argcount,
+ kws, kwcount,
+ defs, defcount,
+ kwdefs, closure,
NULL, NULL);
}
@@ -4297,7 +4331,7 @@ Error:
#ifdef LLTRACE
static int
-prtrace(PyObject *v, char *str)
+prtrace(PyObject *v, const char *str)
{
printf("%s ", str);
if (PyObject_Print(v, stdout, 0) != 0)
@@ -4546,7 +4580,7 @@ PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
The arg must be a tuple or NULL. The kw must be a dict or NULL. */
PyObject *
-PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw)
+PyEval_CallObjectWithKeywords(PyObject *func, PyObject *args, PyObject *kwargs)
{
PyObject *result;
@@ -4557,28 +4591,33 @@ PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw)
assert(!PyErr_Occurred());
#endif
- if (arg == NULL) {
- arg = PyTuple_New(0);
- if (arg == NULL)
+ if (args == NULL) {
+ if (kwargs == NULL) {
+ return _PyObject_FastCall(func, NULL, 0, 0);
+ }
+
+ args = PyTuple_New(0);
+ if (args == NULL)
return NULL;
}
- else if (!PyTuple_Check(arg)) {
+ else if (!PyTuple_Check(args)) {
PyErr_SetString(PyExc_TypeError,
"argument list must be a tuple");
return NULL;
}
- else
- Py_INCREF(arg);
+ else {
+ Py_INCREF(args);
+ }
- if (kw != NULL && !PyDict_Check(kw)) {
+ if (kwargs != NULL && !PyDict_Check(kwargs)) {
PyErr_SetString(PyExc_TypeError,
"keyword list must be a dictionary");
- Py_DECREF(arg);
+ Py_DECREF(args);
return NULL;
}
- result = PyObject_Call(func, arg, kw);
- Py_DECREF(arg);
+ result = PyObject_Call(func, args, kwargs);
+ Py_DECREF(args);
return result;
}
@@ -4726,10 +4765,12 @@ call_function(PyObject ***pp_stack, int oparg
} else
Py_INCREF(func);
READ_TIMESTAMP(*pintr0);
- if (PyFunction_Check(func))
- x = fast_function(func, pp_stack, n, na, nk);
- else
+ if (PyFunction_Check(func)) {
+ x = fast_function(func, (*pp_stack) - n, n, na, nk);
+ }
+ else {
x = do_call(func, pp_stack, na, nk);
+ }
READ_TIMESTAMP(*pintr1);
Py_DECREF(func);
@@ -4759,62 +4800,144 @@ call_function(PyObject ***pp_stack, int oparg
done before evaluating the frame.
*/
+static PyObject*
+_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
+ PyObject *globals)
+{
+ PyFrameObject *f;
+ PyThreadState *tstate = PyThreadState_GET();
+ PyObject **fastlocals;
+ Py_ssize_t i;
+ PyObject *result;
+
+ PCALL(PCALL_FASTER_FUNCTION);
+ assert(globals != NULL);
+ /* XXX Perhaps we should create a specialized
+ PyFrame_New() that doesn't take locals, but does
+ take builtins without sanity checking them.
+ */
+ assert(tstate != NULL);
+ f = PyFrame_New(tstate, co, globals, NULL);
+ if (f == NULL) {
+ return NULL;
+ }
+
+ fastlocals = f->f_localsplus;
+
+ for (i = 0; i < na; i++) {
+ Py_INCREF(*args);
+ fastlocals[i] = *args++;
+ }
+ result = PyEval_EvalFrameEx(f,0);
+
+ ++tstate->recursion_depth;
+ Py_DECREF(f);
+ --tstate->recursion_depth;
+
+ return result;
+}
+
+/* Similar to _PyFunction_FastCall() but keywords are passed a (key, value)
+ pairs in stack */
static PyObject *
-fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk)
+fast_function(PyObject *func, PyObject **stack, int n, int nargs, int nk)
{
PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
PyObject *globals = PyFunction_GET_GLOBALS(func);
PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
- PyObject *kwdefs = PyFunction_GET_KW_DEFAULTS(func);
- PyObject *name = ((PyFunctionObject *)func) -> func_name;
- PyObject *qualname = ((PyFunctionObject *)func) -> func_qualname;
- PyObject **d = NULL;
- int nd = 0;
+ PyObject *kwdefs, *closure, *name, *qualname;
+ PyObject **d;
+ int nd;
PCALL(PCALL_FUNCTION);
PCALL(PCALL_FAST_FUNCTION);
- if (argdefs == NULL && co->co_argcount == n &&
- co->co_kwonlyargcount == 0 && nk==0 &&
- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
- PyFrameObject *f;
- PyObject *retval = NULL;
- PyThreadState *tstate = PyThreadState_GET();
- PyObject **fastlocals, **stack;
- int i;
- PCALL(PCALL_FASTER_FUNCTION);
- assert(globals != NULL);
- /* XXX Perhaps we should create a specialized
- PyFrame_New() that doesn't take locals, but does
- take builtins without sanity checking them.
- */
- assert(tstate != NULL);
- f = PyFrame_New(tstate, co, globals, NULL);
- if (f == NULL)
- return NULL;
+ if (co->co_kwonlyargcount == 0 && nk == 0 &&
+ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE))
+ {
+ if (argdefs == NULL && co->co_argcount == nargs) {
+ return _PyFunction_FastCallNoKw(co, stack, nargs, globals);
+ }
+ else if (nargs == 0 && argdefs != NULL
+ && co->co_argcount == Py_SIZE(argdefs)) {
+ /* function called with no arguments, but all parameters have
+ a default value: use default values as arguments .*/
+ stack = &PyTuple_GET_ITEM(argdefs, 0);
+ return _PyFunction_FastCallNoKw(co, stack, Py_SIZE(argdefs),
+ globals);
+ }
+ }
+
+ kwdefs = PyFunction_GET_KW_DEFAULTS(func);
+ closure = PyFunction_GET_CLOSURE(func);
+ name = ((PyFunctionObject *)func) -> func_name;
+ qualname = ((PyFunctionObject *)func) -> func_qualname;
+
+ if (argdefs != NULL) {
+ d = &PyTuple_GET_ITEM(argdefs, 0);
+ nd = Py_SIZE(argdefs);
+ }
+ else {
+ d = NULL;
+ nd = 0;
+ }
+ return _PyEval_EvalCodeWithName((PyObject*)co, globals, (PyObject *)NULL,
+ stack, nargs,
+ stack + nargs, nk,
+ d, nd, kwdefs,
+ closure, name, qualname);
+}
+
+PyObject *
+_PyFunction_FastCall(PyObject *func, PyObject **args, int nargs, PyObject *kwargs)
+{
+ PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
+ PyObject *globals = PyFunction_GET_GLOBALS(func);
+ PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
+ PyObject *kwdefs, *closure, *name, *qualname;
+ PyObject **d;
+ int nd;
+
+ PCALL(PCALL_FUNCTION);
+ PCALL(PCALL_FAST_FUNCTION);
- fastlocals = f->f_localsplus;
- stack = (*pp_stack) - n;
+ /* issue #27128: support for keywords will come later */
+ assert(kwargs == NULL);
- for (i = 0; i < n; i++) {
- Py_INCREF(*stack);
- fastlocals[i] = *stack++;
+ if (co->co_kwonlyargcount == 0 && kwargs == NULL &&
+ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE))
+ {
+ if (argdefs == NULL && co->co_argcount == nargs) {
+ return _PyFunction_FastCallNoKw(co, args, nargs, globals);
+ }
+ else if (nargs == 0 && argdefs != NULL
+ && co->co_argcount == Py_SIZE(argdefs)) {
+ /* function called with no arguments, but all parameters have
+ a default value: use default values as arguments .*/
+ args = &PyTuple_GET_ITEM(argdefs, 0);
+ return _PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs),
+ globals);
}
- retval = PyEval_EvalFrameEx(f,0);
- ++tstate->recursion_depth;
- Py_DECREF(f);
- --tstate->recursion_depth;
- return retval;
}
+
+ kwdefs = PyFunction_GET_KW_DEFAULTS(func);
+ closure = PyFunction_GET_CLOSURE(func);
+ name = ((PyFunctionObject *)func) -> func_name;
+ qualname = ((PyFunctionObject *)func) -> func_qualname;
+
if (argdefs != NULL) {
d = &PyTuple_GET_ITEM(argdefs, 0);
nd = Py_SIZE(argdefs);
}
- return _PyEval_EvalCodeWithName((PyObject*)co, globals,
- (PyObject *)NULL, (*pp_stack)-n, na,
- (*pp_stack)-2*nk, nk, d, nd, kwdefs,
- PyFunction_GET_CLOSURE(func),
- name, qualname);
+ else {
+ d = NULL;
+ nd = 0;
+ }
+ return _PyEval_EvalCodeWithName((PyObject*)co, globals, (PyObject *)NULL,
+ args, nargs,
+ NULL, 0,
+ d, nd, kwdefs,
+ closure, name, qualname);
}
static PyObject *
@@ -4863,6 +4986,21 @@ update_star_args(int nstack, int nstar, PyObject *stararg,
{
PyObject *callargs, *w;
+ if (!nstack) {
+ if (!stararg) {
+ /* There are no positional arguments on the stack and there is no
+ sequence to be unpacked. */
+ return PyTuple_New(0);
+ }
+ if (PyTuple_CheckExact(stararg)) {
+ /* No arguments are passed on the stack and the sequence is not a
+ tuple subclass so we can just pass the stararg tuple directly
+ to the function. */
+ Py_INCREF(stararg);
+ return stararg;
+ }
+ }
+
callargs = PyTuple_New(nstack + nstar);
if (callargs == NULL) {
return NULL;
@@ -4951,7 +5089,7 @@ ext_do_call(PyObject *func, PyObject ***pp_stack, int flags, int na, int nk)
if (flags & CALL_FLAG_KW) {
kwdict = EXT_POP(*pp_stack);
- if (!PyDict_Check(kwdict)) {
+ if (!PyDict_CheckExact(kwdict)) {
PyObject *d;
d = PyDict_New();
if (d == NULL)
@@ -5126,6 +5264,46 @@ cmp_outcome(int op, PyObject *v, PyObject *w)
}
static PyObject *
+import_name(PyFrameObject *f, PyObject *name, PyObject *fromlist, PyObject *level)
+{
+ _Py_IDENTIFIER(__import__);
+ PyObject *import_func, *res;
+ PyObject* stack[5];
+
+ import_func = _PyDict_GetItemId(f->f_builtins, &PyId___import__);
+ if (import_func == NULL) {
+ PyErr_SetString(PyExc_ImportError, "__import__ not found");
+ return NULL;
+ }
+
+ /* Fast path for not overloaded __import__. */
+ if (import_func == PyThreadState_GET()->interp->import_func) {
+ int ilevel = _PyLong_AsInt(level);
+ if (ilevel == -1 && PyErr_Occurred()) {
+ return NULL;
+ }
+ res = PyImport_ImportModuleLevelObject(
+ name,
+ f->f_globals,
+ f->f_locals == NULL ? Py_None : f->f_locals,
+ fromlist,
+ ilevel);
+ return res;
+ }
+
+ Py_INCREF(import_func);
+
+ stack[0] = name;
+ stack[1] = f->f_globals;
+ stack[2] = f->f_locals == NULL ? Py_None : f->f_locals;
+ stack[3] = fromlist;
+ stack[4] = level;
+ res = _PyObject_FastCall(import_func, stack, 5, NULL);
+ Py_DECREF(import_func);
+ return res;
+}
+
+static PyObject *
import_from(PyObject *v, PyObject *name)
{
PyObject *x;
@@ -5261,7 +5439,7 @@ format_exc_unbound(PyCodeObject *co, int oparg)
static PyObject *
unicode_concatenate(PyObject *v, PyObject *w,
- PyFrameObject *f, unsigned char *next_instr)
+ PyFrameObject *f, const unsigned short *next_instr)
{
PyObject *res;
if (Py_REFCNT(v) == 2) {
@@ -5271,10 +5449,11 @@ unicode_concatenate(PyObject *v, PyObject *w,
* 'variable'. We try to delete the variable now to reduce
* the refcnt to 1.
*/
- switch (*next_instr) {
+ int opcode, oparg;
+ NEXTOPARG();
+ switch (opcode) {
case STORE_FAST:
{
- int oparg = PEEKARG();
PyObject **fastlocals = f->f_localsplus;
if (GETLOCAL(oparg) == v)
SETLOCAL(oparg, NULL);
@@ -5284,7 +5463,7 @@ unicode_concatenate(PyObject *v, PyObject *w,
{
PyObject **freevars = (f->f_localsplus +
f->f_code->co_nlocals);
- PyObject *c = freevars[PEEKARG()];
+ PyObject *c = freevars[oparg];
if (PyCell_GET(c) == v)
PyCell_Set(c, NULL);
break;
@@ -5292,7 +5471,7 @@ unicode_concatenate(PyObject *v, PyObject *w,
case STORE_NAME:
{
PyObject *names = f->f_code->co_names;
- PyObject *name = GETITEM(names, PEEKARG());
+ PyObject *name = GETITEM(names, oparg);
PyObject *locals = f->f_locals;
if (PyDict_CheckExact(locals) &&
PyDict_GetItem(locals, name) == v) {
diff --git a/Python/clinic/bltinmodule.c.h b/Python/clinic/bltinmodule.c.h
index 4e2b1f1..4c44340 100644
--- a/Python/clinic/bltinmodule.c.h
+++ b/Python/clinic/bltinmodule.c.h
@@ -93,8 +93,9 @@ builtin_format(PyObject *module, PyObject *args)
PyObject *format_spec = NULL;
if (!PyArg_ParseTuple(args, "O|U:format",
- &value, &format_spec))
+ &value, &format_spec)) {
goto exit;
+ }
return_value = builtin_format_impl(module, value, format_spec);
exit:
@@ -119,8 +120,9 @@ builtin_chr(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int i;
- if (!PyArg_Parse(arg, "i:chr", &i))
+ if (!PyArg_Parse(arg, "i:chr", &i)) {
goto exit;
+ }
return_value = builtin_chr_impl(module, i);
exit:
@@ -157,7 +159,8 @@ static PyObject *
builtin_compile(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL};
+ static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL};
+ static _PyArg_Parser _parser = {"OO&s|iii:compile", _keywords, 0};
PyObject *source;
PyObject *filename;
const char *mode;
@@ -165,9 +168,10 @@ builtin_compile(PyObject *module, PyObject *args, PyObject *kwargs)
int dont_inherit = 0;
int optimize = -1;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO&s|iii:compile", _keywords,
- &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize))
+ if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
+ &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) {
goto exit;
+ }
return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize);
exit:
@@ -195,8 +199,9 @@ builtin_divmod(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "divmod",
2, 2,
- &x, &y))
+ &x, &y)) {
goto exit;
+ }
return_value = builtin_divmod_impl(module, x, y);
exit:
@@ -232,8 +237,9 @@ builtin_eval(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "eval",
1, 3,
- &source, &globals, &locals))
+ &source, &globals, &locals)) {
goto exit;
+ }
return_value = builtin_eval_impl(module, source, globals, locals);
exit:
@@ -269,8 +275,9 @@ builtin_exec(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "exec",
1, 3,
- &source, &globals, &locals))
+ &source, &globals, &locals)) {
goto exit;
+ }
return_value = builtin_exec_impl(module, source, globals, locals);
exit:
@@ -321,8 +328,9 @@ builtin_hasattr(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "hasattr",
2, 2,
- &obj, &name))
+ &obj, &name)) {
goto exit;
+ }
return_value = builtin_hasattr_impl(module, obj, name);
exit:
@@ -366,8 +374,9 @@ builtin_setattr(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "setattr",
3, 3,
- &obj, &name, &value))
+ &obj, &name, &value)) {
goto exit;
+ }
return_value = builtin_setattr_impl(module, obj, name, value);
exit:
@@ -397,8 +406,9 @@ builtin_delattr(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "delattr",
2, 2,
- &obj, &name))
+ &obj, &name)) {
goto exit;
+ }
return_value = builtin_delattr_impl(module, obj, name);
exit:
@@ -506,8 +516,9 @@ builtin_pow(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "pow",
2, 3,
- &x, &y, &z))
+ &x, &y, &z)) {
goto exit;
+ }
return_value = builtin_pow_impl(module, x, y, z);
exit:
@@ -540,8 +551,9 @@ builtin_input(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "input",
0, 1,
- &prompt))
+ &prompt)) {
goto exit;
+ }
return_value = builtin_input_impl(module, prompt);
exit:
@@ -584,8 +596,9 @@ builtin_sum(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "sum",
1, 2,
- &iterable, &start))
+ &iterable, &start)) {
goto exit;
+ }
return_value = builtin_sum_impl(module, iterable, start);
exit:
@@ -618,8 +631,9 @@ builtin_isinstance(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "isinstance",
2, 2,
- &obj, &class_or_tuple))
+ &obj, &class_or_tuple)) {
goto exit;
+ }
return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
exit:
@@ -652,11 +666,12 @@ builtin_issubclass(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "issubclass",
2, 2,
- &cls, &class_or_tuple))
+ &cls, &class_or_tuple)) {
goto exit;
+ }
return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
exit:
return return_value;
}
-/*[clinic end generated code: output=9031270b64c794b8 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=790cb3d26531dfda input=a9049054013a1b77]*/
diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h
index 05d79ac..b3460b0 100644
--- a/Python/clinic/import.c.h
+++ b/Python/clinic/import.c.h
@@ -89,8 +89,9 @@ _imp__fix_co_filename(PyObject *module, PyObject *args)
PyObject *path;
if (!PyArg_ParseTuple(args, "O!U:_fix_co_filename",
- &PyCode_Type, &code, &path))
+ &PyCode_Type, &code, &path)) {
goto exit;
+ }
return_value = _imp__fix_co_filename_impl(module, code, path);
exit:
@@ -142,8 +143,9 @@ _imp_init_frozen(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:init_frozen", &name))
+ if (!PyArg_Parse(arg, "U:init_frozen", &name)) {
goto exit;
+ }
return_value = _imp_init_frozen_impl(module, name);
exit:
@@ -168,8 +170,9 @@ _imp_get_frozen_object(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:get_frozen_object", &name))
+ if (!PyArg_Parse(arg, "U:get_frozen_object", &name)) {
goto exit;
+ }
return_value = _imp_get_frozen_object_impl(module, name);
exit:
@@ -194,8 +197,9 @@ _imp_is_frozen_package(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_frozen_package", &name))
+ if (!PyArg_Parse(arg, "U:is_frozen_package", &name)) {
goto exit;
+ }
return_value = _imp_is_frozen_package_impl(module, name);
exit:
@@ -220,8 +224,9 @@ _imp_is_builtin(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_builtin", &name))
+ if (!PyArg_Parse(arg, "U:is_builtin", &name)) {
goto exit;
+ }
return_value = _imp_is_builtin_impl(module, name);
exit:
@@ -246,8 +251,9 @@ _imp_is_frozen(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_frozen", &name))
+ if (!PyArg_Parse(arg, "U:is_frozen", &name)) {
goto exit;
+ }
return_value = _imp_is_frozen_impl(module, name);
exit:
@@ -277,8 +283,9 @@ _imp_create_dynamic(PyObject *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "create_dynamic",
1, 2,
- &spec, &file))
+ &spec, &file)) {
goto exit;
+ }
return_value = _imp_create_dynamic_impl(module, spec, file);
exit:
@@ -308,8 +315,9 @@ _imp_exec_dynamic(PyObject *module, PyObject *mod)
int _return_value;
_return_value = _imp_exec_dynamic_impl(module, mod);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong((long)_return_value);
exit:
@@ -337,8 +345,9 @@ _imp_exec_builtin(PyObject *module, PyObject *mod)
int _return_value;
_return_value = _imp_exec_builtin_impl(module, mod);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong((long)_return_value);
exit:
@@ -352,4 +361,4 @@ exit:
#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
#define _IMP_EXEC_DYNAMIC_METHODDEF
#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
-/*[clinic end generated code: output=90ad6e5833e6170d input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d24d7f73702a907f input=a9049054013a1b77]*/
diff --git a/Python/compile.c b/Python/compile.c
index 93f47e0..fb80f51 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -29,6 +29,7 @@
#include "code.h"
#include "symtable.h"
#include "opcode.h"
+#include "wordcode_helpers.h"
#define DEFAULT_BLOCK_SIZE 16
#define DEFAULT_BLOCKS 8
@@ -43,7 +44,6 @@
struct instr {
unsigned i_jabs : 1;
unsigned i_jrel : 1;
- unsigned i_hasarg : 1;
unsigned char i_opcode;
int i_oparg;
struct basicblock_ *i_target; /* target block (if jump instruction) */
@@ -171,7 +171,6 @@ static int compiler_addop(struct compiler *, int);
static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *);
static int compiler_addop_i(struct compiler *, int, Py_ssize_t);
static int compiler_addop_j(struct compiler *, int, basicblock *, int);
-static basicblock *compiler_use_new_block(struct compiler *);
static int compiler_error(struct compiler *, const char *);
static int compiler_nameop(struct compiler *, identifier, expr_context_ty);
@@ -196,7 +195,7 @@ static int expr_constant(struct compiler *, expr_ty);
static int compiler_with(struct compiler *, stmt_ty, int);
static int compiler_async_with(struct compiler *, stmt_ty, int);
static int compiler_async_for(struct compiler *, stmt_ty);
-static int compiler_call_helper(struct compiler *c, Py_ssize_t n,
+static int compiler_call_helper(struct compiler *c, int n,
asdl_seq *args,
asdl_seq *keywords);
static int compiler_try_except(struct compiler *, stmt_ty);
@@ -477,9 +476,9 @@ compiler_unit_check(struct compiler_unit *u)
{
basicblock *block;
for (block = u->u_blocks; block != NULL; block = block->b_list) {
- assert((void *)block != (void *)0xcbcbcbcb);
- assert((void *)block != (void *)0xfbfbfbfb);
- assert((void *)block != (void *)0xdbdbdbdb);
+ assert((Py_uintptr_t)block != 0xcbcbcbcbU);
+ assert((Py_uintptr_t)block != 0xfbfbfbfbU);
+ assert((Py_uintptr_t)block != 0xdbdbdbdbU);
if (block->b_instr != NULL) {
assert(block->b_ialloc > 0);
assert(block->b_iused > 0);
@@ -523,6 +522,7 @@ compiler_enter_scope(struct compiler *c, identifier name,
int scope_type, void *key, int lineno)
{
struct compiler_unit *u;
+ basicblock *block;
u = (struct compiler_unit *)PyObject_Malloc(sizeof(
struct compiler_unit));
@@ -620,8 +620,11 @@ compiler_enter_scope(struct compiler *c, identifier name,
c->u = u;
c->c_nestlevel++;
- if (compiler_use_new_block(c) == NULL)
+
+ block = compiler_new_block(c);
+ if (block == NULL)
return 0;
+ c->u->u_curblock = block;
if (u->u_scope_type != COMPILER_SCOPE_MODULE) {
if (!compiler_set_qualname(c))
@@ -731,6 +734,7 @@ compiler_set_qualname(struct compiler *c)
return 1;
}
+
/* Allocate a new block and return a pointer to it.
Returns NULL on error.
*/
@@ -755,16 +759,6 @@ compiler_new_block(struct compiler *c)
}
static basicblock *
-compiler_use_new_block(struct compiler *c)
-{
- basicblock *block = compiler_new_block(c);
- if (block == NULL)
- return NULL;
- c->u->u_curblock = block;
- return block;
-}
-
-static basicblock *
compiler_next_block(struct compiler *c)
{
basicblock *block = compiler_new_block(c);
@@ -986,6 +980,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return 1 - (oparg & 0xFF);
case BUILD_MAP:
return 1 - 2*oparg;
+ case BUILD_CONST_KEY_MAP:
+ return -oparg;
case LOAD_ATTR:
return 0;
case COMPARE_OP:
@@ -1034,11 +1030,10 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return -NARGS(oparg)-1;
case CALL_FUNCTION_VAR_KW:
return -NARGS(oparg)-2;
- case MAKE_FUNCTION:
- return -1 -NARGS(oparg) - ((oparg >> 16) & 0xffff);
- case MAKE_CLOSURE:
- return -2 - NARGS(oparg) - ((oparg >> 16) & 0xffff);
#undef NARGS
+ case MAKE_FUNCTION:
+ return -1 - ((oparg & 0x01) != 0) - ((oparg & 0x02) != 0) -
+ ((oparg & 0x04) != 0) - ((oparg & 0x08) != 0);
case BUILD_SLICE:
if (oparg == 3)
return -2;
@@ -1066,6 +1061,10 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return 1;
case GET_YIELD_FROM_ITER:
return 0;
+ case FORMAT_VALUE:
+ /* If there's a fmt_spec on the stack, we go from 2->1,
+ else 1->1. */
+ return (oparg & FVS_MASK) == FVS_HAVE_SPEC ? -1 : 0;
default:
return PY_INVALID_STACK_EFFECT;
}
@@ -1082,13 +1081,14 @@ compiler_addop(struct compiler *c, int opcode)
basicblock *b;
struct instr *i;
int off;
+ assert(!HAS_ARG(opcode));
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
return 0;
b = c->u->u_curblock;
i = &b->b_instr[off];
i->i_opcode = opcode;
- i->i_hasarg = 0;
+ i->i_oparg = 0;
if (opcode == RETURN_VALUE)
b->b_return = 1;
compiler_set_lineno(c, off);
@@ -1165,10 +1165,15 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
struct instr *i;
int off;
- /* Integer arguments are limit to 16-bit. There is an extension for 32-bit
- integer arguments. */
- assert((-2147483647-1) <= oparg);
- assert(oparg <= 2147483647);
+ /* oparg value is unsigned, but a signed C int is usually used to store
+ it in the C code (like Python/ceval.c).
+
+ Limit to 32-bit signed C int (rather than INT_MAX) for portability.
+
+ The argument of a concrete bytecode instruction is limited to 8-bit.
+ EXTENDED_ARG is used for 16, 24, and 32-bit arguments. */
+ assert(HAS_ARG(opcode));
+ assert(0 <= oparg && oparg <= 2147483647);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
@@ -1176,7 +1181,6 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
i = &c->u->u_curblock->b_instr[off];
i->i_opcode = opcode;
i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int);
- i->i_hasarg = 1;
compiler_set_lineno(c, off);
return 1;
}
@@ -1187,6 +1191,7 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
struct instr *i;
int off;
+ assert(HAS_ARG(opcode));
assert(b != NULL);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
@@ -1194,7 +1199,6 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
i = &c->u->u_curblock->b_instr[off];
i->i_opcode = opcode;
i->i_target = b;
- i->i_hasarg = 1;
if (absolute)
i->i_jabs = 1;
else
@@ -1203,22 +1207,12 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
return 1;
}
-/* The distinction between NEW_BLOCK and NEXT_BLOCK is subtle. (I'd
- like to find better names.) NEW_BLOCK() creates a new block and sets
- it as the current block. NEXT_BLOCK() also creates an implicit jump
- from the current block to the new block.
-*/
+/* NEXT_BLOCK() creates an implicit jump from the current block
+ to the new block.
-/* The returns inside these macros make it impossible to decref objects
- created in the local function. Local objects should use the arena.
+ The returns inside this macro make it impossible to decref objects
+ created in the local function. Local objects should use the arena.
*/
-
-
-#define NEW_BLOCK(C) { \
- if (compiler_use_new_block((C)) == NULL) \
- return 0; \
-}
-
#define NEXT_BLOCK(C) { \
if (compiler_next_block((C)) == NULL) \
return 0; \
@@ -1241,6 +1235,15 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
return 0; \
}
+/* Same as ADDOP_O, but steals a reference. */
+#define ADDOP_N(C, OP, O, TYPE) { \
+ if (!compiler_addop_o((C), (OP), (C)->u->u_ ## TYPE, (O))) { \
+ Py_DECREF((O)); \
+ return 0; \
+ } \
+ Py_DECREF((O)); \
+}
+
#define ADDOP_NAME(C, OP, O, TYPE) { \
if (!compiler_addop_name((C), (OP), (C)->u->u_ ## TYPE, (O))) \
return 0; \
@@ -1309,7 +1312,49 @@ compiler_isdocstring(stmt_ty s)
{
if (s->kind != Expr_kind)
return 0;
- return s->v.Expr.value->kind == Str_kind;
+ if (s->v.Expr.value->kind == Str_kind)
+ return 1;
+ if (s->v.Expr.value->kind == Constant_kind)
+ return PyUnicode_CheckExact(s->v.Expr.value->v.Constant.value);
+ return 0;
+}
+
+static int
+is_const(expr_ty e)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ case Num_kind:
+ case Str_kind:
+ case Bytes_kind:
+ case Ellipsis_kind:
+ case NameConstant_kind:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static PyObject *
+get_const_value(expr_ty e)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ return e->v.Constant.value;
+ case Num_kind:
+ return e->v.Num.n;
+ case Str_kind:
+ return e->v.Str.s;
+ case Bytes_kind:
+ return e->v.Bytes.s;
+ case Ellipsis_kind:
+ return Py_Ellipsis;
+ case NameConstant_kind:
+ return e->v.NameConstant.value;
+ default:
+ assert(!is_const(e));
+ return NULL;
+ }
}
/* Compile a sequence of statements, checking for a docstring. */
@@ -1426,53 +1471,50 @@ compiler_lookup_arg(PyObject *dict, PyObject *name)
}
static int
-compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t args, PyObject *qualname)
+compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, PyObject *qualname)
{
Py_ssize_t i, free = PyCode_GetNumFree(co);
if (qualname == NULL)
qualname = co->co_name;
- if (free == 0) {
- ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
- ADDOP_O(c, LOAD_CONST, qualname, consts);
- ADDOP_I(c, MAKE_FUNCTION, args);
- return 1;
- }
- for (i = 0; i < free; ++i) {
- /* Bypass com_addop_varname because it will generate
- LOAD_DEREF but LOAD_CLOSURE is needed.
- */
- PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i);
- int arg, reftype;
-
- /* Special case: If a class contains a method with a
- free variable that has the same name as a method,
- the name will be considered free *and* local in the
- class. It should be handled by the closure, as
- well as by the normal name loookup logic.
- */
- reftype = get_ref_type(c, name);
- if (reftype == CELL)
- arg = compiler_lookup_arg(c->u->u_cellvars, name);
- else /* (reftype == FREE) */
- arg = compiler_lookup_arg(c->u->u_freevars, name);
- if (arg == -1) {
- fprintf(stderr,
- "lookup %s in %s %d %d\n"
- "freevars of %s: %s\n",
- PyUnicode_AsUTF8(PyObject_Repr(name)),
- PyUnicode_AsUTF8(c->u->u_name),
- reftype, arg,
- PyUnicode_AsUTF8(co->co_name),
- PyUnicode_AsUTF8(PyObject_Repr(co->co_freevars)));
- Py_FatalError("compiler_make_closure()");
+ if (free) {
+ for (i = 0; i < free; ++i) {
+ /* Bypass com_addop_varname because it will generate
+ LOAD_DEREF but LOAD_CLOSURE is needed.
+ */
+ PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i);
+ int arg, reftype;
+
+ /* Special case: If a class contains a method with a
+ free variable that has the same name as a method,
+ the name will be considered free *and* local in the
+ class. It should be handled by the closure, as
+ well as by the normal name loookup logic.
+ */
+ reftype = get_ref_type(c, name);
+ if (reftype == CELL)
+ arg = compiler_lookup_arg(c->u->u_cellvars, name);
+ else /* (reftype == FREE) */
+ arg = compiler_lookup_arg(c->u->u_freevars, name);
+ if (arg == -1) {
+ fprintf(stderr,
+ "lookup %s in %s %d %d\n"
+ "freevars of %s: %s\n",
+ PyUnicode_AsUTF8(PyObject_Repr(name)),
+ PyUnicode_AsUTF8(c->u->u_name),
+ reftype, arg,
+ PyUnicode_AsUTF8(co->co_name),
+ PyUnicode_AsUTF8(PyObject_Repr(co->co_freevars)));
+ Py_FatalError("compiler_make_closure()");
+ }
+ ADDOP_I(c, LOAD_CLOSURE, arg);
}
- ADDOP_I(c, LOAD_CLOSURE, arg);
+ flags |= 0x08;
+ ADDOP_I(c, BUILD_TUPLE, free);
}
- ADDOP_I(c, BUILD_TUPLE, free);
ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
ADDOP_O(c, LOAD_CONST, qualname, consts);
- ADDOP_I(c, MAKE_CLOSURE, args);
+ ADDOP_I(c, MAKE_FUNCTION, flags);
return 1;
}
@@ -1494,26 +1536,60 @@ static int
compiler_visit_kwonlydefaults(struct compiler *c, asdl_seq *kwonlyargs,
asdl_seq *kw_defaults)
{
- /* Return the number of defaults + 1.
- Returns 0 on error.
- */
- int i, default_count = 0;
+ /* Push a dict of keyword-only default values.
+
+ Return 0 on error, -1 if no dict pushed, 1 if a dict is pushed.
+ */
+ int i;
+ PyObject *keys = NULL;
+
for (i = 0; i < asdl_seq_LEN(kwonlyargs); i++) {
arg_ty arg = asdl_seq_GET(kwonlyargs, i);
expr_ty default_ = asdl_seq_GET(kw_defaults, i);
if (default_) {
PyObject *mangled = _Py_Mangle(c->u->u_private, arg->arg);
- if (!mangled)
- return 0;
- ADDOP_O(c, LOAD_CONST, mangled, consts);
- Py_DECREF(mangled);
+ if (!mangled) {
+ goto error;
+ }
+ if (keys == NULL) {
+ keys = PyList_New(1);
+ if (keys == NULL) {
+ Py_DECREF(mangled);
+ return 0;
+ }
+ PyList_SET_ITEM(keys, 0, mangled);
+ }
+ else {
+ int res = PyList_Append(keys, mangled);
+ Py_DECREF(mangled);
+ if (res == -1) {
+ goto error;
+ }
+ }
if (!compiler_visit_expr(c, default_)) {
- return 0;
+ goto error;
}
- default_count++;
}
}
- return default_count + 1;
+ if (keys != NULL) {
+ Py_ssize_t default_count = PyList_GET_SIZE(keys);
+ PyObject *keys_tuple = PyList_AsTuple(keys);
+ Py_DECREF(keys);
+ if (keys_tuple == NULL) {
+ return 0;
+ }
+ ADDOP_N(c, LOAD_CONST, keys_tuple, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, default_count);
+ assert(default_count > 0);
+ return 1;
+ }
+ else {
+ return -1;
+ }
+
+error:
+ Py_XDECREF(keys);
+ return 0;
}
static int
@@ -1556,11 +1632,10 @@ static int
compiler_visit_annotations(struct compiler *c, arguments_ty args,
expr_ty returns)
{
- /* Push arg annotations and a list of the argument names. Return the #
- of items pushed + 1. The expressions are evaluated out-of-order wrt the
- source code.
+ /* Push arg annotation dict.
+ The expressions are evaluated out-of-order wrt the source code.
- More than 2^16-1 annotations is a SyntaxError. Returns 0 on error.
+ Return 0 on error, -1 if no dict pushed, 1 if a dict is pushed.
*/
static identifier return_str;
PyObject *names;
@@ -1592,32 +1667,20 @@ compiler_visit_annotations(struct compiler *c, arguments_ty args,
}
len = PyList_GET_SIZE(names);
- if (len > 65534) {
- /* len must fit in 16 bits, and len is incremented below */
- PyErr_SetString(PyExc_SyntaxError,
- "too many annotations");
- goto error;
- }
if (len) {
- /* convert names to a tuple and place on stack */
- PyObject *elt;
- Py_ssize_t i;
- PyObject *s = PyTuple_New(len);
- if (!s)
- goto error;
- for (i = 0; i < len; i++) {
- elt = PyList_GET_ITEM(names, i);
- Py_INCREF(elt);
- PyTuple_SET_ITEM(s, i, elt);
+ PyObject *keytuple = PyList_AsTuple(names);
+ Py_DECREF(names);
+ if (keytuple == NULL) {
+ return 0;
}
- ADDOP_O(c, LOAD_CONST, s, consts);
- Py_DECREF(s);
- len++; /* include the just-pushed tuple */
+ ADDOP_N(c, LOAD_CONST, keytuple, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, len);
+ return 1;
+ }
+ else {
+ Py_DECREF(names);
+ return -1;
}
- Py_DECREF(names);
-
- /* We just checked that len <= 65535, see above */
- return Py_SAFE_DOWNCAST(len + 1, Py_ssize_t, int);
error:
Py_DECREF(names);
@@ -1625,6 +1688,36 @@ error:
}
static int
+compiler_visit_defaults(struct compiler *c, arguments_ty args)
+{
+ VISIT_SEQ(c, expr, args->defaults);
+ ADDOP_I(c, BUILD_TUPLE, asdl_seq_LEN(args->defaults));
+ return 1;
+}
+
+static Py_ssize_t
+compiler_default_arguments(struct compiler *c, arguments_ty args)
+{
+ Py_ssize_t funcflags = 0;
+ if (args->defaults && asdl_seq_LEN(args->defaults) > 0) {
+ if (!compiler_visit_defaults(c, args))
+ return -1;
+ funcflags |= 0x01;
+ }
+ if (args->kwonlyargs) {
+ int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
+ args->kw_defaults);
+ if (res == 0) {
+ return -1;
+ }
+ else if (res > 0) {
+ funcflags |= 0x02;
+ }
+ }
+ return funcflags;
+}
+
+static int
compiler_function(struct compiler *c, stmt_ty s, int is_async)
{
PyCodeObject *co;
@@ -1635,12 +1728,11 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
asdl_seq* decos;
asdl_seq *body;
stmt_ty st;
- Py_ssize_t i, n, arglength;
- int docstring, kw_default_count = 0;
- int num_annotations;
+ Py_ssize_t i, n, funcflags;
+ int docstring;
+ int annotations;
int scope_type;
-
if (is_async) {
assert(s->kind == AsyncFunctionDef_kind);
@@ -1665,30 +1757,32 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
if (!compiler_decorators(c, decos))
return 0;
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
- if (args->kwonlyargs) {
- int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
- args->kw_defaults);
- if (res == 0)
- return 0;
- kw_default_count = res - 1;
+
+ funcflags = compiler_default_arguments(c, args);
+ if (funcflags == -1) {
+ return 0;
}
- num_annotations = compiler_visit_annotations(c, args, returns);
- if (num_annotations == 0)
+
+ annotations = compiler_visit_annotations(c, args, returns);
+ if (annotations == 0) {
return 0;
- num_annotations--;
- assert((num_annotations & 0xFFFF) == num_annotations);
+ }
+ else if (annotations > 0) {
+ funcflags |= 0x04;
+ }
- if (!compiler_enter_scope(c, name,
- scope_type, (void *)s,
- s->lineno))
+ if (!compiler_enter_scope(c, name, scope_type, (void *)s, s->lineno)) {
return 0;
+ }
st = (stmt_ty)asdl_seq_GET(body, 0);
docstring = compiler_isdocstring(st);
- if (docstring && c->c_optimize < 2)
- first_const = st->v.Expr.value->v.Str.s;
+ if (docstring && c->c_optimize < 2) {
+ if (st->v.Expr.value->kind == Constant_kind)
+ first_const = st->v.Expr.value->v.Constant.value;
+ else
+ first_const = st->v.Expr.value->v.Str.s;
+ }
if (compiler_add_o(c, c->u->u_consts, first_const) < 0) {
compiler_exit_scope(c);
return 0;
@@ -1712,12 +1806,9 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
return 0;
}
- arglength = asdl_seq_LEN(args->defaults);
- arglength |= kw_default_count << 8;
- arglength |= num_annotations << 16;
if (is_async)
co->co_flags |= CO_COROUTINE;
- compiler_make_closure(c, co, arglength, qualname);
+ compiler_make_closure(c, co, funcflags, qualname);
Py_DECREF(qualname);
Py_DECREF(co);
@@ -1877,8 +1968,7 @@ compiler_lambda(struct compiler *c, expr_ty e)
PyCodeObject *co;
PyObject *qualname;
static identifier name;
- int kw_default_count = 0;
- Py_ssize_t arglength;
+ Py_ssize_t funcflags;
arguments_ty args = e->v.Lambda.args;
assert(e->kind == Lambda_kind);
@@ -1888,14 +1978,11 @@ compiler_lambda(struct compiler *c, expr_ty e)
return 0;
}
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
- if (args->kwonlyargs) {
- int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
- args->kw_defaults);
- if (res == 0) return 0;
- kw_default_count = res - 1;
+ funcflags = compiler_default_arguments(c, args);
+ if (funcflags == -1) {
+ return 0;
}
+
if (!compiler_enter_scope(c, name, COMPILER_SCOPE_LAMBDA,
(void *)e, e->lineno))
return 0;
@@ -1921,9 +2008,7 @@ compiler_lambda(struct compiler *c, expr_ty e)
if (co == NULL)
return 0;
- arglength = asdl_seq_LEN(args->defaults);
- arglength |= kw_default_count << 8;
- compiler_make_closure(c, co, arglength, qualname);
+ compiler_make_closure(c, co, funcflags, qualname);
Py_DECREF(qualname);
Py_DECREF(co);
@@ -2599,6 +2684,25 @@ compiler_assert(struct compiler *c, stmt_ty s)
}
static int
+compiler_visit_stmt_expr(struct compiler *c, expr_ty value)
+{
+ if (c->c_interactive && c->c_nestlevel <= 1) {
+ VISIT(c, expr, value);
+ ADDOP(c, PRINT_EXPR);
+ return 1;
+ }
+
+ if (is_const(value)) {
+ /* ignore constant statement */
+ return 1;
+ }
+
+ VISIT(c, expr, value);
+ ADDOP(c, POP_TOP);
+ return 1;
+}
+
+static int
compiler_visit_stmt(struct compiler *c, stmt_ty s)
{
Py_ssize_t i, n;
@@ -2668,16 +2772,7 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s)
case Nonlocal_kind:
break;
case Expr_kind:
- if (c->c_interactive && c->c_nestlevel <= 1) {
- VISIT(c, expr, s->v.Expr.value);
- ADDOP(c, PRINT_EXPR);
- }
- else if (s->v.Expr.value->kind != Str_kind &&
- s->v.Expr.value->kind != Num_kind) {
- VISIT(c, expr, s->v.Expr.value);
- ADDOP(c, POP_TOP);
- }
- break;
+ return compiler_visit_stmt_expr(c, s->v.Expr.value);
case Pass_kind:
break;
case Break_kind:
@@ -3079,9 +3174,53 @@ compiler_set(struct compiler *c, expr_ty e)
}
static int
+are_all_items_const(asdl_seq *seq, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i;
+ for (i = begin; i < end; i++) {
+ expr_ty key = (expr_ty)asdl_seq_GET(seq, i);
+ if (key == NULL || !is_const(key))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+compiler_subdict(struct compiler *c, expr_ty e, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ PyObject *keys, *key;
+ if (n > 1 && are_all_items_const(e->v.Dict.keys, begin, end)) {
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return 0;
+ }
+ for (i = begin; i < end; i++) {
+ key = get_const_value((expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ Py_INCREF(key);
+ PyTuple_SET_ITEM(keys, i - begin, key);
+ }
+ ADDOP_N(c, LOAD_CONST, keys, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, n);
+ }
+ else {
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ }
+ ADDOP_I(c, BUILD_MAP, n);
+ }
+ return 1;
+}
+
+static int
compiler_dict(struct compiler *c, expr_ty e)
{
- Py_ssize_t i, n, containers, elements;
+ Py_ssize_t i, n, elements;
+ int containers;
int is_unpacking = 0;
n = asdl_seq_LEN(e->v.Dict.values);
containers = 0;
@@ -3089,7 +3228,8 @@ compiler_dict(struct compiler *c, expr_ty e)
for (i = 0; i < n; i++) {
is_unpacking = (expr_ty)asdl_seq_GET(e->v.Dict.keys, i) == NULL;
if (elements == 0xFFFF || (elements && is_unpacking)) {
- ADDOP_I(c, BUILD_MAP, elements);
+ if (!compiler_subdict(c, e, i - elements, i))
+ return 0;
containers++;
elements = 0;
}
@@ -3098,13 +3238,12 @@ compiler_dict(struct compiler *c, expr_ty e)
containers++;
}
else {
- VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
- VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
elements++;
}
}
if (elements || containers == 0) {
- ADDOP_I(c, BUILD_MAP, elements);
+ if (!compiler_subdict(c, e, n - elements, n))
+ return 0;
containers++;
}
/* If there is more than one dict, they need to be merged into a new
@@ -3173,15 +3312,127 @@ compiler_call(struct compiler *c, expr_ty e)
e->v.Call.keywords);
}
+static int
+compiler_joined_str(struct compiler *c, expr_ty e)
+{
+ /* Concatenate parts of a string using ''.join(parts). There are
+ probably better ways of doing this.
+
+ This is used for constructs like "'x=' f'{42}'", which have to
+ be evaluated at compile time. */
+
+ static PyObject *empty_string;
+ static PyObject *join_string;
+
+ if (!empty_string) {
+ empty_string = PyUnicode_FromString("");
+ if (!empty_string)
+ return 0;
+ }
+ if (!join_string) {
+ join_string = PyUnicode_FromString("join");
+ if (!join_string)
+ return 0;
+ }
+
+ ADDOP_O(c, LOAD_CONST, empty_string, consts);
+ ADDOP_NAME(c, LOAD_ATTR, join_string, names);
+ VISIT_SEQ(c, expr, e->v.JoinedStr.values);
+ ADDOP_I(c, BUILD_LIST, asdl_seq_LEN(e->v.JoinedStr.values));
+ ADDOP_I(c, CALL_FUNCTION, 1);
+ return 1;
+}
+
+/* Used to implement f-strings. Format a single value. */
+static int
+compiler_formatted_value(struct compiler *c, expr_ty e)
+{
+ /* Our oparg encodes 2 pieces of information: the conversion
+ character, and whether or not a format_spec was provided.
+
+ Convert the conversion char to 2 bits:
+ None: 000 0x0 FVC_NONE
+ !s : 001 0x1 FVC_STR
+ !r : 010 0x2 FVC_REPR
+ !a : 011 0x3 FVC_ASCII
+
+ next bit is whether or not we have a format spec:
+ yes : 100 0x4
+ no : 000 0x0
+ */
+
+ int oparg;
+
+ /* Evaluate the expression to be formatted. */
+ VISIT(c, expr, e->v.FormattedValue.value);
+
+ switch (e->v.FormattedValue.conversion) {
+ case 's': oparg = FVC_STR; break;
+ case 'r': oparg = FVC_REPR; break;
+ case 'a': oparg = FVC_ASCII; break;
+ case -1: oparg = FVC_NONE; break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "Unrecognized conversion character");
+ return 0;
+ }
+ if (e->v.FormattedValue.format_spec) {
+ /* Evaluate the format spec, and update our opcode arg. */
+ VISIT(c, expr, e->v.FormattedValue.format_spec);
+ oparg |= FVS_HAVE_SPEC;
+ }
+
+ /* And push our opcode and oparg */
+ ADDOP_I(c, FORMAT_VALUE, oparg);
+ return 1;
+}
+
+static int
+compiler_subkwargs(struct compiler *c, asdl_seq *keywords, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ keyword_ty kw;
+ PyObject *keys, *key;
+ assert(n > 0);
+ if (n > 1) {
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ VISIT(c, expr, kw->value);
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return 0;
+ }
+ for (i = begin; i < end; i++) {
+ key = ((keyword_ty) asdl_seq_GET(keywords, i))->arg;
+ Py_INCREF(key);
+ PyTuple_SET_ITEM(keys, i - begin, key);
+ }
+ ADDOP_N(c, LOAD_CONST, keys, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, n);
+ }
+ else {
+ /* a for loop only executes once */
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ ADDOP_O(c, LOAD_CONST, kw->arg, consts);
+ VISIT(c, expr, kw->value);
+ }
+ ADDOP_I(c, BUILD_MAP, n);
+ }
+ return 1;
+}
+
/* shared code between compiler_call and compiler_class */
static int
compiler_call_helper(struct compiler *c,
- Py_ssize_t n, /* Args already pushed */
+ int n, /* Args already pushed */
asdl_seq *args,
asdl_seq *keywords)
{
int code = 0;
- Py_ssize_t nelts, i, nseen, nkw;
+ Py_ssize_t nelts, i, nseen;
+ int nkw;
/* the number of tuples and dictionaries on the stack */
Py_ssize_t nsubargs = 0, nsubkwargs = 0;
@@ -3238,29 +3489,38 @@ compiler_call_helper(struct compiler *c,
if (kw->arg == NULL) {
/* A keyword argument unpacking. */
if (nseen) {
- ADDOP_I(c, BUILD_MAP, nseen);
+ if (nsubkwargs) {
+ if (!compiler_subkwargs(c, keywords, i - nseen, i))
+ return 0;
+ nsubkwargs++;
+ }
+ else {
+ Py_ssize_t j;
+ for (j = 0; j < nseen; j++) {
+ VISIT(c, keyword, asdl_seq_GET(keywords, j));
+ }
+ nkw = nseen;
+ }
nseen = 0;
- nsubkwargs++;
}
VISIT(c, expr, kw->value);
nsubkwargs++;
}
- else if (nsubkwargs) {
- /* A keyword argument and we already have a dict. */
- ADDOP_O(c, LOAD_CONST, kw->arg, consts);
- VISIT(c, expr, kw->value);
- nseen++;
- }
else {
- /* keyword argument */
- VISIT(c, keyword, kw)
- nkw++;
+ nseen++;
}
}
if (nseen) {
- /* Pack up any trailing keyword arguments. */
- ADDOP_I(c, BUILD_MAP, nseen);
- nsubkwargs++;
+ if (nsubkwargs) {
+ /* Pack up any trailing keyword arguments. */
+ if (!compiler_subkwargs(c, keywords, nelts - nseen, nelts))
+ return 0;
+ nsubkwargs++;
+ }
+ else {
+ VISIT_SEQ(c, keyword, keywords);
+ nkw = nseen;
+ }
}
if (nsubkwargs) {
code |= 2;
@@ -3549,6 +3809,8 @@ expr_constant(struct compiler *c, expr_ty e)
switch (e->kind) {
case Ellipsis_kind:
return 1;
+ case Constant_kind:
+ return PyObject_IsTrue(e->v.Constant.value);
case Num_kind:
return PyObject_IsTrue(e->v.Num.n);
case Str_kind:
@@ -3592,9 +3854,9 @@ expr_constant(struct compiler *c, expr_ty e)
BLOCK
finally:
if an exception was raised:
- exc = copy of (exception, instance, traceback)
+ exc = copy of (exception, instance, traceback)
else:
- exc = (None, None, None)
+ exc = (None, None, None)
if not (await exit(*exc)):
raise
*/
@@ -3836,12 +4098,19 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
return compiler_compare(c, e);
case Call_kind:
return compiler_call(c, e);
+ case Constant_kind:
+ ADDOP_O(c, LOAD_CONST, e->v.Constant.value, consts);
+ break;
case Num_kind:
ADDOP_O(c, LOAD_CONST, e->v.Num.n, consts);
break;
case Str_kind:
ADDOP_O(c, LOAD_CONST, e->v.Str.s, consts);
break;
+ case JoinedStr_kind:
+ return compiler_joined_str(c, e);
+ case FormattedValue_kind:
+ return compiler_formatted_value(c, e);
case Bytes_kind:
ADDOP_O(c, LOAD_CONST, e->v.Bytes.s, consts);
break;
@@ -4295,18 +4564,6 @@ assemble_free(struct assembler *a)
PyObject_Free(a->a_postorder);
}
-/* Return the size of a basic block in bytes. */
-
-static int
-instrsize(struct instr *instr)
-{
- if (!instr->i_hasarg)
- return 1; /* 1 byte for the opcode*/
- if (instr->i_oparg > 0xffff)
- return 6; /* 1 (opcode) + 1 (EXTENDED_ARG opcode) + 2 (oparg) + 2(oparg extended) */
- return 3; /* 1 (opcode) + 2 (oparg) */
-}
-
static int
blocksize(basicblock *b)
{
@@ -4314,7 +4571,7 @@ blocksize(basicblock *b)
int size = 0;
for (i = 0; i < b->b_iused; i++)
- size += instrsize(&b->b_instr[i]);
+ size += instrsize(b->b_instr[i].i_oparg);
return size;
}
@@ -4333,7 +4590,6 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_lineno = i->i_lineno - a->a_lineno;
assert(d_bytecode >= 0);
- assert(d_lineno >= 0);
if(d_bytecode == 0 && d_lineno == 0)
return 1;
@@ -4363,9 +4619,21 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_bytecode -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
- assert(d_bytecode <= 255);
- if (d_lineno > 255) {
- int j, nbytes, ncodes = d_lineno / 255;
+ assert(0 <= d_bytecode && d_bytecode <= 255);
+
+ if (d_lineno < -128 || 127 < d_lineno) {
+ int j, nbytes, ncodes, k;
+ if (d_lineno < 0) {
+ k = -128;
+ /* use division on positive numbers */
+ ncodes = (-d_lineno) / 128;
+ }
+ else {
+ k = 127;
+ ncodes = d_lineno / 127;
+ }
+ d_lineno -= ncodes * k;
+ assert(ncodes >= 1);
nbytes = a->a_lnotab_off + 2 * ncodes;
len = PyBytes_GET_SIZE(a->a_lnotab);
if (nbytes >= len) {
@@ -4383,15 +4651,15 @@ assemble_lnotab(struct assembler *a, struct instr *i)
lnotab = (unsigned char *)
PyBytes_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
*lnotab++ = d_bytecode;
- *lnotab++ = 255;
+ *lnotab++ = k;
d_bytecode = 0;
for (j = 1; j < ncodes; j++) {
*lnotab++ = 0;
- *lnotab++ = 255;
+ *lnotab++ = k;
}
- d_lineno -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
+ assert(-128 <= d_lineno && d_lineno <= 127);
len = PyBytes_GET_SIZE(a->a_lnotab);
if (a->a_lnotab_off + 2 >= len) {
@@ -4423,15 +4691,12 @@ assemble_lnotab(struct assembler *a, struct instr *i)
static int
assemble_emit(struct assembler *a, struct instr *i)
{
- int size, arg = 0, ext = 0;
+ int size, arg = 0;
Py_ssize_t len = PyBytes_GET_SIZE(a->a_bytecode);
char *code;
- size = instrsize(i);
- if (i->i_hasarg) {
- arg = i->i_oparg;
- ext = arg >> 16;
- }
+ arg = i->i_oparg;
+ size = instrsize(arg);
if (i->i_lineno && !assemble_lnotab(a, i))
return 0;
if (a->a_offset + size >= len) {
@@ -4442,19 +4707,7 @@ assemble_emit(struct assembler *a, struct instr *i)
}
code = PyBytes_AS_STRING(a->a_bytecode) + a->a_offset;
a->a_offset += size;
- if (size == 6) {
- assert(i->i_hasarg);
- *code++ = (char)EXTENDED_ARG;
- *code++ = ext & 0xff;
- *code++ = ext >> 8;
- arg &= 0xffff;
- }
- *code++ = i->i_opcode;
- if (i->i_hasarg) {
- assert(size == 3 || size == 6);
- *code++ = arg & 0xff;
- *code++ = arg >> 8;
- }
+ write_op_arg((unsigned char*)code, i->i_opcode, arg, size);
return 1;
}
@@ -4462,7 +4715,7 @@ static void
assemble_jump_offsets(struct assembler *a, struct compiler *c)
{
basicblock *b;
- int bsize, totsize, extended_arg_count = 0, last_extended_arg_count;
+ int bsize, totsize, extended_arg_recompile;
int i;
/* Compute the size of each block and fixup jump args.
@@ -4475,27 +4728,26 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
b->b_offset = totsize;
totsize += bsize;
}
- last_extended_arg_count = extended_arg_count;
- extended_arg_count = 0;
+ extended_arg_recompile = 0;
for (b = c->u->u_blocks; b != NULL; b = b->b_list) {
bsize = b->b_offset;
for (i = 0; i < b->b_iused; i++) {
struct instr *instr = &b->b_instr[i];
+ int isize = instrsize(instr->i_oparg);
/* Relative jumps are computed relative to
the instruction pointer after fetching
the jump instruction.
*/
- bsize += instrsize(instr);
- if (instr->i_jabs)
+ bsize += isize;
+ if (instr->i_jabs || instr->i_jrel) {
instr->i_oparg = instr->i_target->b_offset;
- else if (instr->i_jrel) {
- int delta = instr->i_target->b_offset - bsize;
- instr->i_oparg = delta;
+ if (instr->i_jrel) {
+ instr->i_oparg -= bsize;
+ }
+ if (instrsize(instr->i_oparg) != isize) {
+ extended_arg_recompile = 1;
+ }
}
- else
- continue;
- if (instr->i_oparg > 0xffff)
- extended_arg_count++;
}
}
@@ -4505,7 +4757,7 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
The issue is that in the first loop blocksize() is called
which calls instrsize() which requires i_oparg be set
- appropriately. There is a bootstrap problem because
+ appropriately. There is a bootstrap problem because
i_oparg is calculated in the second loop above.
So we loop until we stop seeing new EXTENDED_ARGs.
@@ -4513,7 +4765,7 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
ones in jump instructions. So this should converge
fairly quickly.
*/
- } while (last_extended_arg_count != extended_arg_count);
+ } while (extended_arg_recompile);
}
static PyObject *
@@ -4659,9 +4911,9 @@ dump_instr(const struct instr *i)
char arg[128];
*arg = '\0';
- if (i->i_hasarg)
+ if (HAS_ARG(i->i_opcode)) {
sprintf(arg, "arg: %d ", i->i_oparg);
-
+ }
fprintf(stderr, "line: %d, opcode: %d %s%s%s\n",
i->i_lineno, i->i_opcode, arg, jabs, jrel);
}
@@ -4711,7 +4963,7 @@ assemble(struct compiler *c, int addNone)
/* Set firstlineno if it wasn't explicitly set. */
if (!c->u->u_firstlineno) {
- if (entryblock && entryblock->b_instr)
+ if (entryblock && entryblock->b_instr && entryblock->b_instr->i_lineno)
c->u->u_firstlineno = entryblock->b_instr->i_lineno;
else
c->u->u_firstlineno = 1;
@@ -4749,4 +5001,3 @@ PyAST_Compile(mod_ty mod, const char *filename, PyCompilerFlags *flags,
{
return PyAST_CompileEx(mod, filename, flags, -1, arena);
}
-
diff --git a/Python/dtoa.c b/Python/dtoa.c
index 3da546e..e0665b6 100644
--- a/Python/dtoa.c
+++ b/Python/dtoa.c
@@ -747,7 +747,7 @@ pow5mult(Bigint *b, int k)
{
Bigint *b1, *p5, *p51;
int i;
- static int p05[3] = { 5, 25, 125 };
+ static const int p05[3] = { 5, 25, 125 };
if ((i = k & 3)) {
b = multadd(b, p05[i-1], 0);
@@ -803,7 +803,7 @@ pow5mult(Bigint *b, int k)
{
Bigint *b1, *p5, *p51;
int i;
- static int p05[3] = { 5, 25, 125 };
+ static const int p05[3] = { 5, 25, 125 };
if ((i = k & 3)) {
b = multadd(b, p05[i-1], 0);
@@ -2315,7 +2315,7 @@ rv_alloc(int i)
}
static char *
-nrv_alloc(char *s, char **rve, int n)
+nrv_alloc(const char *s, char **rve, int n)
{
char *rv, *t;
diff --git a/Python/dynload_win.c b/Python/dynload_win.c
index f2c796e..05050cf 100644
--- a/Python/dynload_win.c
+++ b/Python/dynload_win.c
@@ -24,12 +24,10 @@ void _Py_DeactivateActCtx(ULONG_PTR cookie);
#define PYD_DEBUG_SUFFIX ""
#endif
-#define STRINGIZE2(x) #x
-#define STRINGIZE(x) STRINGIZE2(x)
#ifdef PYD_PLATFORM_TAG
-#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"
#else
-#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) ".pyd"
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) ".pyd"
#endif
#define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd"
@@ -43,7 +41,7 @@ const char *_PyImport_DynLoadFiletab[] = {
/* Case insensitive string compare, to avoid any dependencies on particular
C RTL implementations */
-static int strcasecmp (char *string1, char *string2)
+static int strcasecmp (const char *string1, const char *string2)
{
int first, second;
diff --git a/Python/fileutils.c b/Python/fileutils.c
index 23eed71..06531d9 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -683,6 +683,10 @@ _Py_fstat(int fd, struct _Py_stat_struct *status)
{
int res;
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
Py_BEGIN_ALLOW_THREADS
res = _Py_fstat_noraise(fd, status);
Py_END_ALLOW_THREADS
@@ -794,7 +798,7 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
int request;
int err;
#endif
- int flags;
+ int flags, new_flags;
int res;
#endif
@@ -885,10 +889,18 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
return -1;
}
- if (inheritable)
- flags &= ~FD_CLOEXEC;
- else
- flags |= FD_CLOEXEC;
+ if (inheritable) {
+ new_flags = flags & ~FD_CLOEXEC;
+ }
+ else {
+ new_flags = flags | FD_CLOEXEC;
+ }
+
+ if (new_flags == flags) {
+ /* FD_CLOEXEC flag already set/cleared: nothing to do */
+ return 0;
+ }
+
res = fcntl(fd, F_SETFD, flags);
if (res < 0) {
if (raise)
@@ -1169,6 +1181,10 @@ _Py_read(int fd, void *buf, size_t count)
int err;
int async_err = 0;
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
/* _Py_read() must not be called with an exception set, otherwise the
* caller may think that read() was interrupted by a signal and the signal
* handler raised an exception. */
@@ -1324,6 +1340,10 @@ _Py_write_impl(int fd, const void *buf, size_t count, int gil_held)
Py_ssize_t
_Py_write(int fd, const void *buf, size_t count)
{
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
/* _Py_write() must not be called with an exception set, otherwise the
* caller may think that write() was interrupted by a signal and the signal
* handler raised an exception. */
@@ -1473,6 +1493,10 @@ _Py_dup(int fd)
DWORD ftype;
#endif
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
if (!_PyVerify_fd(fd)) {
PyErr_SetFromErrno(PyExc_OSError);
return -1;
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index 8e9c502..d573288 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -656,7 +656,7 @@ fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec,
return 0;
}
-static char no_grouping[1] = {CHAR_MAX};
+static const char no_grouping[1] = {CHAR_MAX};
/* Find the decimal point character(s?), thousands_separator(s?), and
grouping description, either for the current locale if type is
diff --git a/Python/frozen.c b/Python/frozen.c
index 676f395..7e04f3c 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -14,17 +14,15 @@
the appropriate bytes from M___main__.c. */
static unsigned char M___hello__[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
- 0,64,0,0,0,115,20,0,0,0,100,2,0,90,1,0,
- 101,2,0,100,0,0,131,1,0,1,100,1,0,83,40,3,
- 0,0,0,117,12,0,0,0,72,101,108,108,111,32,119,111,
- 114,108,100,33,78,84,40,3,0,0,0,117,4,0,0,0,
- 84,114,117,101,117,11,0,0,0,105,110,105,116,105,97,108,
- 105,122,101,100,117,5,0,0,0,112,114,105,110,116,40,0,
- 0,0,0,40,0,0,0,0,40,0,0,0,0,117,7,0,
- 0,0,102,108,97,103,46,112,121,117,8,0,0,0,60,109,
- 111,100,117,108,101,62,1,0,0,0,115,2,0,0,0,6,
- 1,
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,64,0,0,0,115,16,0,0,0,100,0,90,0,101,1,
+ 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72,
+ 101,108,108,111,32,119,111,114,108,100,33,78,41,2,218,11,
+ 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105,
+ 110,116,169,0,114,3,0,0,0,114,3,0,0,0,250,22,
+ 46,47,84,111,111,108,115,47,102,114,101,101,122,101,47,102,
+ 108,97,103,46,112,121,218,8,60,109,111,100,117,108,101,62,
+ 1,0,0,0,115,2,0,0,0,4,1,
};
#define SIZE (int)sizeof(M___hello__)
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index de8bd35..769b33d 100644
--- a/Python/frozenmain.c
+++ b/Python/frozenmain.c
@@ -99,7 +99,9 @@ Py_FrozenMain(int argc, char **argv)
#ifdef MS_WINDOWS
PyWinFreeze_ExeTerm();
#endif
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ sts = 120;
+ }
error:
PyMem_RawFree(argv_copy);
diff --git a/Python/future.c b/Python/future.c
index 163f87f..75f2107 100644
--- a/Python/future.c
+++ b/Python/future.c
@@ -79,7 +79,10 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, PyObject *filename)
i = 0;
first = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i);
- if (first->kind == Expr_kind && first->v.Expr.value->kind == Str_kind)
+ if (first->kind == Expr_kind
+ && (first->v.Expr.value->kind == Str_kind
+ || (first->v.Expr.value->kind == Constant_kind
+ && PyUnicode_CheckExact(first->v.Expr.value->v.Constant.value))))
i++;
diff --git a/Python/getargs.c b/Python/getargs.c
index 8aab067..cf0ad26 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -18,16 +18,26 @@ int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
const char *, char **, va_list);
+int _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, ...);
+int _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list);
+
#ifdef HAVE_DECLSPEC_DLL
/* Export functions */
-PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, char *, ...);
-PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, char *, ...);
+PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
+PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);
PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
const char *, char **, ...);
PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, char *, va_list);
+PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, const char *, va_list);
PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
const char *, char **, va_list);
+
+PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *, PyObject *,
+ struct _PyArg_Parser *, ...);
+PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list);
#endif
#define FLAG_COMPAT 1
@@ -56,18 +66,20 @@ typedef struct {
/* Forward */
static int vgetargs1(PyObject *, const char *, va_list *, int);
static void seterror(Py_ssize_t, const char *, int *, const char *, const char *);
-static char *convertitem(PyObject *, const char **, va_list *, int, int *,
- char *, size_t, freelist_t *);
-static char *converttuple(PyObject *, const char **, va_list *, int,
- int *, char *, size_t, int, freelist_t *);
-static char *convertsimple(PyObject *, const char **, va_list *, int, char *,
- size_t, freelist_t *);
-static Py_ssize_t convertbuffer(PyObject *, void **p, char **);
-static int getbuffer(PyObject *, Py_buffer *, char**);
+static const char *convertitem(PyObject *, const char **, va_list *, int, int *,
+ char *, size_t, freelist_t *);
+static const char *converttuple(PyObject *, const char **, va_list *, int,
+ int *, char *, size_t, int, freelist_t *);
+static const char *convertsimple(PyObject *, const char **, va_list *, int,
+ char *, size_t, freelist_t *);
+static Py_ssize_t convertbuffer(PyObject *, void **p, const char **);
+static int getbuffer(PyObject *, Py_buffer *, const char**);
static int vgetargskeywords(PyObject *, PyObject *,
const char *, char **, va_list *, int);
-static char *skipitem(const char **, va_list *, int);
+static int vgetargskeywordsfast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list *, int);
+static const char *skipitem(const char **, va_list *, int);
int
PyArg_Parse(PyObject *args, const char *format, ...)
@@ -82,7 +94,7 @@ PyArg_Parse(PyObject *args, const char *format, ...)
}
int
-_PyArg_Parse_SizeT(PyObject *args, char *format, ...)
+_PyArg_Parse_SizeT(PyObject *args, const char *format, ...)
{
int retval;
va_list va;
@@ -107,7 +119,7 @@ PyArg_ParseTuple(PyObject *args, const char *format, ...)
}
int
-_PyArg_ParseTuple_SizeT(PyObject *args, char *format, ...)
+_PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...)
{
int retval;
va_list va;
@@ -130,7 +142,7 @@ PyArg_VaParse(PyObject *args, const char *format, va_list va)
}
int
-_PyArg_VaParse_SizeT(PyObject *args, char *format, va_list va)
+_PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
{
va_list lva;
@@ -208,7 +220,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
int endfmt = 0;
const char *formatsave = format;
Py_ssize_t i, len;
- char *msg;
+ const char *msg;
int compat = flags & FLAG_COMPAT;
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
freelist_t freelist;
@@ -394,7 +406,12 @@ seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
PyOS_snprintf(p, sizeof(buf) - (p - buf), " %.256s", msg);
message = buf;
}
- PyErr_SetString(PyExc_TypeError, message);
+ if (msg[0] == '(') {
+ PyErr_SetString(PyExc_SystemError, message);
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, message);
+ }
}
@@ -416,7 +433,7 @@ seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
and msgbuf is returned.
*/
-static char *
+static const char *
converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
int *levels, char *msgbuf, size_t bufsize, int toplevel,
freelist_t *freelist)
@@ -474,7 +491,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
format = *p_format;
for (i = 0; i < n; i++) {
- char *msg;
+ const char *msg;
PyObject *item;
item = PySequence_GetItem(arg, i);
if (item == NULL) {
@@ -501,11 +518,11 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
/* Convert a single item. */
-static char *
+static const char *
convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
int *levels, char *msgbuf, size_t bufsize, freelist_t *freelist)
{
- char *msg;
+ const char *msg;
const char *format = *p_format;
if (*format == '(' /* ')' */) {
@@ -530,7 +547,7 @@ convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
/* Format an error message generated by convertsimple(). */
-static char *
+static const char *
converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
{
assert(expected != NULL);
@@ -572,7 +589,7 @@ float_argument_error(PyObject *arg)
When you add new format codes, please don't forget poor skipitem() below.
*/
-static char *
+static const char *
convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
char *msgbuf, size_t bufsize, freelist_t *freelist)
{
@@ -857,7 +874,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
case 'y': {/* any bytes-like object */
void **p = (void **)va_arg(*p_va, char **);
- char *buf;
+ const char *buf;
Py_ssize_t count;
if (*format == '*') {
if (getbuffer(arg, (Py_buffer*)p, &buf) < 0)
@@ -904,7 +921,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
PyBuffer_FillInfo(p, arg, sarg, len, 1, 0);
}
else { /* any bytes-like object */
- char *buf;
+ const char *buf;
if (getbuffer(arg, p, &buf) < 0)
return converterr(buf, arg, msgbuf, bufsize);
}
@@ -934,7 +951,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
}
else { /* read-only bytes-like object */
/* XXX Really? */
- char *buf;
+ const char *buf;
Py_ssize_t count = convertbuffer(arg, p, &buf);
if (count < 0)
return converterr(buf, arg, msgbuf, bufsize);
@@ -1051,35 +1068,25 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
return converterr("(AsCharBuffer failed)",
arg, msgbuf, bufsize);
}
- else {
- PyObject *u;
-
- /* Convert object to Unicode */
- u = PyUnicode_FromObject(arg);
- if (u == NULL)
- return converterr(
- "string or unicode or text buffer",
- arg, msgbuf, bufsize);
-
+ else if (PyUnicode_Check(arg)) {
/* Encode object; use default error handling */
- s = PyUnicode_AsEncodedString(u,
+ s = PyUnicode_AsEncodedString(arg,
encoding,
NULL);
- Py_DECREF(u);
if (s == NULL)
return converterr("(encoding failed)",
arg, msgbuf, bufsize);
- if (!PyBytes_Check(s)) {
- Py_DECREF(s);
- return converterr(
- "(encoder failed to return bytes)",
- arg, msgbuf, bufsize);
- }
+ assert(PyBytes_Check(s));
size = PyBytes_GET_SIZE(s);
ptr = PyBytes_AS_STRING(s);
if (ptr == NULL)
ptr = "";
}
+ else {
+ return converterr(
+ recode_strings ? "str" : "str, bytes or bytearray",
+ arg, msgbuf, bufsize);
+ }
/* Write output; output is guaranteed to be 0-terminated */
if (*format == '#') {
@@ -1129,7 +1136,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
} else {
if (size + 1 > BUFFER_LEN) {
Py_DECREF(s);
- PyErr_Format(PyExc_TypeError,
+ PyErr_Format(PyExc_ValueError,
"encoded string too long "
"(%zd, maximum length %zd)",
(Py_ssize_t)size, (Py_ssize_t)(BUFFER_LEN-1));
@@ -1283,7 +1290,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
}
static Py_ssize_t
-convertbuffer(PyObject *arg, void **p, char **errmsg)
+convertbuffer(PyObject *arg, void **p, const char **errmsg)
{
PyBufferProcs *pb = Py_TYPE(arg)->tp_as_buffer;
Py_ssize_t count;
@@ -1305,7 +1312,7 @@ convertbuffer(PyObject *arg, void **p, char **errmsg)
}
static int
-getbuffer(PyObject *arg, Py_buffer *view, char **errmsg)
+getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
{
if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) {
*errmsg = "bytes-like object";
@@ -1423,6 +1430,91 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
}
int
+_PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ parser == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast(args, keywords, parser, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+int
+_PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ parser == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+int
+_PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ parser == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ Py_VA_COPY(lva, va);
+
+ retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
+ return retval;
+}
+
+int
+_PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ parser == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ Py_VA_COPY(lva, va);
+
+ retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
+ return retval;
+}
+
+int
PyArg_ValidateKeywordArguments(PyObject *kwargs)
{
if (!PyDict_Check(kwargs)) {
@@ -1448,7 +1540,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
const char *fname, *msg, *custom_msg, *keyword;
int min = INT_MAX;
int max = INT_MAX;
- int i, len;
+ int i, pos, len;
+ int skip = 0;
Py_ssize_t nargs, nkeywords;
PyObject *current_arg;
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
@@ -1476,9 +1569,17 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
custom_msg++;
}
+ /* scan kwlist and count the number of positional-only parameters */
+ for (pos = 0; kwlist[pos] && !*kwlist[pos]; pos++) {
+ }
/* scan kwlist and get greatest possible nbr of args */
- for (len=0; kwlist[len]; len++)
- continue;
+ for (len = pos; kwlist[len]; len++) {
+ if (!*kwlist[len]) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty keyword parameter name");
+ return cleanreturn(0, &freelist);
+ }
+ }
if (len > STATIC_FREELIST_ENTRIES) {
freelist.entries = PyMem_NEW(freelistentry_t, len);
@@ -1507,7 +1608,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
keyword = kwlist[i];
if (*format == '|') {
if (min != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string (| specified twice)");
return cleanreturn(0, &freelist);
}
@@ -1516,14 +1617,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
format++;
if (max != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string ($ before |)");
return cleanreturn(0, &freelist);
}
}
if (*format == '$') {
if (max != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string ($ specified twice)");
return cleanreturn(0, &freelist);
}
@@ -1531,6 +1632,17 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
max = i;
format++;
+ if (max < pos) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty parameter name after $");
+ return cleanreturn(0, &freelist);
+ }
+ if (skip) {
+ /* Now we know the minimal and the maximal numbers of
+ * positional arguments and can raise an exception with
+ * informative message (see below). */
+ break;
+ }
if (max < nargs) {
PyErr_Format(PyExc_TypeError,
"Function takes %s %d positional arguments"
@@ -1541,28 +1653,347 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
}
}
if (IS_END_OF_FORMAT(*format)) {
- PyErr_Format(PyExc_RuntimeError,
+ PyErr_Format(PyExc_SystemError,
"More keyword list entries (%d) than "
"format specifiers (%d)", len, i);
return cleanreturn(0, &freelist);
}
+ if (!skip) {
+ current_arg = NULL;
+ if (nkeywords && i >= pos) {
+ current_arg = PyDict_GetItemString(keywords, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
+ }
+ if (current_arg) {
+ --nkeywords;
+ if (i < nargs) {
+ /* arg present in tuple and in dict */
+ PyErr_Format(PyExc_TypeError,
+ "Argument given by name ('%s') "
+ "and position (%d)",
+ keyword, i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ else if (i < nargs)
+ current_arg = PyTuple_GET_ITEM(args, i);
+
+ if (current_arg) {
+ msg = convertitem(current_arg, &format, p_va, flags,
+ levels, msgbuf, sizeof(msgbuf), &freelist);
+ if (msg) {
+ seterror(i+1, msg, levels, fname, custom_msg);
+ return cleanreturn(0, &freelist);
+ }
+ continue;
+ }
+
+ if (i < min) {
+ if (i < pos) {
+ assert (min == INT_MAX);
+ assert (max == INT_MAX);
+ skip = 1;
+ /* At that moment we still don't know the minimal and
+ * the maximal numbers of positional arguments. Raising
+ * an exception is deferred until we encounter | and $
+ * or the end of the format. */
+ }
+ else {
+ PyErr_Format(PyExc_TypeError, "Required argument "
+ "'%s' (pos %d) not found",
+ keyword, i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ /* current code reports success when all required args
+ * fulfilled and no keyword args left, with no further
+ * validation. XXX Maybe skip this in debug build ?
+ */
+ if (!nkeywords && !skip) {
+ return cleanreturn(1, &freelist);
+ }
+ }
+
+ /* We are into optional args, skip thru to any remaining
+ * keyword args */
+ msg = skipitem(&format, p_va, flags);
+ if (msg) {
+ PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
+ format);
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ if (skip) {
+ PyErr_Format(PyExc_TypeError,
+ "Function takes %s %d positional arguments"
+ " (%d given)",
+ (Py_MIN(pos, min) < i) ? "at least" : "exactly",
+ Py_MIN(pos, min), nargs);
+ return cleanreturn(0, &freelist);
+ }
+
+ if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
+ PyErr_Format(PyExc_SystemError,
+ "more argument specifiers than keyword list entries "
+ "(remaining format:'%s')", format);
+ return cleanreturn(0, &freelist);
+ }
+
+ /* make sure there are no extraneous keyword arguments */
+ if (nkeywords > 0) {
+ PyObject *key, *value;
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(keywords, &pos, &key, &value)) {
+ int match = 0;
+ if (!PyUnicode_Check(key)) {
+ PyErr_SetString(PyExc_TypeError,
+ "keywords must be strings");
+ return cleanreturn(0, &freelist);
+ }
+ for (i = 0; i < len; i++) {
+ if (*kwlist[i] && !PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
+ match = 1;
+ break;
+ }
+ }
+ if (!match) {
+ PyErr_Format(PyExc_TypeError,
+ "'%U' is an invalid keyword "
+ "argument for this function",
+ key);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ }
+
+ return cleanreturn(1, &freelist);
+}
+
+
+/* List of static parsers. */
+static struct _PyArg_Parser *static_arg_parsers = NULL;
+
+static int
+parser_init(struct _PyArg_Parser *parser)
+{
+ const char * const *keywords;
+ const char *format, *msg;
+ int i, len, min, max, nkw;
+ PyObject *kwtuple;
+
+ assert(parser->format != NULL);
+ assert(parser->keywords != NULL);
+ if (parser->kwtuple != NULL) {
+ return 1;
+ }
+
+ /* grab the function name or custom error msg first (mutually exclusive) */
+ parser->fname = strchr(parser->format, ':');
+ if (parser->fname) {
+ parser->fname++;
+ parser->custom_msg = NULL;
+ }
+ else {
+ parser->custom_msg = strchr(parser->format,';');
+ if (parser->custom_msg)
+ parser->custom_msg++;
+ }
+
+ keywords = parser->keywords;
+ /* scan keywords and count the number of positional-only parameters */
+ for (i = 0; keywords[i] && !*keywords[i]; i++) {
+ }
+ parser->pos = i;
+ /* scan keywords and get greatest possible nbr of args */
+ for (; keywords[i]; i++) {
+ if (!*keywords[i]) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty keyword parameter name");
+ return 0;
+ }
+ }
+ len = i;
+
+ min = max = INT_MAX;
+ format = parser->format;
+ for (i = 0; i < len; i++) {
+ if (*format == '|') {
+ if (min != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string (| specified twice)");
+ return 0;
+ }
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ before |)");
+ return 0;
+ }
+ min = i;
+ format++;
+ }
+ if (*format == '$') {
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ specified twice)");
+ return 0;
+ }
+ if (i < parser->pos) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty parameter name after $");
+ return 0;
+ }
+ max = i;
+ format++;
+ }
+ if (IS_END_OF_FORMAT(*format)) {
+ PyErr_Format(PyExc_SystemError,
+ "More keyword list entries (%d) than "
+ "format specifiers (%d)", len, i);
+ return 0;
+ }
+
+ msg = skipitem(&format, NULL, 0);
+ if (msg) {
+ PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
+ format);
+ return 0;
+ }
+ }
+ parser->min = Py_MIN(min, len);
+ parser->max = Py_MIN(max, len);
+
+ if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
+ PyErr_Format(PyExc_SystemError,
+ "more argument specifiers than keyword list entries "
+ "(remaining format:'%s')", format);
+ return 0;
+ }
+
+ nkw = len - parser->pos;
+ kwtuple = PyTuple_New(nkw);
+ if (kwtuple == NULL) {
+ return 0;
+ }
+ keywords = parser->keywords + parser->pos;
+ for (i = 0; i < nkw; i++) {
+ PyObject *str = PyUnicode_FromString(keywords[i]);
+ if (str == NULL) {
+ Py_DECREF(kwtuple);
+ return 0;
+ }
+ PyUnicode_InternInPlace(&str);
+ PyTuple_SET_ITEM(kwtuple, i, str);
+ }
+ parser->kwtuple = kwtuple;
+
+ assert(parser->next == NULL);
+ parser->next = static_arg_parsers;
+ static_arg_parsers = parser;
+ return 1;
+}
+
+static void
+parser_clear(struct _PyArg_Parser *parser)
+{
+ Py_CLEAR(parser->kwtuple);
+}
+
+static int
+vgetargskeywordsfast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser,
+ va_list *p_va, int flags)
+{
+ PyObject *kwtuple;
+ char msgbuf[512];
+ int levels[32];
+ const char *format;
+ const char *msg;
+ PyObject *keyword;
+ int i, pos, len;
+ Py_ssize_t nargs, nkeywords;
+ PyObject *current_arg;
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist;
+
+ freelist.entries = static_entries;
+ freelist.first_available = 0;
+ freelist.entries_malloced = 0;
+
+ assert(args != NULL && PyTuple_Check(args));
+ assert(keywords == NULL || PyDict_Check(keywords));
+ assert(parser != NULL);
+ assert(p_va != NULL);
+
+ if (!parser_init(parser)) {
+ return 0;
+ }
+
+ kwtuple = parser->kwtuple;
+ pos = parser->pos;
+ len = pos + PyTuple_GET_SIZE(kwtuple);
+
+ if (len > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, len);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
+ }
+
+ nargs = PyTuple_GET_SIZE(args);
+ nkeywords = (keywords == NULL) ? 0 : PyDict_Size(keywords);
+ if (nargs + nkeywords > len) {
+ PyErr_Format(PyExc_TypeError,
+ "%s%s takes at most %d argument%s (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ len,
+ (len == 1) ? "" : "s",
+ nargs + nkeywords);
+ return cleanreturn(0, &freelist);
+ }
+ if (parser->max < nargs) {
+ PyErr_Format(PyExc_TypeError,
+ "Function takes %s %d positional arguments (%d given)",
+ (parser->min != INT_MAX) ? "at most" : "exactly",
+ parser->max, nargs);
+ return cleanreturn(0, &freelist);
+ }
+
+ format = parser->format;
+ /* convert tuple args and keyword args in same loop, using kwtuple to drive process */
+ for (i = 0; i < len; i++) {
+ keyword = (i >= pos) ? PyTuple_GET_ITEM(kwtuple, i - pos) : NULL;
+ if (*format == '|') {
+ format++;
+ }
+ if (*format == '$') {
+ format++;
+ }
+ assert(!IS_END_OF_FORMAT(*format));
+
current_arg = NULL;
- if (nkeywords) {
- current_arg = PyDict_GetItemString(keywords, keyword);
+ if (nkeywords && i >= pos) {
+ current_arg = PyDict_GetItem(keywords, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
}
if (current_arg) {
--nkeywords;
if (i < nargs) {
/* arg present in tuple and in dict */
PyErr_Format(PyExc_TypeError,
- "Argument given by name ('%s') "
+ "Argument given by name ('%U') "
"and position (%d)",
keyword, i+1);
return cleanreturn(0, &freelist);
}
}
- else if (nkeywords && PyErr_Occurred())
- return cleanreturn(0, &freelist);
else if (i < nargs)
current_arg = PyTuple_GET_ITEM(args, i);
@@ -1570,64 +2001,63 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
msg = convertitem(current_arg, &format, p_va, flags,
levels, msgbuf, sizeof(msgbuf), &freelist);
if (msg) {
- seterror(i+1, msg, levels, fname, custom_msg);
+ seterror(i+1, msg, levels, parser->fname, parser->custom_msg);
return cleanreturn(0, &freelist);
}
continue;
}
- if (i < min) {
- PyErr_Format(PyExc_TypeError, "Required argument "
- "'%s' (pos %d) not found",
- keyword, i+1);
+ if (i < parser->min) {
+ /* Less arguments than required */
+ if (i < pos) {
+ PyErr_Format(PyExc_TypeError,
+ "Function takes %s %d positional arguments"
+ " (%d given)",
+ (Py_MIN(pos, parser->min) < parser->max) ? "at least" : "exactly",
+ Py_MIN(pos, parser->min), nargs);
+ }
+ else {
+ PyErr_Format(PyExc_TypeError, "Required argument "
+ "'%U' (pos %d) not found",
+ keyword, i+1);
+ }
return cleanreturn(0, &freelist);
}
/* current code reports success when all required args
* fulfilled and no keyword args left, with no further
* validation. XXX Maybe skip this in debug build ?
*/
- if (!nkeywords)
+ if (!nkeywords) {
return cleanreturn(1, &freelist);
+ }
/* We are into optional args, skip thru to any remaining
* keyword args */
msg = skipitem(&format, p_va, flags);
- if (msg) {
- PyErr_Format(PyExc_RuntimeError, "%s: '%s'", msg,
- format);
- return cleanreturn(0, &freelist);
- }
+ assert(msg == NULL);
}
- if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
- PyErr_Format(PyExc_RuntimeError,
- "more argument specifiers than keyword list entries "
- "(remaining format:'%s')", format);
- return cleanreturn(0, &freelist);
- }
+ assert(IS_END_OF_FORMAT(*format) || (*format == '|') || (*format == '$'));
/* make sure there are no extraneous keyword arguments */
if (nkeywords > 0) {
PyObject *key, *value;
Py_ssize_t pos = 0;
while (PyDict_Next(keywords, &pos, &key, &value)) {
- int match = 0;
+ int match;
if (!PyUnicode_Check(key)) {
PyErr_SetString(PyExc_TypeError,
"keywords must be strings");
return cleanreturn(0, &freelist);
}
- for (i = 0; i < len; i++) {
- if (!PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
- match = 1;
- break;
+ match = PySequence_Contains(kwtuple, key);
+ if (match <= 0) {
+ if (!match) {
+ PyErr_Format(PyExc_TypeError,
+ "'%U' is an invalid keyword "
+ "argument for this function",
+ key);
}
- }
- if (!match) {
- PyErr_Format(PyExc_TypeError,
- "'%U' is an invalid keyword "
- "argument for this function",
- key);
return cleanreturn(0, &freelist);
}
}
@@ -1637,7 +2067,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
}
-static char *
+static const char *
skipitem(const char **p_format, va_list *p_va, int flags)
{
const char *format = *p_format;
@@ -1673,7 +2103,9 @@ skipitem(const char **p_format, va_list *p_va, int flags)
case 'Y': /* string object */
case 'U': /* unicode string object */
{
- (void) va_arg(*p_va, void *);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, void *);
+ }
break;
}
@@ -1681,7 +2113,9 @@ skipitem(const char **p_format, va_list *p_va, int flags)
case 'e': /* string with encoding */
{
- (void) va_arg(*p_va, const char *);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, const char *);
+ }
if (!(*format == 's' || *format == 't'))
/* after 'e', only 's' and 't' is allowed */
goto err;
@@ -1696,12 +2130,16 @@ skipitem(const char **p_format, va_list *p_va, int flags)
case 'Z': /* unicode string or None */
case 'w': /* buffer, read-write */
{
- (void) va_arg(*p_va, char **);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, char **);
+ }
if (*format == '#') {
- if (flags & FLAG_SIZE_T)
- (void) va_arg(*p_va, Py_ssize_t *);
- else
- (void) va_arg(*p_va, int *);
+ if (p_va != NULL) {
+ if (flags & FLAG_SIZE_T)
+ (void) va_arg(*p_va, Py_ssize_t *);
+ else
+ (void) va_arg(*p_va, int *);
+ }
format++;
} else if ((c == 's' || c == 'z' || c == 'y') && *format == '*') {
format++;
@@ -1713,24 +2151,30 @@ skipitem(const char **p_format, va_list *p_va, int flags)
{
if (*format == '!') {
format++;
- (void) va_arg(*p_va, PyTypeObject*);
- (void) va_arg(*p_va, PyObject **);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, PyTypeObject*);
+ (void) va_arg(*p_va, PyObject **);
+ }
}
else if (*format == '&') {
typedef int (*converter)(PyObject *, void *);
- (void) va_arg(*p_va, converter);
- (void) va_arg(*p_va, void *);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, converter);
+ (void) va_arg(*p_va, void *);
+ }
format++;
}
else {
- (void) va_arg(*p_va, PyObject **);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, PyObject **);
+ }
}
break;
}
case '(': /* bypass tuple, not handled at all previously */
{
- char *msg;
+ const char *msg;
for (;;) {
if (*format==')')
break;
@@ -1766,16 +2210,9 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
PyObject **o;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
- va_start(vargs, max);
-#else
- va_start(vargs);
-#endif
-
assert(min >= 0);
assert(min <= max);
if (!PyTuple_Check(args)) {
- va_end(vargs);
PyErr_SetString(PyExc_SystemError,
"PyArg_UnpackTuple() argument list is not a tuple");
return 0;
@@ -1793,9 +2230,10 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
"unpacked tuple should have %s%zd elements,"
" but has %zd",
(min == max ? "" : "at least "), min, l);
- va_end(vargs);
return 0;
}
+ if (l == 0)
+ return 1;
if (l > max) {
if (name != NULL)
PyErr_Format(
@@ -1808,9 +2246,14 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
"unpacked tuple should have %s%zd elements,"
" but has %zd",
(min == max ? "" : "at most "), max, l);
- va_end(vargs);
return 0;
}
+
+#ifdef HAVE_STDARG_PROTOTYPES
+ va_start(vargs, max);
+#else
+ va_start(vargs);
+#endif
for (i = 0; i < l; i++) {
o = va_arg(vargs, PyObject **);
*o = PyTuple_GET_ITEM(args, i);
@@ -1860,6 +2303,19 @@ _PyArg_NoPositional(const char *funcname, PyObject *args)
return 0;
}
+void
+_PyArg_Fini(void)
+{
+ struct _PyArg_Parser *tmp, *s = static_arg_parsers;
+ while (s) {
+ tmp = s->next;
+ s->next = NULL;
+ parser_clear(s);
+ s = tmp;
+ }
+ static_arg_parsers = NULL;
+}
+
#ifdef __cplusplus
};
#endif
diff --git a/Python/graminit.c b/Python/graminit.c
index 8212b2a..354dc12 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -204,11 +204,13 @@ static arc arcs_9_6[2] = {
{32, 7},
{0, 6},
};
-static arc arcs_9_7[2] = {
+static arc arcs_9_7[3] = {
{30, 12},
{34, 3},
+ {0, 7},
};
-static arc arcs_9_8[1] = {
+static arc arcs_9_8[2] = {
+ {32, 13},
{0, 8},
};
static arc arcs_9_9[2] = {
@@ -221,35 +223,39 @@ static arc arcs_9_10[3] = {
{0, 10},
};
static arc arcs_9_11[3] = {
- {30, 13},
- {32, 14},
+ {30, 14},
+ {32, 15},
{0, 11},
};
static arc arcs_9_12[3] = {
{32, 7},
- {31, 15},
+ {31, 16},
{0, 12},
};
-static arc arcs_9_13[2] = {
- {32, 14},
+static arc arcs_9_13[1] = {
{0, 13},
};
static arc arcs_9_14[2] = {
- {30, 16},
+ {32, 15},
+ {0, 14},
+};
+static arc arcs_9_15[3] = {
+ {30, 17},
{34, 3},
+ {0, 15},
};
-static arc arcs_9_15[1] = {
+static arc arcs_9_16[1] = {
{26, 6},
};
-static arc arcs_9_16[3] = {
- {32, 14},
- {31, 17},
- {0, 16},
+static arc arcs_9_17[3] = {
+ {32, 15},
+ {31, 18},
+ {0, 17},
};
-static arc arcs_9_17[1] = {
- {26, 13},
+static arc arcs_9_18[1] = {
+ {26, 14},
};
-static state states_9[18] = {
+static state states_9[19] = {
{3, arcs_9_0},
{3, arcs_9_1},
{3, arcs_9_2},
@@ -257,17 +263,18 @@ static state states_9[18] = {
{1, arcs_9_4},
{4, arcs_9_5},
{2, arcs_9_6},
- {2, arcs_9_7},
- {1, arcs_9_8},
+ {3, arcs_9_7},
+ {2, arcs_9_8},
{2, arcs_9_9},
{3, arcs_9_10},
{3, arcs_9_11},
{3, arcs_9_12},
- {2, arcs_9_13},
+ {1, arcs_9_13},
{2, arcs_9_14},
- {1, arcs_9_15},
- {3, arcs_9_16},
- {1, arcs_9_17},
+ {3, arcs_9_15},
+ {1, arcs_9_16},
+ {3, arcs_9_17},
+ {1, arcs_9_18},
};
static arc arcs_10_0[1] = {
{23, 1},
@@ -319,11 +326,13 @@ static arc arcs_11_6[2] = {
{32, 7},
{0, 6},
};
-static arc arcs_11_7[2] = {
+static arc arcs_11_7[3] = {
{36, 12},
{34, 3},
+ {0, 7},
};
-static arc arcs_11_8[1] = {
+static arc arcs_11_8[2] = {
+ {32, 13},
{0, 8},
};
static arc arcs_11_9[2] = {
@@ -336,35 +345,39 @@ static arc arcs_11_10[3] = {
{0, 10},
};
static arc arcs_11_11[3] = {
- {36, 13},
- {32, 14},
+ {36, 14},
+ {32, 15},
{0, 11},
};
static arc arcs_11_12[3] = {
{32, 7},
- {31, 15},
+ {31, 16},
{0, 12},
};
-static arc arcs_11_13[2] = {
- {32, 14},
+static arc arcs_11_13[1] = {
{0, 13},
};
static arc arcs_11_14[2] = {
- {36, 16},
+ {32, 15},
+ {0, 14},
+};
+static arc arcs_11_15[3] = {
+ {36, 17},
{34, 3},
+ {0, 15},
};
-static arc arcs_11_15[1] = {
+static arc arcs_11_16[1] = {
{26, 6},
};
-static arc arcs_11_16[3] = {
- {32, 14},
- {31, 17},
- {0, 16},
+static arc arcs_11_17[3] = {
+ {32, 15},
+ {31, 18},
+ {0, 17},
};
-static arc arcs_11_17[1] = {
- {26, 13},
+static arc arcs_11_18[1] = {
+ {26, 14},
};
-static state states_11[18] = {
+static state states_11[19] = {
{3, arcs_11_0},
{3, arcs_11_1},
{3, arcs_11_2},
@@ -372,17 +385,18 @@ static state states_11[18] = {
{1, arcs_11_4},
{4, arcs_11_5},
{2, arcs_11_6},
- {2, arcs_11_7},
- {1, arcs_11_8},
+ {3, arcs_11_7},
+ {2, arcs_11_8},
{2, arcs_11_9},
{3, arcs_11_10},
{3, arcs_11_11},
{3, arcs_11_12},
- {2, arcs_11_13},
+ {1, arcs_11_13},
{2, arcs_11_14},
- {1, arcs_11_15},
- {3, arcs_11_16},
- {1, arcs_11_17},
+ {3, arcs_11_15},
+ {1, arcs_11_16},
+ {3, arcs_11_17},
+ {1, arcs_11_18},
};
static arc arcs_12_0[1] = {
{23, 1},
@@ -1879,11 +1893,11 @@ static dfa dfas[85] = {
"\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{264, "parameters", 0, 4, states_8,
"\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
- {265, "typedargslist", 0, 18, states_9,
+ {265, "typedargslist", 0, 19, states_9,
"\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{266, "tfpdef", 0, 4, states_10,
"\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
- {267, "varargslist", 0, 18, states_11,
+ {267, "varargslist", 0, 19, states_11,
"\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{268, "vfpdef", 0, 2, states_12,
"\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
diff --git a/Python/import.c b/Python/import.c
index 5025e75..f3aa9d4 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -38,14 +38,6 @@ module _imp
#include "clinic/import.c.h"
-/*[python input]
-class fs_unicode_converter(CConverter):
- type = 'PyObject *'
- converter = 'PyUnicode_FSDecoder'
-
-[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=9d6786230166006e]*/
-
/* Initialize things */
void
@@ -320,7 +312,7 @@ PyImport_GetModuleDict(void)
/* List of names to clear in sys */
-static char* sys_deletes[] = {
+static const char * const sys_deletes[] = {
"path", "argv", "ps1", "ps2",
"last_type", "last_value", "last_traceback",
"path_hooks", "path_importer_cache", "meta_path",
@@ -330,7 +322,7 @@ static char* sys_deletes[] = {
NULL
};
-static char* sys_files[] = {
+static const char * const sys_files[] = {
"stdin", "__stdin__",
"stdout", "__stdout__",
"stderr", "__stderr__",
@@ -347,7 +339,7 @@ PyImport_Cleanup(void)
PyInterpreterState *interp = PyThreadState_GET()->interp;
PyObject *modules = interp->modules;
PyObject *weaklist = NULL;
- char **p;
+ const char * const *p;
if (modules == NULL)
return; /* Already done */
@@ -883,10 +875,8 @@ update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
if (PyUnicode_Compare(co->co_filename, oldname))
return;
- tmp = co->co_filename;
- co->co_filename = newname;
- Py_INCREF(co->co_filename);
- Py_DECREF(tmp);
+ Py_INCREF(newname);
+ Py_XSETREF(co->co_filename, newname);
constants = co->co_consts;
n = PyTuple_GET_SIZE(constants);
@@ -960,12 +950,13 @@ is_builtin(PyObject *name)
}
-/* Return an importer object for a sys.path/pkg.__path__ item 'p',
+/* Return a finder object for a sys.path/pkg.__path__ item 'p',
possibly by fetching it from the path_importer_cache dict. If it
wasn't yet cached, traverse path_hooks until a hook is found
that can handle the path item. Return None if no hook could;
- this tells our caller it should fall back to the builtin
- import mechanism. Cache the result in path_importer_cache.
+ this tells our caller that the path based finder could not find
+ a finder for this path item. Cache the result in
+ path_importer_cache.
Returns a borrowed reference. */
static PyObject *
@@ -1331,10 +1322,8 @@ remove_importlib_frames(void)
(always_trim ||
PyUnicode_CompareWithASCIIString(code->co_name,
remove_frames) == 0)) {
- PyObject *tmp = *outer_link;
- *outer_link = next;
Py_XINCREF(next);
- Py_DECREF(tmp);
+ Py_XSETREF(*outer_link, next);
prev_link = outer_link;
}
else {
@@ -1347,61 +1336,170 @@ done:
}
-PyObject *
-PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
- PyObject *locals, PyObject *given_fromlist,
- int level)
+static PyObject *
+resolve_name(PyObject *name, PyObject *globals, int level)
{
- _Py_IDENTIFIER(__import__);
_Py_IDENTIFIER(__spec__);
- _Py_IDENTIFIER(_initializing);
_Py_IDENTIFIER(__package__);
_Py_IDENTIFIER(__path__);
_Py_IDENTIFIER(__name__);
- _Py_IDENTIFIER(_find_and_load);
- _Py_IDENTIFIER(_handle_fromlist);
- _Py_IDENTIFIER(_lock_unlock_module);
- _Py_static_string(single_dot, ".");
- PyObject *abs_name = NULL;
- PyObject *builtins_import = NULL;
- PyObject *final_mod = NULL;
- PyObject *mod = NULL;
+ _Py_IDENTIFIER(parent);
+ PyObject *abs_name;
PyObject *package = NULL;
- PyObject *globals = NULL;
- PyObject *fromlist = NULL;
+ PyObject *spec;
PyInterpreterState *interp = PyThreadState_GET()->interp;
- int has_from;
+ Py_ssize_t last_dot;
+ PyObject *base;
+ int level_up;
+
+ if (globals == NULL) {
+ PyErr_SetString(PyExc_KeyError, "'__name__' not in globals");
+ goto error;
+ }
+ if (!PyDict_Check(globals)) {
+ PyErr_SetString(PyExc_TypeError, "globals must be a dict");
+ goto error;
+ }
+ package = _PyDict_GetItemId(globals, &PyId___package__);
+ if (package == Py_None) {
+ package = NULL;
+ }
+ spec = _PyDict_GetItemId(globals, &PyId___spec__);
+
+ if (package != NULL) {
+ Py_INCREF(package);
+ if (!PyUnicode_Check(package)) {
+ PyErr_SetString(PyExc_TypeError, "package must be a string");
+ goto error;
+ }
+ else if (spec != NULL && spec != Py_None) {
+ int equal;
+ PyObject *parent = _PyObject_GetAttrId(spec, &PyId_parent);
+ if (parent == NULL) {
+ goto error;
+ }
- /* Make sure to use default values so as to not have
- PyObject_CallMethodObjArgs() truncate the parameter list because of a
- NULL argument. */
- if (given_globals == NULL) {
- globals = PyDict_New();
- if (globals == NULL) {
+ equal = PyObject_RichCompareBool(package, parent, Py_EQ);
+ Py_DECREF(parent);
+ if (equal < 0) {
+ goto error;
+ }
+ else if (equal == 0) {
+ if (PyErr_WarnEx(PyExc_ImportWarning,
+ "__package__ != __spec__.parent", 1) < 0) {
+ goto error;
+ }
+ }
+ }
+ }
+ else if (spec != NULL && spec != Py_None) {
+ package = _PyObject_GetAttrId(spec, &PyId_parent);
+ if (package == NULL) {
+ goto error;
+ }
+ else if (!PyUnicode_Check(package)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__spec__.parent must be a string");
goto error;
}
}
else {
- /* Only have to care what given_globals is if it will be used
- for something. */
- if (level > 0 && !PyDict_Check(given_globals)) {
- PyErr_SetString(PyExc_TypeError, "globals must be a dict");
+ if (PyErr_WarnEx(PyExc_ImportWarning,
+ "can't resolve package from __spec__ or __package__, "
+ "falling back on __name__ and __path__", 1) < 0) {
goto error;
}
- globals = given_globals;
- Py_INCREF(globals);
+
+ package = _PyDict_GetItemId(globals, &PyId___name__);
+ if (package == NULL) {
+ PyErr_SetString(PyExc_KeyError, "'__name__' not in globals");
+ goto error;
+ }
+
+ Py_INCREF(package);
+ if (!PyUnicode_Check(package)) {
+ PyErr_SetString(PyExc_TypeError, "__name__ must be a string");
+ goto error;
+ }
+
+ if (_PyDict_GetItemId(globals, &PyId___path__) == NULL) {
+ Py_ssize_t dot;
+
+ if (PyUnicode_READY(package) < 0) {
+ goto error;
+ }
+
+ dot = PyUnicode_FindChar(package, '.',
+ 0, PyUnicode_GET_LENGTH(package), -1);
+ if (dot == -2) {
+ goto error;
+ }
+
+ if (dot >= 0) {
+ PyObject *substr = PyUnicode_Substring(package, 0, dot);
+ if (substr == NULL) {
+ goto error;
+ }
+ Py_SETREF(package, substr);
+ }
+ }
+ }
+
+ last_dot = PyUnicode_GET_LENGTH(package);
+ if (last_dot == 0) {
+ PyErr_SetString(PyExc_ImportError,
+ "attempted relative import with no known parent package");
+ goto error;
+ }
+ else if (PyDict_GetItem(interp->modules, package) == NULL) {
+ PyErr_Format(PyExc_SystemError,
+ "Parent module %R not loaded, cannot perform relative "
+ "import", package);
+ goto error;
}
- if (given_fromlist == NULL) {
- fromlist = PyList_New(0);
- if (fromlist == NULL) {
+ for (level_up = 1; level_up < level; level_up += 1) {
+ last_dot = PyUnicode_FindChar(package, '.', 0, last_dot, -1);
+ if (last_dot == -2) {
+ goto error;
+ }
+ else if (last_dot == -1) {
+ PyErr_SetString(PyExc_ValueError,
+ "attempted relative import beyond top-level "
+ "package");
goto error;
}
}
- else {
- fromlist = given_fromlist;
- Py_INCREF(fromlist);
+
+ base = PyUnicode_Substring(package, 0, last_dot);
+ Py_DECREF(package);
+ if (base == NULL || PyUnicode_GET_LENGTH(name) == 0) {
+ return base;
}
+
+ abs_name = PyUnicode_FromFormat("%U.%U", base, name);
+ Py_DECREF(base);
+ return abs_name;
+
+ error:
+ Py_XDECREF(package);
+ return NULL;
+}
+
+PyObject *
+PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
+ PyObject *locals, PyObject *fromlist,
+ int level)
+{
+ _Py_IDENTIFIER(_find_and_load);
+ _Py_IDENTIFIER(_handle_fromlist);
+ PyObject *abs_name = NULL;
+ PyObject *final_mod = NULL;
+ PyObject *mod = NULL;
+ PyObject *package = NULL;
+ PyInterpreterState *interp = PyThreadState_GET()->interp;
+ int has_from;
+
if (name == NULL) {
PyErr_SetString(PyExc_ValueError, "Empty module name");
goto error;
@@ -1414,128 +1512,28 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
PyErr_SetString(PyExc_TypeError, "module name must be a string");
goto error;
}
- else if (PyUnicode_READY(name) < 0) {
+ if (PyUnicode_READY(name) < 0) {
goto error;
}
if (level < 0) {
PyErr_SetString(PyExc_ValueError, "level must be >= 0");
goto error;
}
- else if (level > 0) {
- package = _PyDict_GetItemId(globals, &PyId___package__);
- if (package != NULL && package != Py_None) {
- Py_INCREF(package);
- if (!PyUnicode_Check(package)) {
- PyErr_SetString(PyExc_TypeError, "package must be a string");
- goto error;
- }
- }
- else {
- package = _PyDict_GetItemId(globals, &PyId___name__);
- if (package == NULL) {
- PyErr_SetString(PyExc_KeyError, "'__name__' not in globals");
- goto error;
- }
- else if (!PyUnicode_Check(package)) {
- PyErr_SetString(PyExc_TypeError, "__name__ must be a string");
- goto error;
- }
- Py_INCREF(package);
-
- if (_PyDict_GetItemId(globals, &PyId___path__) == NULL) {
- PyObject *partition = NULL;
- PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot);
- if (borrowed_dot == NULL) {
- goto error;
- }
- partition = PyUnicode_RPartition(package, borrowed_dot);
- Py_DECREF(package);
- if (partition == NULL) {
- goto error;
- }
- package = PyTuple_GET_ITEM(partition, 0);
- Py_INCREF(package);
- Py_DECREF(partition);
- }
- }
- if (PyDict_GetItem(interp->modules, package) == NULL) {
- PyErr_Format(PyExc_SystemError,
- "Parent module %R not loaded, cannot perform relative "
- "import", package);
+ if (level > 0) {
+ abs_name = resolve_name(name, globals, level);
+ if (abs_name == NULL)
goto error;
- }
}
else { /* level == 0 */
if (PyUnicode_GET_LENGTH(name) == 0) {
PyErr_SetString(PyExc_ValueError, "Empty module name");
goto error;
}
- package = Py_None;
- Py_INCREF(package);
- }
-
- if (level > 0) {
- Py_ssize_t last_dot = PyUnicode_GET_LENGTH(package);
- PyObject *base = NULL;
- int level_up = 1;
-
- for (level_up = 1; level_up < level; level_up += 1) {
- last_dot = PyUnicode_FindChar(package, '.', 0, last_dot, -1);
- if (last_dot == -2) {
- goto error;
- }
- else if (last_dot == -1) {
- PyErr_SetString(PyExc_ValueError,
- "attempted relative import beyond top-level "
- "package");
- goto error;
- }
- }
-
- base = PyUnicode_Substring(package, 0, last_dot);
- if (base == NULL)
- goto error;
-
- if (PyUnicode_GET_LENGTH(name) > 0) {
- PyObject *borrowed_dot, *seq = NULL;
-
- borrowed_dot = _PyUnicode_FromId(&single_dot);
- seq = PyTuple_Pack(2, base, name);
- Py_DECREF(base);
- if (borrowed_dot == NULL || seq == NULL) {
- goto error;
- }
-
- abs_name = PyUnicode_Join(borrowed_dot, seq);
- Py_DECREF(seq);
- if (abs_name == NULL) {
- goto error;
- }
- }
- else {
- abs_name = base;
- }
- }
- else {
abs_name = name;
Py_INCREF(abs_name);
}
-#ifdef WITH_THREAD
- _PyImport_AcquireLock();
-#endif
- /* From this point forward, goto error_with_unlock! */
- /* XXX interp->builtins_copy is NULL in subinterpreter! */
- builtins_import = _PyDict_GetItemId(interp->builtins_copy ?
- interp->builtins_copy :
- interp->builtins, &PyId___import__);
- if (builtins_import == NULL) {
- PyErr_SetString(PyExc_ImportError, "__import__ not found");
- goto error_with_unlock;
- }
- Py_INCREF(builtins_import);
-
mod = PyDict_GetItem(interp->modules, abs_name);
if (mod == Py_None) {
PyObject *msg = PyUnicode_FromFormat("import of %R halted; "
@@ -1545,9 +1543,12 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
Py_DECREF(msg);
}
mod = NULL;
- goto error_with_unlock;
+ goto error;
}
else if (mod != NULL) {
+ _Py_IDENTIFIER(__spec__);
+ _Py_IDENTIFIER(_initializing);
+ _Py_IDENTIFIER(_lock_unlock_module);
PyObject *value = NULL;
PyObject *spec;
int initializing = 0;
@@ -1570,91 +1571,83 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
Py_DECREF(value);
if (initializing == -1)
PyErr_Clear();
- }
- if (initializing > 0) {
- /* _bootstrap._lock_unlock_module() releases the import lock */
- value = _PyObject_CallMethodIdObjArgs(interp->importlib,
- &PyId__lock_unlock_module, abs_name,
- NULL);
- if (value == NULL)
- goto error;
- Py_DECREF(value);
- }
- else {
+ if (initializing > 0) {
#ifdef WITH_THREAD
- if (_PyImport_ReleaseLock() < 0) {
- PyErr_SetString(PyExc_RuntimeError, "not holding the import lock");
- goto error;
- }
+ _PyImport_AcquireLock();
#endif
+ /* _bootstrap._lock_unlock_module() releases the import lock */
+ value = _PyObject_CallMethodIdObjArgs(interp->importlib,
+ &PyId__lock_unlock_module, abs_name,
+ NULL);
+ if (value == NULL)
+ goto error;
+ Py_DECREF(value);
+ }
}
}
else {
+#ifdef WITH_THREAD
+ _PyImport_AcquireLock();
+#endif
/* _bootstrap._find_and_load() releases the import lock */
mod = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__find_and_load, abs_name,
- builtins_import, NULL);
+ interp->import_func, NULL);
if (mod == NULL) {
goto error;
}
}
- /* From now on we don't hold the import lock anymore. */
- has_from = PyObject_IsTrue(fromlist);
- if (has_from < 0)
- goto error;
+ has_from = 0;
+ if (fromlist != NULL && fromlist != Py_None) {
+ has_from = PyObject_IsTrue(fromlist);
+ if (has_from < 0)
+ goto error;
+ }
if (!has_from) {
- if (level == 0 || PyUnicode_GET_LENGTH(name) > 0) {
- PyObject *front = NULL;
- PyObject *partition = NULL;
- PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot);
-
- if (borrowed_dot == NULL) {
- goto error;
- }
+ Py_ssize_t len = PyUnicode_GET_LENGTH(name);
+ if (level == 0 || len > 0) {
+ Py_ssize_t dot;
- partition = PyUnicode_Partition(name, borrowed_dot);
- if (partition == NULL) {
+ dot = PyUnicode_FindChar(name, '.', 0, len, 1);
+ if (dot == -2) {
goto error;
}
- if (PyUnicode_GET_LENGTH(PyTuple_GET_ITEM(partition, 1)) == 0) {
+ if (dot == -1) {
/* No dot in module name, simple exit */
- Py_DECREF(partition);
final_mod = mod;
Py_INCREF(mod);
goto error;
}
- front = PyTuple_GET_ITEM(partition, 0);
- Py_INCREF(front);
- Py_DECREF(partition);
-
if (level == 0) {
- final_mod = PyObject_CallFunctionObjArgs(builtins_import, front, NULL);
+ PyObject *front = PyUnicode_Substring(name, 0, dot);
+ if (front == NULL) {
+ goto error;
+ }
+
+ final_mod = PyImport_ImportModuleLevelObject(front, NULL, NULL, NULL, 0);
Py_DECREF(front);
}
else {
- Py_ssize_t cut_off = PyUnicode_GET_LENGTH(name) -
- PyUnicode_GET_LENGTH(front);
+ Py_ssize_t cut_off = len - dot;
Py_ssize_t abs_name_len = PyUnicode_GET_LENGTH(abs_name);
PyObject *to_return = PyUnicode_Substring(abs_name, 0,
abs_name_len - cut_off);
- Py_DECREF(front);
if (to_return == NULL) {
goto error;
}
final_mod = PyDict_GetItem(interp->modules, to_return);
+ Py_DECREF(to_return);
if (final_mod == NULL) {
PyErr_Format(PyExc_KeyError,
"%R not in sys.modules as expected",
to_return);
+ goto error;
}
- else {
- Py_INCREF(final_mod);
- }
- Py_DECREF(to_return);
+ Py_INCREF(final_mod);
}
}
else {
@@ -1665,24 +1658,14 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
else {
final_mod = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__handle_fromlist, mod,
- fromlist, builtins_import,
+ fromlist, interp->import_func,
NULL);
}
- goto error;
- error_with_unlock:
-#ifdef WITH_THREAD
- if (_PyImport_ReleaseLock() < 0) {
- PyErr_SetString(PyExc_RuntimeError, "not holding the import lock");
- }
-#endif
error:
Py_XDECREF(abs_name);
- Py_XDECREF(builtins_import);
Py_XDECREF(mod);
Py_XDECREF(package);
- Py_XDECREF(globals);
- Py_XDECREF(fromlist);
if (final_mod == NULL)
remove_importlib_frames();
return final_mod;
diff --git a/Python/importdl.c b/Python/importdl.c
index 1aa585d..ac03289 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -23,8 +23,8 @@ extern dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix,
const char *pathname, FILE *fp);
#endif
-static const char *ascii_only_prefix = "PyInit";
-static const char *nonascii_prefix = "PyInitU";
+static const char * const ascii_only_prefix = "PyInit";
+static const char * const nonascii_prefix = "PyInitU";
/* Get the variable part of a module's export symbol name.
* Returns a bytes instance. For non-ASCII-named modules, the name is
diff --git a/Python/importlib.h b/Python/importlib.h
index 7f6b753..0e90e57 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -1,171 +1,154 @@
/* Auto-generated by Programs/_freeze_importlib.c */
const unsigned char _Py_M__importlib[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
- 0,64,0,0,0,115,169,2,0,0,100,0,0,90,0,0,
- 100,1,0,97,1,0,100,2,0,100,3,0,132,0,0,90,
- 2,0,100,4,0,100,5,0,132,0,0,90,3,0,71,100,
- 6,0,100,7,0,132,0,0,100,7,0,131,2,0,90,4,
- 0,105,0,0,90,5,0,105,0,0,90,6,0,71,100,8,
- 0,100,9,0,132,0,0,100,9,0,101,7,0,131,3,0,
- 90,8,0,71,100,10,0,100,11,0,132,0,0,100,11,0,
- 131,2,0,90,9,0,71,100,12,0,100,13,0,132,0,0,
- 100,13,0,131,2,0,90,10,0,71,100,14,0,100,15,0,
- 132,0,0,100,15,0,131,2,0,90,11,0,100,16,0,100,
- 17,0,132,0,0,90,12,0,100,18,0,100,19,0,132,0,
- 0,90,13,0,100,20,0,100,21,0,132,0,0,90,14,0,
- 100,22,0,100,23,0,100,24,0,100,25,0,132,0,1,90,
- 15,0,100,26,0,100,27,0,132,0,0,90,16,0,100,28,
- 0,100,29,0,132,0,0,90,17,0,100,30,0,100,31,0,
- 132,0,0,90,18,0,100,32,0,100,33,0,132,0,0,90,
- 19,0,71,100,34,0,100,35,0,132,0,0,100,35,0,131,
- 2,0,90,20,0,71,100,36,0,100,37,0,132,0,0,100,
- 37,0,131,2,0,90,21,0,100,38,0,100,1,0,100,39,
- 0,100,1,0,100,40,0,100,41,0,132,0,2,90,22,0,
- 101,23,0,131,0,0,90,24,0,100,1,0,100,1,0,100,
- 42,0,100,43,0,132,2,0,90,25,0,100,44,0,100,45,
- 0,100,46,0,100,47,0,132,0,1,90,26,0,100,48,0,
- 100,49,0,132,0,0,90,27,0,100,50,0,100,51,0,132,
- 0,0,90,28,0,100,52,0,100,53,0,132,0,0,90,29,
- 0,100,54,0,100,55,0,132,0,0,90,30,0,100,56,0,
- 100,57,0,132,0,0,90,31,0,100,58,0,100,59,0,132,
- 0,0,90,32,0,71,100,60,0,100,61,0,132,0,0,100,
- 61,0,131,2,0,90,33,0,71,100,62,0,100,63,0,132,
- 0,0,100,63,0,131,2,0,90,34,0,71,100,64,0,100,
- 65,0,132,0,0,100,65,0,131,2,0,90,35,0,100,66,
- 0,100,67,0,132,0,0,90,36,0,100,68,0,100,69,0,
- 132,0,0,90,37,0,100,1,0,100,70,0,100,71,0,132,
- 1,0,90,38,0,100,72,0,100,73,0,132,0,0,90,39,
- 0,100,74,0,90,40,0,101,40,0,100,75,0,23,90,41,
- 0,100,76,0,100,77,0,132,0,0,90,42,0,100,78,0,
- 100,79,0,132,0,0,90,43,0,100,1,0,100,80,0,100,
- 81,0,100,82,0,132,2,0,90,44,0,100,83,0,100,84,
- 0,132,0,0,90,45,0,100,85,0,100,86,0,132,0,0,
- 90,46,0,100,1,0,100,1,0,102,0,0,100,80,0,100,
- 87,0,100,88,0,132,4,0,90,47,0,100,89,0,100,90,
- 0,132,0,0,90,48,0,100,91,0,100,92,0,132,0,0,
- 90,49,0,100,93,0,100,94,0,132,0,0,90,50,0,100,
- 1,0,83,41,95,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,3,0,0,0,7,0,0,0,67,
- 0,0,0,115,92,0,0,0,120,66,0,100,1,0,100,2,
- 0,100,3,0,100,4,0,103,4,0,68,93,46,0,125,2,
- 0,116,0,0,124,1,0,124,2,0,131,2,0,114,19,0,
- 116,1,0,124,0,0,124,2,0,116,2,0,124,1,0,124,
- 2,0,131,2,0,131,3,0,1,113,19,0,87,124,0,0,
- 106,3,0,106,4,0,124,1,0,106,3,0,131,1,0,1,
- 100,5,0,83,41,6,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,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,27,0,0,0,115,8,0,0,0,0,
- 2,25,1,15,1,29,1,114,12,0,0,0,99,1,0,0,
- 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,
- 0,115,16,0,0,0,116,0,0,116,1,0,131,1,0,124,
- 0,0,131,1,0,83,41,1,78,41,2,218,4,116,121,112,
- 101,218,3,115,121,115,41,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,35,0,0,0,115,2,
- 0,0,0,0,1,114,16,0,0,0,99,0,0,0,0,0,
- 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,
- 58,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,
- 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,
- 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6,
- 0,100,7,0,132,0,0,90,6,0,100,8,0,83,41,9,
- 218,13,95,77,97,110,97,103,101,82,101,108,111,97,100,122,
- 63,77,97,110,97,103,101,115,32,116,104,101,32,112,111,115,
- 115,105,98,108,101,32,99,108,101,97,110,45,117,112,32,111,
- 102,32,115,121,115,46,109,111,100,117,108,101,115,32,102,111,
- 114,32,108,111,97,100,95,109,111,100,117,108,101,40,41,46,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,
- 0,67,0,0,0,115,13,0,0,0,124,1,0,124,0,0,
- 95,0,0,100,0,0,83,41,1,78,41,1,218,5,95,110,
- 97,109,101,41,2,218,4,115,101,108,102,114,15,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,43,0,0,0,115,2,0,
- 0,0,0,1,122,22,95,77,97,110,97,103,101,82,101,108,
- 111,97,100,46,95,95,105,110,105,116,95,95,99,1,0,0,
- 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,
- 0,115,25,0,0,0,124,0,0,106,0,0,116,1,0,106,
- 2,0,107,6,0,124,0,0,95,3,0,100,0,0,83,41,
- 1,78,41,4,114,18,0,0,0,114,14,0,0,0,218,7,
- 109,111,100,117,108,101,115,218,10,95,105,115,95,114,101,108,
- 111,97,100,41,1,114,19,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,46,0,0,0,115,2,0,0,0,0,1,122,
- 23,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95,
- 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,
- 0,2,0,0,0,11,0,0,0,71,0,0,0,115,77,0,
- 0,0,116,0,0,100,1,0,100,2,0,132,0,0,124,1,
- 0,68,131,1,0,131,1,0,114,73,0,124,0,0,106,1,
- 0,12,114,73,0,121,17,0,116,2,0,106,3,0,124,0,
- 0,106,4,0,61,87,110,18,0,4,116,5,0,107,10,0,
- 114,72,0,1,1,1,89,110,1,0,88,100,0,0,83,41,
- 3,78,99,1,0,0,0,0,0,0,0,2,0,0,0,3,
- 0,0,0,115,0,0,0,115,27,0,0,0,124,0,0,93,
- 17,0,125,1,0,124,1,0,100,0,0,107,9,0,86,1,
- 113,3,0,100,0,0,83,41,1,78,114,10,0,0,0,41,
- 2,218,2,46,48,218,3,97,114,103,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,250,9,60,103,101,110,101,
- 120,112,114,62,50,0,0,0,115,2,0,0,0,6,0,122,
- 41,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95,
- 95,101,120,105,116,95,95,46,60,108,111,99,97,108,115,62,
- 46,60,103,101,110,101,120,112,114,62,41,6,218,3,97,110,
- 121,114,22,0,0,0,114,14,0,0,0,114,21,0,0,0,
- 114,18,0,0,0,218,8,75,101,121,69,114,114,111,114,41,
- 2,114,19,0,0,0,218,4,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,49,0,0,0,115,10,0,0,0,0,1,
- 35,1,3,1,17,1,13,1,122,22,95,77,97,110,97,103,
- 101,82,101,108,111,97,100,46,95,95,101,120,105,116,95,95,
- 78,41,7,114,1,0,0,0,114,0,0,0,0,114,2,0,
- 0,0,114,3,0,0,0,114,20,0,0,0,114,23,0,0,
- 0,114,30,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,17,0,0,0,39,
- 0,0,0,115,8,0,0,0,12,2,6,2,12,3,12,3,
- 114,17,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
- 0,0,1,0,0,0,64,0,0,0,115,16,0,0,0,101,
- 0,0,90,1,0,100,0,0,90,2,0,100,1,0,83,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,31,0,0,0,64,0,0,0,
- 115,2,0,0,0,12,1,114,31,0,0,0,99,0,0,0,
- 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
- 0,115,82,0,0,0,101,0,0,90,1,0,100,0,0,90,
- 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
- 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
- 100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,100,
- 9,0,132,0,0,90,7,0,100,10,0,100,11,0,132,0,
- 0,90,8,0,100,12,0,83,41,13,218,11,95,77,111,100,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,64,0,0,0,115,216,1,0,0,100,0,90,0,100,1,
+ 97,1,100,2,100,3,132,0,90,2,100,4,100,5,132,0,
+ 90,3,71,0,100,6,100,7,132,0,100,7,131,2,90,4,
+ 105,0,90,5,105,0,90,6,71,0,100,8,100,9,132,0,
+ 100,9,101,7,131,3,90,8,71,0,100,10,100,11,132,0,
+ 100,11,131,2,90,9,71,0,100,12,100,13,132,0,100,13,
+ 131,2,90,10,71,0,100,14,100,15,132,0,100,15,131,2,
+ 90,11,100,16,100,17,132,0,90,12,100,18,100,19,132,0,
+ 90,13,100,20,100,21,132,0,90,14,100,22,100,23,156,1,
+ 100,24,100,25,132,2,90,15,100,26,100,27,132,0,90,16,
+ 100,28,100,29,132,0,90,17,100,30,100,31,132,0,90,18,
+ 100,32,100,33,132,0,90,19,71,0,100,34,100,35,132,0,
+ 100,35,131,2,90,20,71,0,100,36,100,37,132,0,100,37,
+ 131,2,90,21,100,1,100,1,100,38,156,2,100,39,100,40,
+ 132,2,90,22,101,23,131,0,90,24,100,94,100,41,100,42,
+ 132,1,90,25,100,43,100,44,156,1,100,45,100,46,132,2,
+ 90,26,100,47,100,48,132,0,90,27,100,49,100,50,132,0,
+ 90,28,100,51,100,52,132,0,90,29,100,53,100,54,132,0,
+ 90,30,100,55,100,56,132,0,90,31,100,57,100,58,132,0,
+ 90,32,71,0,100,59,100,60,132,0,100,60,131,2,90,33,
+ 71,0,100,61,100,62,132,0,100,62,131,2,90,34,71,0,
+ 100,63,100,64,132,0,100,64,131,2,90,35,100,65,100,66,
+ 132,0,90,36,100,67,100,68,132,0,90,37,100,95,100,69,
+ 100,70,132,1,90,38,100,71,100,72,132,0,90,39,100,73,
+ 90,40,101,40,100,74,23,0,90,41,100,75,100,76,132,0,
+ 90,42,100,77,100,78,132,0,90,43,100,96,100,80,100,81,
+ 132,1,90,44,100,82,100,83,132,0,90,45,100,84,100,85,
+ 132,0,90,46,100,1,100,1,102,0,100,79,102,4,100,86,
+ 100,87,132,1,90,47,100,88,100,89,132,0,90,48,100,90,
+ 100,91,132,0,90,49,100,92,100,93,132,0,90,50,100,1,
+ 83,0,41,97,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,3,0,0,0,7,0,0,0,67,0,
+ 0,0,115,60,0,0,0,120,40,100,6,68,0,93,32,125,
+ 2,116,0,124,1,124,2,131,2,114,6,116,1,124,0,124,
+ 2,116,2,124,1,124,2,131,2,131,3,1,0,113,6,87,
+ 0,124,0,106,3,106,4,124,1,106,3,131,1,1,0,100,
+ 5,83,0,41,7,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,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,4,122,10,95,95,109,111,100,117,108,101,
+ 95,95,122,8,95,95,110,97,109,101,95,95,122,12,95,95,
+ 113,117,97,108,110,97,109,101,95,95,122,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,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,27,0,0,0,115,8,0,0,0,0,2,10,
+ 1,10,1,22,1,114,12,0,0,0,99,1,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,
+ 41,1,78,41,2,218,4,116,121,112,101,218,3,115,121,115,
+ 41,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,35,0,0,0,115,2,0,0,0,0,1,114,
+ 16,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,64,0,0,0,115,40,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,83,0,41,9,218,13,95,77,97,110,97,103,
+ 101,82,101,108,111,97,100,122,63,77,97,110,97,103,101,115,
+ 32,116,104,101,32,112,111,115,115,105,98,108,101,32,99,108,
+ 101,97,110,45,117,112,32,111,102,32,115,121,115,46,109,111,
+ 100,117,108,101,115,32,102,111,114,32,108,111,97,100,95,109,
+ 111,100,117,108,101,40,41,46,99,2,0,0,0,0,0,0,
+ 0,2,0,0,0,2,0,0,0,67,0,0,0,115,10,0,
+ 0,0,124,1,124,0,95,0,100,0,83,0,41,1,78,41,
+ 1,218,5,95,110,97,109,101,41,2,218,4,115,101,108,102,
+ 114,15,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,43,0,
+ 0,0,115,2,0,0,0,0,1,122,22,95,77,97,110,97,
+ 103,101,82,101,108,111,97,100,46,95,95,105,110,105,116,95,
+ 95,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,
+ 0,0,67,0,0,0,115,18,0,0,0,124,0,106,0,116,
+ 1,106,2,107,6,124,0,95,3,100,0,83,0,41,1,78,
+ 41,4,114,18,0,0,0,114,14,0,0,0,218,7,109,111,
+ 100,117,108,101,115,218,10,95,105,115,95,114,101,108,111,97,
+ 100,41,1,114,19,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,46,0,0,0,115,2,0,0,0,0,1,122,23,95,
+ 77,97,110,97,103,101,82,101,108,111,97,100,46,95,95,101,
+ 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,2,
+ 0,0,0,11,0,0,0,71,0,0,0,115,66,0,0,0,
+ 116,0,100,1,100,2,132,0,124,1,68,0,131,1,131,1,
+ 114,62,124,0,106,1,12,0,114,62,121,14,116,2,106,3,
+ 124,0,106,4,61,0,87,0,110,20,4,0,116,5,107,10,
+ 114,60,1,0,1,0,1,0,89,0,110,2,88,0,100,0,
+ 83,0,41,3,78,99,1,0,0,0,0,0,0,0,2,0,
+ 0,0,3,0,0,0,115,0,0,0,115,22,0,0,0,124,
+ 0,93,14,125,1,124,1,100,0,107,9,86,0,1,0,113,
+ 2,100,0,83,0,41,1,78,114,10,0,0,0,41,2,218,
+ 2,46,48,218,3,97,114,103,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,250,9,60,103,101,110,101,120,112,
+ 114,62,50,0,0,0,115,2,0,0,0,4,0,122,41,95,
+ 77,97,110,97,103,101,82,101,108,111,97,100,46,95,95,101,
+ 120,105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,
+ 103,101,110,101,120,112,114,62,41,6,218,3,97,110,121,114,
+ 22,0,0,0,114,14,0,0,0,114,21,0,0,0,114,18,
+ 0,0,0,218,8,75,101,121,69,114,114,111,114,41,2,114,
+ 19,0,0,0,218,4,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,49,0,0,0,115,10,0,0,0,0,1,26,1,
+ 2,1,14,1,14,1,122,22,95,77,97,110,97,103,101,82,
+ 101,108,111,97,100,46,95,95,101,120,105,116,95,95,78,41,
+ 7,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
+ 114,3,0,0,0,114,20,0,0,0,114,23,0,0,0,114,
+ 30,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,17,0,0,0,39,0,0,
+ 0,115,8,0,0,0,8,2,4,2,8,3,8,3,114,17,
+ 0,0,0,99,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,31,0,0,0,64,0,0,0,115,2,0,0,0,8,
+ 1,114,31,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,64,0,0,0,115,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,
@@ -178,162 +161,151 @@ const unsigned char _Py_M__importlib[] = {
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,2,0,0,0,2,
- 0,0,0,67,0,0,0,115,70,0,0,0,116,0,0,106,
- 1,0,131,0,0,124,0,0,95,2,0,116,0,0,106,1,
- 0,131,0,0,124,0,0,95,3,0,124,1,0,124,0,0,
- 95,4,0,100,0,0,124,0,0,95,5,0,100,1,0,124,
- 0,0,95,6,0,100,1,0,124,0,0,95,7,0,100,0,
- 0,83,41,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,15,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,41,2,
- 114,19,0,0,0,114,15,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,20,0,0,0,74,0,
- 0,0,115,12,0,0,0,0,1,15,1,15,1,9,1,9,
- 1,9,1,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,4,0,0,0,2,0,0,0,67,0,0,0,115,88,
- 0,0,0,116,0,0,106,1,0,131,0,0,125,1,0,124,
- 0,0,106,2,0,125,2,0,120,60,0,116,3,0,106,4,
- 0,124,2,0,131,1,0,125,3,0,124,3,0,100,0,0,
- 107,8,0,114,55,0,100,1,0,83,124,3,0,106,2,0,
- 125,2,0,124,2,0,124,1,0,107,2,0,114,24,0,100,
- 2,0,83,113,24,0,87,100,0,0,83,41,3,78,70,84,
- 41,5,114,34,0,0,0,218,9,103,101,116,95,105,100,101,
- 110,116,114,37,0,0,0,218,12,95,98,108,111,99,107,105,
- 110,103,95,111,110,218,3,103,101,116,41,4,114,19,0,0,
- 0,90,2,109,101,218,3,116,105,100,114,35,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,82,0,0,0,
- 115,18,0,0,0,0,2,12,1,9,1,3,1,15,1,12,
- 1,4,1,9,1,12,1,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,2,0,0,0,16,0,
- 0,0,67,0,0,0,115,210,0,0,0,116,0,0,106,1,
- 0,131,0,0,125,1,0,124,0,0,116,2,0,124,1,0,
- 60,122,173,0,120,166,0,124,0,0,106,3,0,143,124,0,
- 1,124,0,0,106,4,0,100,1,0,107,2,0,115,68,0,
- 124,0,0,106,5,0,124,1,0,107,2,0,114,96,0,124,
- 1,0,124,0,0,95,5,0,124,0,0,4,106,4,0,100,
- 2,0,55,2,95,4,0,100,3,0,83,124,0,0,106,6,
- 0,131,0,0,114,124,0,116,7,0,100,4,0,124,0,0,
- 22,131,1,0,130,1,0,124,0,0,106,8,0,106,9,0,
- 100,5,0,131,1,0,114,157,0,124,0,0,4,106,10,0,
- 100,2,0,55,2,95,10,0,87,100,6,0,81,82,88,124,
- 0,0,106,8,0,106,9,0,131,0,0,1,124,0,0,106,
- 8,0,106,11,0,131,0,0,1,113,28,0,87,87,100,6,
- 0,116,2,0,124,1,0,61,88,100,6,0,83,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,33,0,0,0,233,
- 1,0,0,0,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,78,
- 41,12,114,34,0,0,0,114,40,0,0,0,114,41,0,0,
- 0,114,35,0,0,0,114,38,0,0,0,114,37,0,0,0,
- 114,44,0,0,0,114,31,0,0,0,114,36,0,0,0,218,
- 7,97,99,113,117,105,114,101,114,39,0,0,0,218,7,114,
- 101,108,101,97,115,101,41,2,114,19,0,0,0,114,43,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,46,0,0,0,94,0,0,0,115,32,0,0,0,0,
- 6,12,1,10,1,3,1,3,1,10,1,30,1,9,1,15,
- 1,4,1,12,1,16,1,18,1,22,2,13,1,21,2,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,2,0,0,
- 0,10,0,0,0,67,0,0,0,115,157,0,0,0,116,0,
- 0,106,1,0,131,0,0,125,1,0,124,0,0,106,2,0,
- 143,129,0,1,124,0,0,106,3,0,124,1,0,107,3,0,
- 114,49,0,116,4,0,100,1,0,131,1,0,130,1,0,124,
- 0,0,106,5,0,100,2,0,107,4,0,115,70,0,116,6,
- 0,130,1,0,124,0,0,4,106,5,0,100,3,0,56,2,
- 95,5,0,124,0,0,106,5,0,100,2,0,107,2,0,114,
- 146,0,100,0,0,124,0,0,95,3,0,124,0,0,106,7,
- 0,114,146,0,124,0,0,4,106,7,0,100,3,0,56,2,
- 95,7,0,124,0,0,106,8,0,106,9,0,131,0,0,1,
- 87,100,0,0,81,82,88,100,0,0,83,41,4,78,122,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,
- 33,0,0,0,114,45,0,0,0,41,10,114,34,0,0,0,
- 114,40,0,0,0,114,35,0,0,0,114,37,0,0,0,218,
- 12,82,117,110,116,105,109,101,69,114,114,111,114,114,38,0,
- 0,0,218,14,65,115,115,101,114,116,105,111,110,69,114,114,
- 111,114,114,39,0,0,0,114,36,0,0,0,114,47,0,0,
- 0,41,2,114,19,0,0,0,114,43,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,47,0,0,
- 0,119,0,0,0,115,22,0,0,0,0,1,12,1,10,1,
- 15,1,12,1,21,1,15,1,15,1,9,1,9,1,15,1,
- 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,1,0,
- 0,0,4,0,0,0,67,0,0,0,115,25,0,0,0,100,
- 1,0,106,0,0,124,0,0,106,1,0,116,2,0,124,0,
- 0,131,1,0,131,2,0,83,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,41,3,218,6,102,111,114,109,97,116,114,15,
- 0,0,0,218,2,105,100,41,1,114,19,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,2,0,0,0,
- 0,1,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,
- 20,0,0,0,114,44,0,0,0,114,46,0,0,0,114,47,
- 0,0,0,114,52,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,32,0,0,
- 0,68,0,0,0,115,12,0,0,0,12,4,6,2,12,8,
- 12,12,12,25,12,13,114,32,0,0,0,99,0,0,0,0,
- 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,
- 115,70,0,0,0,101,0,0,90,1,0,100,0,0,90,2,
- 0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,
- 90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,
- 6,0,100,7,0,132,0,0,90,6,0,100,8,0,100,9,
- 0,132,0,0,90,7,0,100,10,0,83,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,
- 2,0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,
- 0,124,1,0,124,0,0,95,0,0,100,1,0,124,0,0,
- 95,1,0,100,0,0,83,41,2,78,114,33,0,0,0,41,
- 2,114,15,0,0,0,114,38,0,0,0,41,2,114,19,0,
- 0,0,114,15,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,20,0,0,0,140,0,0,0,115,
- 4,0,0,0,0,1,9,1,122,25,95,68,117,109,109,121,
+ 0,0,0,67,0,0,0,115,48,0,0,0,116,0,106,1,
+ 131,0,124,0,95,2,116,0,106,1,131,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,41,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,15,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,41,2,114,19,0,0,0,114,
+ 15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,20,0,0,0,74,0,0,0,115,12,0,0,
+ 0,0,1,10,1,10,1,6,1,6,1,6,1,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,1,0,0,0,
- 3,0,0,0,67,0,0,0,115,19,0,0,0,124,0,0,
- 4,106,0,0,100,1,0,55,2,95,0,0,100,2,0,83,
- 41,3,78,114,45,0,0,0,84,41,1,114,38,0,0,0,
- 41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,46,0,0,0,144,0,0,0,115,
- 4,0,0,0,0,1,15,1,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,1,0,0,0,3,
- 0,0,0,67,0,0,0,115,46,0,0,0,124,0,0,106,
- 0,0,100,1,0,107,2,0,114,27,0,116,1,0,100,2,
- 0,131,1,0,130,1,0,124,0,0,4,106,0,0,100,3,
- 0,56,2,95,0,0,100,0,0,83,41,4,78,114,33,0,
- 0,0,122,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,45,0,0,0,41,2,114,38,0,0,0,114,
- 48,0,0,0,41,1,114,19,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,47,0,0,0,148,
- 0,0,0,115,6,0,0,0,0,1,15,1,12,1,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,1,0,0,0,4,0,0,0,67,0,0,0,115,25,0,
- 0,0,100,1,0,106,0,0,124,0,0,106,1,0,116,2,
- 0,124,0,0,131,1,0,131,2,0,83,41,2,78,122,28,
+ 116,95,95,99,1,0,0,0,0,0,0,0,4,0,0,0,
+ 2,0,0,0,67,0,0,0,115,64,0,0,0,116,0,106,
+ 1,131,0,125,1,124,0,106,2,125,2,120,44,116,3,106,
+ 4,124,2,131,1,125,3,124,3,100,0,107,8,114,38,100,
+ 1,83,0,124,3,106,2,125,2,124,2,124,1,107,2,114,
+ 16,100,2,83,0,113,16,87,0,100,0,83,0,41,3,78,
+ 70,84,41,5,114,34,0,0,0,218,9,103,101,116,95,105,
+ 100,101,110,116,114,37,0,0,0,218,12,95,98,108,111,99,
+ 107,105,110,103,95,111,110,218,3,103,101,116,41,4,114,19,
+ 0,0,0,90,2,109,101,218,3,116,105,100,114,35,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,82,0,
+ 0,0,115,18,0,0,0,0,2,8,1,6,1,2,1,10,
+ 1,8,1,4,1,6,1,8,1,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,2,0,0,0,
+ 16,0,0,0,67,0,0,0,115,168,0,0,0,116,0,106,
+ 1,131,0,125,1,124,0,116,2,124,1,60,0,122,138,120,
+ 132,124,0,106,3,143,96,1,0,124,0,106,4,100,1,107,
+ 2,115,48,124,0,106,5,124,1,107,2,114,72,124,1,124,
+ 0,95,5,124,0,4,0,106,4,100,2,55,0,2,0,95,
+ 4,100,3,83,0,124,0,106,6,131,0,114,92,116,7,100,
+ 4,124,0,22,0,131,1,130,1,124,0,106,8,106,9,100,
+ 5,131,1,114,118,124,0,4,0,106,10,100,2,55,0,2,
+ 0,95,10,87,0,100,6,81,0,82,0,88,0,124,0,106,
+ 8,106,9,131,0,1,0,124,0,106,8,106,11,131,0,1,
+ 0,113,20,87,0,87,0,100,6,116,2,124,1,61,0,88,
+ 0,100,6,83,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,33,0,0,0,233,1,0,0,0,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,78,41,12,114,34,0,0,0,114,
+ 40,0,0,0,114,41,0,0,0,114,35,0,0,0,114,38,
+ 0,0,0,114,37,0,0,0,114,44,0,0,0,114,31,0,
+ 0,0,114,36,0,0,0,218,7,97,99,113,117,105,114,101,
+ 114,39,0,0,0,218,7,114,101,108,101,97,115,101,41,2,
+ 114,19,0,0,0,114,43,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,114,46,0,0,0,94,0,
+ 0,0,115,32,0,0,0,0,6,8,1,8,1,2,1,2,
+ 1,8,1,20,1,6,1,14,1,4,1,8,1,12,1,12,
+ 1,24,2,10,1,18,2,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,2,0,0,0,10,0,0,0,67,0,0,
+ 0,115,122,0,0,0,116,0,106,1,131,0,125,1,124,0,
+ 106,2,143,98,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,116,6,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,7,114,108,124,0,4,0,106,7,
+ 100,3,56,0,2,0,95,7,124,0,106,8,106,9,131,0,
+ 1,0,87,0,100,0,81,0,82,0,88,0,100,0,83,0,
+ 41,4,78,122,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,33,0,0,0,114,45,0,0,0,41,10,
+ 114,34,0,0,0,114,40,0,0,0,114,35,0,0,0,114,
+ 37,0,0,0,218,12,82,117,110,116,105,109,101,69,114,114,
+ 111,114,114,38,0,0,0,218,14,65,115,115,101,114,116,105,
+ 111,110,69,114,114,111,114,114,39,0,0,0,114,36,0,0,
+ 0,114,47,0,0,0,41,2,114,19,0,0,0,114,43,0,
+ 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,47,0,0,0,119,0,0,0,115,22,0,0,0,0,
+ 1,8,1,8,1,10,1,8,1,14,1,14,1,10,1,6,
+ 1,6,1,14,1,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,1,0,0,0,4,0,0,0,67,0,0,0,115,
+ 18,0,0,0,100,1,106,0,124,0,106,1,116,2,124,0,
+ 131,1,131,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,41,3,218,6,102,111,114,109,97,116,114,15,0,0,
+ 0,218,2,105,100,41,1,114,19,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,2,0,0,0,0,1,
+ 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,20,0,
+ 0,0,114,44,0,0,0,114,46,0,0,0,114,47,0,0,
+ 0,114,52,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,32,0,0,0,68,
+ 0,0,0,115,12,0,0,0,8,4,4,2,8,8,8,12,
+ 8,25,8,13,114,32,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,48,
+ 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,100,3,132,0,90,4,100,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,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,41,2,78,114,33,0,0,
+ 0,41,2,114,15,0,0,0,114,38,0,0,0,41,2,114,
+ 19,0,0,0,114,15,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,20,0,0,0,140,0,0,
+ 0,115,4,0,0,0,0,1,6,1,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,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,45,0,0,0,84,41,1,114,38,0,0,
+ 0,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,46,0,0,0,144,0,0,0,
+ 115,4,0,0,0,0,1,14,1,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,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,33,0,0,0,122,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,45,0,0,0,41,
+ 2,114,38,0,0,0,114,48,0,0,0,41,1,114,19,0,
+ 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,47,0,0,0,148,0,0,0,115,6,0,0,0,0,
+ 1,10,1,8,1,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,1,0,0,0,4,0,0,0,
+ 67,0,0,0,115,18,0,0,0,100,1,106,0,124,0,106,
+ 1,116,2,124,0,131,1,131,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,41,3,114,50,
0,0,0,114,15,0,0,0,114,51,0,0,0,41,1,114,
@@ -345,262 +317,249 @@ const unsigned char _Py_M__importlib[] = {
114,3,0,0,0,114,20,0,0,0,114,46,0,0,0,114,
47,0,0,0,114,52,0,0,0,114,10,0,0,0,114,10,
0,0,0,114,10,0,0,0,114,11,0,0,0,114,53,0,
- 0,0,136,0,0,0,115,10,0,0,0,12,2,6,2,12,
- 4,12,4,12,5,114,53,0,0,0,99,0,0,0,0,0,
+ 0,0,136,0,0,0,115,10,0,0,0,8,2,4,2,8,
+ 4,8,4,8,5,114,53,0,0,0,99,0,0,0,0,0,
0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,
- 52,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,
- 100,1,0,100,2,0,132,0,0,90,3,0,100,3,0,100,
- 4,0,132,0,0,90,4,0,100,5,0,100,6,0,132,0,
- 0,90,5,0,100,7,0,83,41,8,218,18,95,77,111,100,
+ 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,2,0,0,0,2,0,0,0,67,
- 0,0,0,115,22,0,0,0,124,1,0,124,0,0,95,0,
- 0,100,0,0,124,0,0,95,1,0,100,0,0,83,41,1,
- 78,41,2,114,18,0,0,0,218,5,95,108,111,99,107,41,
- 2,114,19,0,0,0,114,15,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,20,0,0,0,159,
- 0,0,0,115,4,0,0,0,0,1,9,1,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,1,0,0,0,10,0,0,0,67,0,0,0,115,53,
- 0,0,0,122,22,0,116,0,0,124,0,0,106,1,0,131,
- 1,0,124,0,0,95,2,0,87,100,0,0,116,3,0,106,
- 4,0,131,0,0,1,88,124,0,0,106,2,0,106,5,0,
- 131,0,0,1,100,0,0,83,41,1,78,41,6,218,16,95,
- 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,114,
- 18,0,0,0,114,55,0,0,0,218,4,95,105,109,112,218,
- 12,114,101,108,101,97,115,101,95,108,111,99,107,114,46,0,
- 0,0,41,1,114,19,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,23,0,0,0,163,0,0,
- 0,115,8,0,0,0,0,1,3,1,22,2,11,1,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,3,0,0,0,1,0,0,0,79,0,0,
- 0,115,17,0,0,0,124,0,0,106,0,0,106,1,0,131,
- 0,0,1,100,0,0,83,41,1,78,41,2,114,55,0,0,
- 0,114,47,0,0,0,41,3,114,19,0,0,0,114,29,0,
- 0,0,90,6,107,119,97,114,103,115,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,30,0,0,0,170,0,
- 0,0,115,2,0,0,0,0,1,122,27,95,77,111,100,117,
- 108,101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,
- 101,120,105,116,95,95,78,41,6,114,1,0,0,0,114,0,
- 0,0,0,114,2,0,0,0,114,20,0,0,0,114,23,0,
- 0,0,114,30,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,54,0,0,0,
- 157,0,0,0,115,6,0,0,0,12,2,12,4,12,7,114,
- 54,0,0,0,99,1,0,0,0,0,0,0,0,3,0,0,
- 0,11,0,0,0,3,0,0,0,115,139,0,0,0,100,1,
- 0,125,1,0,121,17,0,116,0,0,136,0,0,25,131,0,
- 0,125,1,0,87,110,18,0,4,116,1,0,107,10,0,114,
- 43,0,1,1,1,89,110,1,0,88,124,1,0,100,1,0,
- 107,8,0,114,135,0,116,2,0,100,1,0,107,8,0,114,
- 83,0,116,3,0,136,0,0,131,1,0,125,1,0,110,12,
- 0,116,4,0,136,0,0,131,1,0,125,1,0,135,0,0,
- 102,1,0,100,2,0,100,3,0,134,0,0,125,2,0,116,
- 5,0,106,6,0,124,1,0,124,2,0,131,2,0,116,0,
- 0,136,0,0,60,124,1,0,83,41,4,122,109,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,83,104,111,117,108,100,32,
- 111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,119,
- 105,116,104,32,116,104,101,32,105,109,112,111,114,116,32,108,
- 111,99,107,32,116,97,107,101,110,46,78,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,19,0,0,0,
- 115,11,0,0,0,116,0,0,136,0,0,61,100,0,0,83,
- 41,1,78,41,1,218,13,95,109,111,100,117,108,101,95,108,
- 111,99,107,115,41,1,218,1,95,41,1,114,15,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,218,2,99,98,190,0,
- 0,0,115,2,0,0,0,0,1,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,7,114,59,0,0,0,114,28,
- 0,0,0,114,34,0,0,0,114,53,0,0,0,114,32,0,
- 0,0,218,8,95,119,101,97,107,114,101,102,90,3,114,101,
- 102,41,3,114,15,0,0,0,114,35,0,0,0,114,61,0,
- 0,0,114,10,0,0,0,41,1,114,15,0,0,0,114,11,
- 0,0,0,114,56,0,0,0,176,0,0,0,115,24,0,0,
- 0,0,4,6,1,3,1,17,1,13,1,5,1,12,1,12,
- 1,15,2,12,1,18,2,22,1,114,56,0,0,0,99,1,
- 0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,
- 0,0,0,115,71,0,0,0,116,0,0,124,0,0,131,1,
- 0,125,1,0,116,1,0,106,2,0,131,0,0,1,121,14,
- 0,124,1,0,106,3,0,131,0,0,1,87,110,18,0,4,
- 116,4,0,107,10,0,114,56,0,1,1,1,89,110,11,0,
- 88,124,1,0,106,5,0,131,0,0,1,100,1,0,83,41,
- 2,97,21,1,0,0,82,101,108,101,97,115,101,32,116,104,
- 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32,
- 108,111,99,107,44,32,97,110,100,32,97,99,113,117,105,114,
- 101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,32,
- 116,104,101,10,32,32,32,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,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,10,32,32,32,32,83,104,111,117,108,100,
- 32,111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,
- 119,105,116,104,32,116,104,101,32,105,109,112,111,114,116,32,
- 108,111,99,107,32,116,97,107,101,110,46,78,41,6,114,56,
- 0,0,0,114,57,0,0,0,114,58,0,0,0,114,46,0,
- 0,0,114,31,0,0,0,114,47,0,0,0,41,2,114,15,
- 0,0,0,114,35,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,195,0,0,0,
- 115,14,0,0,0,0,7,12,1,10,1,3,1,14,1,13,
- 3,5,2,114,63,0,0,0,99,1,0,0,0,0,0,0,
- 0,3,0,0,0,3,0,0,0,79,0,0,0,115,13,0,
- 0,0,124,0,0,124,1,0,124,2,0,142,0,0,83,41,
- 1,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,114,10,0,0,0,41,3,218,1,102,114,29,
- 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,214,0,0,0,115,2,0,0,0,0,8,114,65,
- 0,0,0,218,9,118,101,114,98,111,115,105,116,121,114,45,
- 0,0,0,99,1,0,0,0,1,0,0,0,3,0,0,0,
- 4,0,0,0,71,0,0,0,115,75,0,0,0,116,0,0,
- 106,1,0,106,2,0,124,1,0,107,5,0,114,71,0,124,
- 0,0,106,3,0,100,6,0,131,1,0,115,43,0,100,3,
- 0,124,0,0,23,125,0,0,116,4,0,124,0,0,106,5,
- 0,124,2,0,140,0,0,100,4,0,116,0,0,106,6,0,
- 131,1,1,1,100,5,0,83,41,7,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,250,1,35,250,7,105,109,
- 112,111,114,116,32,122,2,35,32,90,4,102,105,108,101,78,
- 41,2,114,67,0,0,0,114,68,0,0,0,41,7,114,14,
- 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,50,0,0,0,218,6,115,116,100,
- 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,66,
- 0,0,0,114,29,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,225,0,0,0,115,8,0,
- 0,0,0,2,18,1,15,1,10,1,114,75,0,0,0,99,
- 1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
- 3,0,0,0,115,35,0,0,0,135,0,0,102,1,0,100,
- 1,0,100,2,0,134,0,0,125,1,0,116,0,0,124,1,
- 0,136,0,0,131,2,0,1,124,1,0,83,41,3,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,2,0,0,0,4,0,
- 0,0,19,0,0,0,115,55,0,0,0,124,1,0,116,0,
- 0,106,1,0,107,7,0,114,42,0,116,2,0,100,1,0,
- 106,3,0,124,1,0,131,1,0,100,2,0,124,1,0,131,
- 1,1,130,1,0,136,0,0,124,0,0,124,1,0,131,2,
- 0,83,41,3,78,122,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,15,0,0,0,41,4,114,14,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,50,0,0,0,41,2,114,19,0,0,0,218,
- 8,102,117,108,108,110,97,109,101,41,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,235,0,0,0,115,8,0,0,0,0,1,
- 15,1,18,1,9,1,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,41,1,114,12,
- 0,0,0,41,2,114,79,0,0,0,114,80,0,0,0,114,
- 10,0,0,0,41,1,114,79,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,233,0,0,0,115,6,0,0,0,0,2,18,5,
- 13,1,114,81,0,0,0,99,1,0,0,0,0,0,0,0,
- 2,0,0,0,3,0,0,0,3,0,0,0,115,35,0,0,
- 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0,
- 125,1,0,116,0,0,124,1,0,136,0,0,131,2,0,1,
- 124,1,0,83,41,3,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,
- 2,0,0,0,4,0,0,0,19,0,0,0,115,55,0,0,
- 0,116,0,0,106,1,0,124,1,0,131,1,0,115,42,0,
- 116,2,0,100,1,0,106,3,0,124,1,0,131,1,0,100,
- 2,0,124,1,0,131,1,1,130,1,0,136,0,0,124,0,
- 0,124,1,0,131,2,0,83,41,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,15,0,0,0,41,4,114,
- 57,0,0,0,218,9,105,115,95,102,114,111,122,101,110,114,
- 77,0,0,0,114,50,0,0,0,41,2,114,19,0,0,0,
- 114,78,0,0,0,41,1,114,79,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,
- 246,0,0,0,115,8,0,0,0,0,1,15,1,18,1,9,
- 1,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,41,1,114,12,0,0,0,41,2,114,79,
- 0,0,0,114,83,0,0,0,114,10,0,0,0,41,1,114,
- 79,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,244,0,0,0,115,
- 6,0,0,0,0,2,18,5,13,1,114,84,0,0,0,99,
- 2,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
- 67,0,0,0,115,81,0,0,0,116,0,0,124,1,0,124,
- 0,0,131,2,0,125,2,0,124,1,0,116,1,0,106,2,
- 0,107,6,0,114,67,0,116,1,0,106,2,0,124,1,0,
- 25,125,3,0,116,3,0,124,2,0,124,3,0,131,2,0,
- 1,116,1,0,106,2,0,124,1,0,25,83,116,4,0,124,
- 2,0,131,1,0,83,100,1,0,83,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,14,0,0,0,114,21,0,0,0,218,5,95,
- 101,120,101,99,218,5,95,108,111,97,100,41,4,114,19,0,
- 0,0,114,78,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,0,1,0,0,115,12,0,0,0,
- 0,6,15,1,15,1,13,1,13,1,11,2,114,90,0,0,
- 0,99,1,0,0,0,0,0,0,0,5,0,0,0,35,0,
- 0,0,67,0,0,0,115,6,1,0,0,116,0,0,124,0,
- 0,100,1,0,100,0,0,131,3,0,125,1,0,116,1,0,
- 124,1,0,100,2,0,131,2,0,114,71,0,121,17,0,124,
- 1,0,106,2,0,124,0,0,131,1,0,83,87,110,18,0,
- 4,116,3,0,107,10,0,114,70,0,1,1,1,89,110,1,
- 0,88,121,13,0,124,0,0,106,4,0,125,2,0,87,110,
- 18,0,4,116,5,0,107,10,0,114,104,0,1,1,1,89,
- 110,23,0,88,124,2,0,100,0,0,107,9,0,114,127,0,
- 116,6,0,124,2,0,131,1,0,83,121,13,0,124,0,0,
- 106,7,0,125,3,0,87,110,24,0,4,116,5,0,107,10,
- 0,114,166,0,1,1,1,100,3,0,125,3,0,89,110,1,
- 0,88,121,13,0,124,0,0,106,8,0,125,4,0,87,110,
- 59,0,4,116,5,0,107,10,0,114,241,0,1,1,1,124,
- 1,0,100,0,0,107,8,0,114,221,0,100,4,0,106,9,
- 0,124,3,0,131,1,0,83,100,5,0,106,9,0,124,3,
- 0,124,1,0,131,2,0,83,89,110,17,0,88,100,6,0,
- 106,9,0,124,3,0,124,4,0,131,2,0,83,100,0,0,
- 83,41,7,78,218,10,95,95,108,111,97,100,101,114,95,95,
+ 0,0,0,115,16,0,0,0,124,1,124,0,95,0,100,0,
+ 124,0,95,1,100,0,83,0,41,1,78,41,2,114,18,0,
+ 0,0,218,5,95,108,111,99,107,41,2,114,19,0,0,0,
+ 114,15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,114,20,0,0,0,159,0,0,0,115,4,0,
+ 0,0,0,1,6,1,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,1,0,0,0,
+ 10,0,0,0,67,0,0,0,115,42,0,0,0,122,16,116,
+ 0,124,0,106,1,131,1,124,0,95,2,87,0,100,0,116,
+ 3,106,4,131,0,1,0,88,0,124,0,106,2,106,5,131,
+ 0,1,0,100,0,83,0,41,1,78,41,6,218,16,95,103,
+ 101,116,95,109,111,100,117,108,101,95,108,111,99,107,114,18,
+ 0,0,0,114,55,0,0,0,218,4,95,105,109,112,218,12,
+ 114,101,108,101,97,115,101,95,108,111,99,107,114,46,0,0,
+ 0,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,23,0,0,0,163,0,0,0,
+ 115,8,0,0,0,0,1,2,1,16,2,10,1,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,3,0,0,0,1,0,0,0,79,0,0,0,
+ 115,14,0,0,0,124,0,106,0,106,1,131,0,1,0,100,
+ 0,83,0,41,1,78,41,2,114,55,0,0,0,114,47,0,
+ 0,0,41,3,114,19,0,0,0,114,29,0,0,0,90,6,
+ 107,119,97,114,103,115,114,10,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,114,30,0,0,0,170,0,0,0,115,2,
+ 0,0,0,0,1,122,27,95,77,111,100,117,108,101,76,111,
+ 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116,
+ 95,95,78,41,6,114,1,0,0,0,114,0,0,0,0,114,
+ 2,0,0,0,114,20,0,0,0,114,23,0,0,0,114,30,
+ 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,54,0,0,0,157,0,0,0,
+ 115,6,0,0,0,8,2,8,4,8,7,114,54,0,0,0,
+ 99,1,0,0,0,0,0,0,0,3,0,0,0,11,0,0,
+ 0,3,0,0,0,115,106,0,0,0,100,1,125,1,121,14,
+ 116,0,136,0,25,0,131,0,125,1,87,0,110,20,4,0,
+ 116,1,107,10,114,38,1,0,1,0,1,0,89,0,110,2,
+ 88,0,124,1,100,1,107,8,114,102,116,2,100,1,107,8,
+ 114,66,116,3,136,0,131,1,125,1,110,8,116,4,136,0,
+ 131,1,125,1,135,0,102,1,100,2,100,3,132,8,125,2,
+ 116,5,106,6,124,1,124,2,131,2,116,0,136,0,60,0,
+ 124,1,83,0,41,4,122,109,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,83,104,111,117,108,100,32,111,110,108,121,32,
+ 98,101,32,99,97,108,108,101,100,32,119,105,116,104,32,116,
+ 104,101,32,105,109,112,111,114,116,32,108,111,99,107,32,116,
+ 97,107,101,110,46,78,99,1,0,0,0,0,0,0,0,1,
+ 0,0,0,2,0,0,0,19,0,0,0,115,10,0,0,0,
+ 116,0,136,0,61,0,100,0,83,0,41,1,78,41,1,218,
+ 13,95,109,111,100,117,108,101,95,108,111,99,107,115,41,1,
+ 218,1,95,41,1,114,15,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,218,2,99,98,190,0,0,0,115,2,0,0,
+ 0,0,1,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,7,114,59,0,0,0,114,28,0,0,0,114,34,0,
+ 0,0,114,53,0,0,0,114,32,0,0,0,218,8,95,119,
+ 101,97,107,114,101,102,90,3,114,101,102,41,3,114,15,0,
+ 0,0,114,35,0,0,0,114,61,0,0,0,114,10,0,0,
+ 0,41,1,114,15,0,0,0,114,11,0,0,0,114,56,0,
+ 0,0,176,0,0,0,115,24,0,0,0,0,4,4,1,2,
+ 1,14,1,14,1,6,1,8,1,8,1,10,2,8,1,12,
+ 2,16,1,114,56,0,0,0,99,1,0,0,0,0,0,0,
+ 0,2,0,0,0,11,0,0,0,67,0,0,0,115,62,0,
+ 0,0,116,0,124,0,131,1,125,1,116,1,106,2,131,0,
+ 1,0,121,12,124,1,106,3,131,0,1,0,87,0,110,20,
+ 4,0,116,4,107,10,114,48,1,0,1,0,1,0,89,0,
+ 110,10,88,0,124,1,106,5,131,0,1,0,100,1,83,0,
+ 41,2,97,21,1,0,0,82,101,108,101,97,115,101,32,116,
+ 104,101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,
+ 32,108,111,99,107,44,32,97,110,100,32,97,99,113,117,105,
+ 114,101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,
+ 32,116,104,101,10,32,32,32,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,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,10,32,32,32,32,83,104,111,117,108,
+ 100,32,111,110,108,121,32,98,101,32,99,97,108,108,101,100,
+ 32,119,105,116,104,32,116,104,101,32,105,109,112,111,114,116,
+ 32,108,111,99,107,32,116,97,107,101,110,46,78,41,6,114,
+ 56,0,0,0,114,57,0,0,0,114,58,0,0,0,114,46,
+ 0,0,0,114,31,0,0,0,114,47,0,0,0,41,2,114,
+ 15,0,0,0,114,35,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,195,0,0,
+ 0,115,14,0,0,0,0,7,8,1,8,1,2,1,12,1,
+ 14,3,6,2,114,63,0,0,0,99,1,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,79,0,0,0,115,10,
+ 0,0,0,124,0,124,1,124,2,142,0,83,0,41,1,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,114,10,0,0,0,41,3,218,1,102,114,29,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,214,0,0,0,115,2,0,0,0,0,8,114,65,0,0,
+ 0,114,45,0,0,0,41,1,218,9,118,101,114,98,111,115,
+ 105,116,121,99,1,0,0,0,1,0,0,0,3,0,0,0,
+ 4,0,0,0,71,0,0,0,115,56,0,0,0,116,0,106,
+ 1,106,2,124,1,107,5,114,52,124,0,106,3,100,6,131,
+ 1,115,30,100,3,124,0,23,0,125,0,116,4,124,0,106,
+ 5,124,2,140,0,100,4,116,0,106,6,144,1,131,1,1,
+ 0,100,5,83,0,41,7,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,250,1,35,250,7,105,109,112,111,114,
+ 116,32,122,2,35,32,90,4,102,105,108,101,78,41,2,114,
+ 67,0,0,0,114,68,0,0,0,41,7,114,14,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,50,0,0,0,218,6,115,116,100,101,114,114,
+ 41,3,218,7,109,101,115,115,97,103,101,114,66,0,0,0,
+ 114,29,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,225,0,0,0,115,8,0,0,0,0,
+ 2,12,1,10,1,8,1,114,75,0,0,0,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,
+ 0,115,26,0,0,0,135,0,102,1,100,1,100,2,132,8,
+ 125,1,116,0,124,1,136,0,131,2,1,0,124,1,83,0,
+ 41,3,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,2,0,
+ 0,0,4,0,0,0,19,0,0,0,115,40,0,0,0,124,
+ 1,116,0,106,1,107,7,114,30,116,2,100,1,106,3,124,
+ 1,131,1,100,2,124,1,144,1,131,1,130,1,136,0,124,
+ 0,124,1,131,2,83,0,41,3,78,122,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,15,0,0,0,41,4,
+ 114,14,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,50,0,0,0,41,2,114,
+ 19,0,0,0,218,8,102,117,108,108,110,97,109,101,41,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,235,0,0,0,115,8,
+ 0,0,0,0,1,10,1,12,1,8,1,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,41,1,114,12,0,0,0,41,2,114,79,0,0,0,114,
+ 80,0,0,0,114,10,0,0,0,41,1,114,79,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,233,0,0,0,115,6,0,0,
+ 0,0,2,12,5,10,1,114,81,0,0,0,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,
+ 0,115,26,0,0,0,135,0,102,1,100,1,100,2,132,8,
+ 125,1,116,0,124,1,136,0,131,2,1,0,124,1,83,0,
+ 41,3,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,2,0,0,0,
+ 4,0,0,0,19,0,0,0,115,40,0,0,0,116,0,106,
+ 1,124,1,131,1,115,30,116,2,100,1,106,3,124,1,131,
+ 1,100,2,124,1,144,1,131,1,130,1,136,0,124,0,124,
+ 1,131,2,83,0,41,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,15,0,0,0,41,4,114,57,0,0,
+ 0,218,9,105,115,95,102,114,111,122,101,110,114,77,0,0,
+ 0,114,50,0,0,0,41,2,114,19,0,0,0,114,78,0,
+ 0,0,41,1,114,79,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,246,0,0,
+ 0,115,8,0,0,0,0,1,10,1,12,1,8,1,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,41,1,114,12,0,0,0,41,2,114,79,0,0,0,
+ 114,83,0,0,0,114,10,0,0,0,41,1,114,79,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,244,0,0,0,115,6,0,0,
+ 0,0,2,12,5,10,1,114,84,0,0,0,99,2,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,
+ 0,115,64,0,0,0,116,0,124,1,124,0,131,2,125,2,
+ 124,1,116,1,106,2,107,6,114,52,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,110,8,116,4,124,2,131,1,
+ 83,0,100,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,
+ 14,0,0,0,114,21,0,0,0,218,5,95,101,120,101,99,
+ 218,5,95,108,111,97,100,41,4,114,19,0,0,0,114,78,
+ 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,0,1,0,0,115,12,0,0,0,0,6,10,1,
+ 10,1,10,1,10,1,12,2,114,90,0,0,0,99,1,0,
+ 0,0,0,0,0,0,5,0,0,0,35,0,0,0,67,0,
+ 0,0,115,218,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,121,10,124,
+ 1,106,2,124,0,131,1,83,0,4,0,116,3,107,10,114,
+ 52,1,0,1,0,1,0,89,0,110,2,88,0,121,10,124,
+ 0,106,4,125,2,87,0,110,20,4,0,116,5,107,10,114,
+ 84,1,0,1,0,1,0,89,0,110,18,88,0,124,2,100,
+ 0,107,9,114,102,116,6,124,2,131,1,83,0,121,10,124,
+ 0,106,7,125,3,87,0,110,24,4,0,116,5,107,10,114,
+ 136,1,0,1,0,1,0,100,3,125,3,89,0,110,2,88,
+ 0,121,10,124,0,106,8,125,4,87,0,110,52,4,0,116,
+ 5,107,10,114,200,1,0,1,0,1,0,124,1,100,0,107,
+ 8,114,184,100,4,106,9,124,3,131,1,83,0,110,12,100,
+ 5,106,9,124,3,124,1,131,2,83,0,89,0,110,14,88,
+ 0,100,6,106,9,124,3,124,4,131,2,83,0,100,0,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,
122,13,60,109,111,100,117,108,101,32,123,33,114,125,62,122,
20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,
@@ -616,611 +575,705 @@ const unsigned char _Py_M__importlib[] = {
88,0,0,0,114,15,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,
- 16,1,0,0,115,46,0,0,0,0,2,18,1,15,4,3,
- 1,17,1,13,1,5,1,3,1,13,1,13,1,5,2,12,
- 1,10,4,3,1,13,1,13,1,11,1,3,1,13,1,13,
- 1,12,1,13,2,21,2,114,101,0,0,0,99,0,0,0,
+ 16,1,0,0,115,46,0,0,0,0,2,12,1,10,4,2,
+ 1,10,1,14,1,6,1,2,1,10,1,14,1,6,2,8,
+ 1,8,4,2,1,10,1,14,1,10,1,2,1,10,1,14,
+ 1,8,1,12,2,18,2,114,101,0,0,0,99,0,0,0,
0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
- 0,115,52,0,0,0,101,0,0,90,1,0,100,0,0,90,
- 2,0,100,1,0,100,2,0,132,0,0,90,3,0,100,3,
- 0,100,4,0,132,0,0,90,4,0,100,5,0,100,6,0,
- 132,0,0,90,5,0,100,7,0,83,41,8,218,17,95,105,
+ 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,17,95,105,
110,115,116,97,108,108,101,100,95,115,97,102,101,108,121,99,
2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,
- 67,0,0,0,115,25,0,0,0,124,1,0,124,0,0,95,
- 0,0,124,1,0,106,1,0,124,0,0,95,2,0,100,0,
- 0,83,41,1,78,41,3,218,7,95,109,111,100,117,108,101,
- 114,95,0,0,0,218,5,95,115,112,101,99,41,2,114,19,
- 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,114,20,0,0,0,54,1,0,0,
- 115,4,0,0,0,0,1,9,1,122,26,95,105,110,115,116,
- 97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,105,
- 110,105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,
- 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,100,
- 1,0,124,0,0,106,0,0,95,1,0,124,0,0,106,2,
- 0,116,3,0,106,4,0,124,0,0,106,0,0,106,5,0,
- 60,100,0,0,83,41,2,78,84,41,6,114,104,0,0,0,
- 218,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114,
- 103,0,0,0,114,14,0,0,0,114,21,0,0,0,114,15,
- 0,0,0,41,1,114,19,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,23,0,0,0,58,1,
- 0,0,115,4,0,0,0,0,4,12,1,122,27,95,105,110,
- 115,116,97,108,108,101,100,95,115,97,102,101,108,121,46,95,
- 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,
- 0,3,0,0,0,17,0,0,0,71,0,0,0,115,121,0,
- 0,0,122,101,0,124,0,0,106,0,0,125,2,0,116,1,
- 0,100,1,0,100,2,0,132,0,0,124,1,0,68,131,1,
- 0,131,1,0,114,78,0,121,17,0,116,2,0,106,3,0,
- 124,2,0,106,4,0,61,87,113,100,0,4,116,5,0,107,
- 10,0,114,74,0,1,1,1,89,113,100,0,88,110,22,0,
- 116,6,0,100,3,0,124,2,0,106,4,0,124,2,0,106,
- 7,0,131,3,0,1,87,100,0,0,100,4,0,124,0,0,
- 106,0,0,95,8,0,88,100,0,0,83,41,5,78,99,1,
- 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,
- 0,0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,
- 0,124,1,0,100,0,0,107,9,0,86,1,113,3,0,100,
- 0,0,83,41,1,78,114,10,0,0,0,41,2,114,24,0,
- 0,0,114,25,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,26,0,0,0,68,1,0,0,115,
- 2,0,0,0,6,0,122,45,95,105,110,115,116,97,108,108,
- 101,100,95,115,97,102,101,108,121,46,95,95,101,120,105,116,
- 95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
- 101,120,112,114,62,122,18,105,109,112,111,114,116,32,123,33,
- 114,125,32,35,32,123,33,114,125,70,41,9,114,104,0,0,
- 0,114,27,0,0,0,114,14,0,0,0,114,21,0,0,0,
- 114,15,0,0,0,114,28,0,0,0,114,75,0,0,0,114,
- 99,0,0,0,114,105,0,0,0,41,3,114,19,0,0,0,
- 114,29,0,0,0,114,88,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,30,0,0,0,65,1,
- 0,0,115,18,0,0,0,0,1,3,1,9,1,25,1,3,
- 1,17,1,13,1,8,2,26,2,122,26,95,105,110,115,116,
+ 67,0,0,0,115,18,0,0,0,124,1,124,0,95,0,124,
+ 1,106,1,124,0,95,2,100,0,83,0,41,1,78,41,3,
+ 218,7,95,109,111,100,117,108,101,114,95,0,0,0,218,5,
+ 95,115,112,101,99,41,2,114,19,0,0,0,114,89,0,0,
+ 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
+ 114,20,0,0,0,54,1,0,0,115,4,0,0,0,0,1,
+ 6,1,122,26,95,105,110,115,116,97,108,108,101,100,95,115,
+ 97,102,101,108,121,46,95,95,105,110,105,116,95,95,99,1,
+ 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
+ 0,0,0,115,28,0,0,0,100,1,124,0,106,0,95,1,
+ 124,0,106,2,116,3,106,4,124,0,106,0,106,5,60,0,
+ 100,0,83,0,41,2,78,84,41,6,114,104,0,0,0,218,
+ 13,95,105,110,105,116,105,97,108,105,122,105,110,103,114,103,
+ 0,0,0,114,14,0,0,0,114,21,0,0,0,114,15,0,
+ 0,0,41,1,114,19,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,23,0,0,0,58,1,0,
+ 0,115,4,0,0,0,0,4,8,1,122,27,95,105,110,115,
+ 116,97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,
+ 101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,
+ 3,0,0,0,17,0,0,0,71,0,0,0,115,98,0,0,
+ 0,122,82,124,0,106,0,125,2,116,1,100,1,100,2,132,
+ 0,124,1,68,0,131,1,131,1,114,64,121,14,116,2,106,
+ 3,124,2,106,4,61,0,87,0,113,80,4,0,116,5,107,
+ 10,114,60,1,0,1,0,1,0,89,0,113,80,88,0,110,
+ 16,116,6,100,3,124,2,106,4,124,2,106,7,131,3,1,
+ 0,87,0,100,0,100,4,124,0,106,0,95,8,88,0,100,
+ 0,83,0,41,5,78,99,1,0,0,0,0,0,0,0,2,
+ 0,0,0,3,0,0,0,115,0,0,0,115,22,0,0,0,
+ 124,0,93,14,125,1,124,1,100,0,107,9,86,0,1,0,
+ 113,2,100,0,83,0,41,1,78,114,10,0,0,0,41,2,
+ 114,24,0,0,0,114,25,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,114,26,0,0,0,68,1,
+ 0,0,115,2,0,0,0,4,0,122,45,95,105,110,115,116,
97,108,108,101,100,95,115,97,102,101,108,121,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,20,0,0,0,114,23,0,0,
- 0,114,30,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,102,0,0,0,52,
- 1,0,0,115,6,0,0,0,12,2,12,4,12,7,114,102,
- 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
- 8,0,0,0,64,0,0,0,115,172,0,0,0,101,0,0,
- 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,
- 2,0,100,3,0,100,4,0,100,3,0,100,5,0,100,3,
- 0,100,6,0,100,7,0,132,0,3,90,4,0,100,8,0,
- 100,9,0,132,0,0,90,5,0,100,10,0,100,11,0,132,
- 0,0,90,6,0,101,7,0,100,12,0,100,13,0,132,0,
- 0,131,1,0,90,8,0,101,8,0,106,9,0,100,14,0,
- 100,13,0,132,0,0,131,1,0,90,8,0,101,7,0,100,
- 15,0,100,16,0,132,0,0,131,1,0,90,10,0,101,7,
- 0,100,17,0,100,18,0,132,0,0,131,1,0,90,11,0,
- 101,11,0,106,9,0,100,19,0,100,18,0,132,0,0,131,
- 1,0,90,11,0,100,3,0,83,41,20,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,
+ 120,105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,
+ 103,101,110,101,120,112,114,62,122,18,105,109,112,111,114,116,
+ 32,123,33,114,125,32,35,32,123,33,114,125,70,41,9,114,
+ 104,0,0,0,114,27,0,0,0,114,14,0,0,0,114,21,
+ 0,0,0,114,15,0,0,0,114,28,0,0,0,114,75,0,
+ 0,0,114,99,0,0,0,114,105,0,0,0,41,3,114,19,
+ 0,0,0,114,29,0,0,0,114,88,0,0,0,114,10,0,
+ 0,0,114,10,0,0,0,114,11,0,0,0,114,30,0,0,
+ 0,65,1,0,0,115,18,0,0,0,0,1,2,1,6,1,
+ 18,1,2,1,14,1,14,1,8,2,20,2,122,26,95,105,
+ 110,115,116,97,108,108,101,100,95,115,97,102,101,108,121,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,20,0,0,0,114,
+ 23,0,0,0,114,30,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,102,0,
+ 0,0,52,1,0,0,115,6,0,0,0,8,2,8,4,8,
+ 7,114,102,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,64,0,0,0,115,114,0,0,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,2,
+ 100,2,100,3,156,3,100,4,100,5,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,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,218,6,111,114,
- 105,103,105,110,78,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,3,0,0,0,6,0,0,0,2,0,0,0,
- 67,0,0,0,115,79,0,0,0,124,1,0,124,0,0,95,
- 0,0,124,2,0,124,0,0,95,1,0,124,3,0,124,0,
- 0,95,2,0,124,4,0,124,0,0,95,3,0,124,5,0,
- 114,48,0,103,0,0,110,3,0,100,0,0,124,0,0,95,
- 4,0,100,1,0,124,0,0,95,5,0,100,0,0,124,0,
- 0,95,6,0,100,0,0,83,41,2,78,70,41,7,114,15,
- 0,0,0,114,99,0,0,0,114,107,0,0,0,114,108,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,19,0,0,0,114,15,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,114,108,0,0,
- 0,114,109,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,11,0,0,0,114,20,0,0,0,116,1,0,0,115,14,
- 0,0,0,0,2,9,1,9,1,9,1,9,1,21,3,9,
- 1,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,2,
- 0,0,0,4,0,0,0,67,0,0,0,115,147,0,0,0,
- 100,1,0,106,0,0,124,0,0,106,1,0,131,1,0,100,
- 2,0,106,0,0,124,0,0,106,2,0,131,1,0,103,2,
- 0,125,1,0,124,0,0,106,3,0,100,0,0,107,9,0,
- 114,76,0,124,1,0,106,4,0,100,3,0,106,0,0,124,
- 0,0,106,3,0,131,1,0,131,1,0,1,124,0,0,106,
- 5,0,100,0,0,107,9,0,114,116,0,124,1,0,106,4,
- 0,100,4,0,106,0,0,124,0,0,106,5,0,131,1,0,
- 131,1,0,1,100,5,0,106,0,0,124,0,0,106,6,0,
- 106,7,0,100,6,0,106,8,0,124,1,0,131,1,0,131,
- 2,0,83,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,50,0,0,0,114,15,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,218,6,97,112,
- 112,101,110,100,114,110,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,19,0,0,0,114,29,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,52,0,0,0,128,
- 1,0,0,115,16,0,0,0,0,1,15,1,21,1,15,1,
- 25,1,15,1,12,1,13,1,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,3,0,0,0,11,0,0,0,67,0,
- 0,0,115,145,0,0,0,124,0,0,106,0,0,125,2,0,
- 121,107,0,124,0,0,106,1,0,124,1,0,106,1,0,107,
- 2,0,111,114,0,124,0,0,106,2,0,124,1,0,106,2,
- 0,107,2,0,111,114,0,124,0,0,106,3,0,124,1,0,
- 106,3,0,107,2,0,111,114,0,124,2,0,124,1,0,106,
- 0,0,107,2,0,111,114,0,124,0,0,106,4,0,124,1,
- 0,106,4,0,107,2,0,111,114,0,124,0,0,106,5,0,
- 124,1,0,106,5,0,107,2,0,83,87,110,22,0,4,116,
- 6,0,107,10,0,114,140,0,1,1,1,100,1,0,83,89,
- 110,1,0,88,100,0,0,83,41,2,78,70,41,7,114,110,
- 0,0,0,114,15,0,0,0,114,99,0,0,0,114,107,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,96,0,0,0,41,3,114,
- 19,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,138,1,0,0,115,20,0,0,
- 0,0,1,9,1,3,1,18,1,18,1,18,1,15,1,18,
- 1,20,1,13,1,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,1,0,0,0,2,0,0,0,67,0,0,0,115,85,0,
- 0,0,124,0,0,106,0,0,100,0,0,107,8,0,114,78,
- 0,124,0,0,106,1,0,100,0,0,107,9,0,114,78,0,
- 124,0,0,106,2,0,114,78,0,116,3,0,100,0,0,107,
- 8,0,114,57,0,116,4,0,130,1,0,116,3,0,106,5,
- 0,124,0,0,106,1,0,131,1,0,124,0,0,95,0,0,
- 124,0,0,106,0,0,83,41,1,78,41,6,114,112,0,0,
- 0,114,107,0,0,0,114,111,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,41,1,114,19,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,116,0,0,0,150,1,0,
- 0,115,12,0,0,0,0,2,15,1,24,1,12,1,6,1,
- 21,1,122,17,77,111,100,117,108,101,83,112,101,99,46,99,
- 97,99,104,101,100,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,124,
- 1,0,124,0,0,95,0,0,100,0,0,83,41,1,78,41,
- 1,114,112,0,0,0,41,2,114,19,0,0,0,114,116,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,116,0,0,0,159,1,0,0,115,2,0,0,0,0,
- 2,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,
- 0,0,67,0,0,0,115,46,0,0,0,124,0,0,106,0,
- 0,100,1,0,107,8,0,114,35,0,124,0,0,106,1,0,
- 106,2,0,100,2,0,131,1,0,100,3,0,25,83,124,0,
- 0,106,1,0,83,100,1,0,83,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,33,0,0,0,41,3,114,110,0,0,0,114,15,0,
- 0,0,218,10,114,112,97,114,116,105,116,105,111,110,41,1,
- 114,19,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,163,1,0,0,
- 115,6,0,0,0,0,3,15,1,20,2,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,1,0,0,0,1,0,0,0,67,
- 0,0,0,115,7,0,0,0,124,0,0,106,0,0,83,41,
- 1,78,41,1,114,111,0,0,0,41,1,114,19,0,0,0,
+ 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,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,15,0,0,0,114,99,0,0,0,114,107,0,0,0,114,
+ 108,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,19,0,0,0,114,
+ 15,0,0,0,114,99,0,0,0,114,107,0,0,0,114,108,
+ 0,0,0,114,109,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,20,0,0,0,116,1,0,0,
+ 115,14,0,0,0,0,2,6,1,6,1,6,1,6,1,14,
+ 3,6,1,122,19,77,111,100,117,108,101,83,112,101,99,46,
+ 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,
+ 0,2,0,0,0,4,0,0,0,67,0,0,0,115,102,0,
+ 0,0,100,1,106,0,124,0,106,1,131,1,100,2,106,0,
+ 124,0,106,2,131,1,103,2,125,1,124,0,106,3,100,0,
+ 107,9,114,52,124,1,106,4,100,3,106,0,124,0,106,3,
+ 131,1,131,1,1,0,124,0,106,5,100,0,107,9,114,80,
+ 124,1,106,4,100,4,106,0,124,0,106,5,131,1,131,1,
+ 1,0,100,5,106,0,124,0,106,6,106,7,100,6,106,8,
+ 124,1,131,1,131,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,50,0,
+ 0,0,114,15,0,0,0,114,99,0,0,0,114,107,0,0,
+ 0,218,6,97,112,112,101,110,100,114,110,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,19,0,0,0,114,29,0,0,0,
114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,
- 117,0,0,0,171,1,0,0,115,2,0,0,0,0,2,122,
- 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,
- 108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,2,0,0,0,67,0,0,0,115,19,0,
- 0,0,116,0,0,124,1,0,131,1,0,124,0,0,95,1,
- 0,100,0,0,83,41,1,78,41,2,218,4,98,111,111,108,
- 114,111,0,0,0,41,2,114,19,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,117,0,0,0,175,1,0,0,115,2,0,0,0,
- 0,2,41,12,114,1,0,0,0,114,0,0,0,0,114,2,
- 0,0,0,114,3,0,0,0,114,20,0,0,0,114,52,0,
- 0,0,114,118,0,0,0,218,8,112,114,111,112,101,114,116,
- 121,114,116,0,0,0,218,6,115,101,116,116,101,114,114,123,
- 0,0,0,114,117,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,106,0,0,
- 0,79,1,0,0,115,20,0,0,0,12,35,6,2,15,1,
- 15,11,12,10,12,12,18,9,21,4,18,8,18,4,114,106,
- 0,0,0,114,107,0,0,0,114,109,0,0,0,99,2,0,
+ 52,0,0,0,128,1,0,0,115,16,0,0,0,0,1,10,
+ 1,14,1,10,1,18,1,10,1,8,1,10,1,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,3,0,0,0,11,
+ 0,0,0,67,0,0,0,115,102,0,0,0,124,0,106,0,
+ 125,2,121,70,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,83,0,4,0,116,6,107,10,
+ 114,96,1,0,1,0,1,0,100,1,83,0,88,0,100,0,
+ 83,0,41,2,78,70,41,7,114,110,0,0,0,114,15,0,
+ 0,0,114,99,0,0,0,114,107,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,96,0,0,0,41,3,114,19,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,138,1,0,0,115,20,0,0,0,0,1,6,1,2,
+ 1,12,1,12,1,12,1,10,1,12,1,12,1,14,1,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,1,0,0,0,2,
+ 0,0,0,67,0,0,0,115,58,0,0,0,124,0,106,0,
+ 100,0,107,8,114,52,124,0,106,1,100,0,107,9,114,52,
+ 124,0,106,2,114,52,116,3,100,0,107,8,114,38,116,4,
+ 130,1,116,3,106,5,124,0,106,1,131,1,124,0,95,0,
+ 124,0,106,0,83,0,41,1,78,41,6,114,112,0,0,0,
+ 114,107,0,0,0,114,111,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,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,116,0,0,0,150,1,0,0,
+ 115,12,0,0,0,0,2,10,1,16,1,8,1,4,1,14,
+ 1,122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,
+ 99,104,101,100,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,2,0,0,0,67,0,0,0,115,10,0,0,0,124,1,
+ 124,0,95,0,100,0,83,0,41,1,78,41,1,114,112,0,
+ 0,0,41,2,114,19,0,0,0,114,116,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,116,0,
+ 0,0,159,1,0,0,115,2,0,0,0,0,2,99,1,0,
+ 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,
+ 0,0,115,38,0,0,0,124,0,106,0,100,1,107,8,114,
+ 28,124,0,106,1,106,2,100,2,131,1,100,3,25,0,83,
+ 0,110,6,124,0,106,1,83,0,100,1,83,0,41,4,122,
+ 32,84,104,101,32,110,97,109,101,32,111,102,32,116,104,101,
+ 32,109,111,100,117,108,101,39,115,32,112,97,114,101,110,116,
+ 46,78,218,1,46,114,33,0,0,0,41,3,114,110,0,0,
+ 0,114,15,0,0,0,218,10,114,112,97,114,116,105,116,105,
+ 111,110,41,1,114,19,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,
+ 163,1,0,0,115,6,0,0,0,0,3,10,1,18,2,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,1,0,0,0,1,
+ 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0,
+ 83,0,41,1,78,41,1,114,111,0,0,0,41,1,114,19,
+ 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,
+ 0,0,114,117,0,0,0,171,1,0,0,115,2,0,0,0,
+ 0,2,122,23,77,111,100,117,108,101,83,112,101,99,46,104,
+ 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0,
+ 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
+ 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,
+ 0,83,0,41,1,78,41,2,218,4,98,111,111,108,114,111,
+ 0,0,0,41,2,114,19,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,117,0,0,0,175,1,0,0,115,2,0,0,0,0,2,
+ 41,12,114,1,0,0,0,114,0,0,0,0,114,2,0,0,
+ 0,114,3,0,0,0,114,20,0,0,0,114,52,0,0,0,
+ 114,118,0,0,0,218,8,112,114,111,112,101,114,116,121,114,
+ 116,0,0,0,218,6,115,101,116,116,101,114,114,123,0,0,
+ 0,114,117,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,106,0,0,0,79,
+ 1,0,0,115,20,0,0,0,8,35,4,2,4,1,14,11,
+ 8,10,8,12,12,9,14,4,12,8,12,4,114,106,0,0,
+ 0,41,2,114,107,0,0,0,114,109,0,0,0,99,2,0,
0,0,2,0,0,0,6,0,0,0,15,0,0,0,67,0,
- 0,0,115,217,0,0,0,116,0,0,124,1,0,100,1,0,
- 131,2,0,114,110,0,116,1,0,100,2,0,107,8,0,114,
- 33,0,116,2,0,130,1,0,116,1,0,106,3,0,125,4,
- 0,124,3,0,100,2,0,107,8,0,114,70,0,124,4,0,
- 124,0,0,100,3,0,124,1,0,131,1,1,83,124,3,0,
- 114,82,0,103,0,0,110,3,0,100,2,0,125,5,0,124,
- 4,0,124,0,0,100,3,0,124,1,0,100,4,0,124,5,
- 0,131,1,2,83,124,3,0,100,2,0,107,8,0,114,192,
- 0,116,0,0,124,1,0,100,5,0,131,2,0,114,186,0,
- 121,19,0,124,1,0,106,4,0,124,0,0,131,1,0,125,
- 3,0,87,113,192,0,4,116,5,0,107,10,0,114,182,0,
- 1,1,1,100,2,0,125,3,0,89,113,192,0,88,110,6,
- 0,100,6,0,125,3,0,116,6,0,124,0,0,124,1,0,
- 100,7,0,124,2,0,100,5,0,124,3,0,131,2,2,83,
- 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,114,99,0,0,0,114,110,0,
- 0,0,114,109,0,0,0,70,114,107,0,0,0,41,7,114,
- 4,0,0,0,114,119,0,0,0,114,120,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,109,0,0,0,114,77,0,0,
- 0,114,106,0,0,0,41,6,114,15,0,0,0,114,99,0,
- 0,0,114,107,0,0,0,114,109,0,0,0,114,128,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,85,0,0,0,180,1,0,
- 0,115,34,0,0,0,0,2,15,1,12,1,6,1,9,2,
- 12,1,16,1,18,1,15,1,7,2,12,1,15,1,3,1,
- 19,1,13,1,14,3,6,2,114,85,0,0,0,99,3,0,
- 0,0,0,0,0,0,8,0,0,0,53,0,0,0,67,0,
- 0,0,115,118,1,0,0,121,13,0,124,0,0,106,0,0,
- 125,3,0,87,110,18,0,4,116,1,0,107,10,0,114,33,
- 0,1,1,1,89,110,17,0,88,124,3,0,100,0,0,107,
- 9,0,114,50,0,124,3,0,83,124,0,0,106,2,0,125,
- 4,0,124,1,0,100,0,0,107,8,0,114,105,0,121,13,
- 0,124,0,0,106,3,0,125,1,0,87,110,18,0,4,116,
- 1,0,107,10,0,114,104,0,1,1,1,89,110,1,0,88,
- 121,13,0,124,0,0,106,4,0,125,5,0,87,110,24,0,
- 4,116,1,0,107,10,0,114,144,0,1,1,1,100,0,0,
- 125,5,0,89,110,1,0,88,124,2,0,100,0,0,107,8,
- 0,114,218,0,124,5,0,100,0,0,107,8,0,114,212,0,
- 121,13,0,124,1,0,106,5,0,125,2,0,87,113,218,0,
- 4,116,1,0,107,10,0,114,208,0,1,1,1,100,0,0,
- 125,2,0,89,113,218,0,88,110,6,0,124,5,0,125,2,
- 0,121,13,0,124,0,0,106,6,0,125,6,0,87,110,24,
- 0,4,116,1,0,107,10,0,114,1,1,1,1,1,100,0,
- 0,125,6,0,89,110,1,0,88,121,19,0,116,7,0,124,
- 0,0,106,8,0,131,1,0,125,7,0,87,110,24,0,4,
- 116,1,0,107,10,0,114,47,1,1,1,1,100,0,0,125,
- 7,0,89,110,1,0,88,116,9,0,124,4,0,124,1,0,
- 100,1,0,124,2,0,131,2,1,125,3,0,124,5,0,100,
- 0,0,107,8,0,114,87,1,100,2,0,110,3,0,100,3,
- 0,124,3,0,95,10,0,124,6,0,124,3,0,95,11,0,
- 124,7,0,124,3,0,95,12,0,124,3,0,83,41,4,78,
- 114,107,0,0,0,70,84,41,13,114,95,0,0,0,114,96,
- 0,0,0,114,1,0,0,0,114,91,0,0,0,114,98,0,
- 0,0,90,7,95,79,82,73,71,73,78,218,10,95,95,99,
- 97,99,104,101,100,95,95,218,4,108,105,115,116,218,8,95,
- 95,112,97,116,104,95,95,114,106,0,0,0,114,111,0,0,
- 0,114,116,0,0,0,114,110,0,0,0,41,8,114,89,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,114,88,0,0,
- 0,114,15,0,0,0,90,8,108,111,99,97,116,105,111,110,
- 114,116,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,115,112,101,99,
- 95,102,114,111,109,95,109,111,100,117,108,101,209,1,0,0,
- 115,72,0,0,0,0,2,3,1,13,1,13,1,5,2,12,
- 1,4,2,9,1,12,1,3,1,13,1,13,2,5,1,3,
- 1,13,1,13,1,11,1,12,1,12,1,3,1,13,1,13,
- 1,14,2,6,1,3,1,13,1,13,1,11,1,3,1,19,
- 1,13,1,11,2,21,1,27,1,9,1,9,1,114,132,0,
- 0,0,218,8,111,118,101,114,114,105,100,101,70,99,2,0,
- 0,0,1,0,0,0,5,0,0,0,59,0,0,0,67,0,
- 0,0,115,54,2,0,0,124,2,0,115,30,0,116,0,0,
- 124,1,0,100,1,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,67,0,121,16,0,124,0,0,106,1,0,124,1,
- 0,95,2,0,87,110,18,0,4,116,3,0,107,10,0,114,
- 66,0,1,1,1,89,110,1,0,88,124,2,0,115,97,0,
- 116,0,0,124,1,0,100,2,0,100,0,0,131,3,0,100,
- 0,0,107,8,0,114,221,0,124,0,0,106,4,0,125,3,
- 0,124,3,0,100,0,0,107,8,0,114,187,0,124,0,0,
- 106,5,0,100,0,0,107,9,0,114,187,0,116,6,0,100,
- 0,0,107,8,0,114,151,0,116,7,0,130,1,0,116,6,
- 0,106,8,0,125,4,0,124,4,0,106,9,0,124,4,0,
- 131,1,0,125,3,0,124,0,0,106,5,0,124,3,0,95,
- 10,0,121,13,0,124,3,0,124,1,0,95,11,0,87,110,
- 18,0,4,116,3,0,107,10,0,114,220,0,1,1,1,89,
- 110,1,0,88,124,2,0,115,251,0,116,0,0,124,1,0,
- 100,3,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 32,1,121,16,0,124,0,0,106,12,0,124,1,0,95,13,
- 0,87,110,18,0,4,116,3,0,107,10,0,114,31,1,1,
- 1,1,89,110,1,0,88,121,13,0,124,0,0,124,1,0,
- 95,14,0,87,110,18,0,4,116,3,0,107,10,0,114,65,
- 1,1,1,1,89,110,1,0,88,124,2,0,115,96,1,116,
- 0,0,124,1,0,100,4,0,100,0,0,131,3,0,100,0,
- 0,107,8,0,114,148,1,124,0,0,106,5,0,100,0,0,
- 107,9,0,114,148,1,121,16,0,124,0,0,106,5,0,124,
- 1,0,95,15,0,87,110,18,0,4,116,3,0,107,10,0,
- 114,147,1,1,1,1,89,110,1,0,88,124,0,0,106,16,
- 0,114,50,2,124,2,0,115,187,1,116,0,0,124,1,0,
- 100,5,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 224,1,121,16,0,124,0,0,106,17,0,124,1,0,95,18,
- 0,87,110,18,0,4,116,3,0,107,10,0,114,223,1,1,
- 1,1,89,110,1,0,88,124,2,0,115,254,1,116,0,0,
- 124,1,0,100,6,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,50,2,124,0,0,106,19,0,100,0,0,107,9,
- 0,114,50,2,121,16,0,124,0,0,106,19,0,124,1,0,
- 95,20,0,87,110,18,0,4,116,3,0,107,10,0,114,49,
- 2,1,1,1,89,110,1,0,88,124,1,0,83,41,7,78,
- 114,1,0,0,0,114,91,0,0,0,218,11,95,95,112,97,
- 99,107,97,103,101,95,95,114,131,0,0,0,114,98,0,0,
- 0,114,129,0,0,0,41,21,114,6,0,0,0,114,15,0,
- 0,0,114,1,0,0,0,114,96,0,0,0,114,99,0,0,
- 0,114,110,0,0,0,114,119,0,0,0,114,120,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,91,0,0,0,114,123,0,0,0,114,134,0,0,
- 0,114,95,0,0,0,114,131,0,0,0,114,117,0,0,0,
- 114,107,0,0,0,114,98,0,0,0,114,116,0,0,0,114,
- 129,0,0,0,41,5,114,88,0,0,0,114,89,0,0,0,
- 114,133,0,0,0,114,99,0,0,0,114,135,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,254,1,0,0,115,92,0,0,0,0,4,30,1,3,
- 1,16,1,13,1,5,2,30,1,9,1,12,2,15,1,12,
- 1,6,1,9,2,15,1,12,1,3,1,13,1,13,1,5,
- 2,30,1,3,1,16,1,13,1,5,2,3,1,13,1,13,
- 1,5,2,30,1,15,1,3,1,16,1,13,1,5,2,9,
- 1,30,1,3,1,16,1,13,1,5,2,30,1,15,1,3,
- 1,16,1,13,1,5,1,114,137,0,0,0,99,1,0,0,
- 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0,
- 0,115,129,0,0,0,100,1,0,125,1,0,116,0,0,124,
- 0,0,106,1,0,100,2,0,131,2,0,114,45,0,124,0,
- 0,106,1,0,106,2,0,124,0,0,131,1,0,125,1,0,
- 110,40,0,116,0,0,124,0,0,106,1,0,100,3,0,131,
- 2,0,114,85,0,116,3,0,106,4,0,100,4,0,116,5,
- 0,100,5,0,100,6,0,131,2,1,1,124,1,0,100,1,
- 0,107,8,0,114,112,0,116,6,0,124,0,0,106,7,0,
- 131,1,0,125,1,0,116,8,0,124,0,0,124,1,0,131,
- 2,0,1,124,1,0,83,41,7,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,87,115,116,97,114,116,105,110,103,32,105,110,
- 32,80,121,116,104,111,110,32,51,46,54,44,32,108,111,97,
- 100,101,114,115,32,100,101,102,105,110,105,110,103,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,90,10,115,116,
- 97,99,107,108,101,118,101,108,233,2,0,0,0,41,9,114,
- 4,0,0,0,114,99,0,0,0,114,138,0,0,0,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,114,16,0,0,0,114,15,0,0,0,114,137,0,
- 0,0,41,2,114,88,0,0,0,114,89,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,58,
- 2,0,0,115,20,0,0,0,0,3,6,1,18,3,21,1,
- 18,1,9,2,13,1,12,1,15,1,13,1,114,144,0,0,
- 0,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,
- 0,0,67,0,0,0,115,149,0,0,0,124,0,0,106,0,
- 0,100,1,0,107,8,0,114,21,0,100,2,0,110,6,0,
- 124,0,0,106,0,0,125,1,0,124,0,0,106,1,0,100,
- 1,0,107,8,0,114,95,0,124,0,0,106,2,0,100,1,
- 0,107,8,0,114,73,0,100,3,0,106,3,0,124,1,0,
- 131,1,0,83,100,4,0,106,3,0,124,1,0,124,0,0,
- 106,2,0,131,2,0,83,110,50,0,124,0,0,106,4,0,
- 114,123,0,100,5,0,106,3,0,124,1,0,124,0,0,106,
- 1,0,131,2,0,83,100,6,0,106,3,0,124,0,0,106,
- 0,0,124,0,0,106,1,0,131,2,0,83,100,1,0,83,
- 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,93,0,0,0,
- 122,13,60,109,111,100,117,108,101,32,123,33,114,125,62,122,
- 20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,
- 33,114,125,41,62,122,23,60,109,111,100,117,108,101,32,123,
- 33,114,125,32,102,114,111,109,32,123,33,114,125,62,122,18,
- 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,
- 41,62,41,5,114,15,0,0,0,114,107,0,0,0,114,99,
- 0,0,0,114,50,0,0,0,114,117,0,0,0,41,2,114,
- 88,0,0,0,114,15,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,97,0,0,0,76,2,0,
- 0,115,16,0,0,0,0,3,30,1,15,1,15,1,13,2,
- 22,2,9,1,19,2,114,97,0,0,0,99,2,0,0,0,
- 0,0,0,0,4,0,0,0,12,0,0,0,67,0,0,0,
- 115,253,0,0,0,124,0,0,106,0,0,125,2,0,116,1,
- 0,106,2,0,131,0,0,1,116,3,0,124,2,0,131,1,
- 0,143,208,0,1,116,4,0,106,5,0,106,6,0,124,2,
- 0,131,1,0,124,1,0,107,9,0,114,89,0,100,1,0,
- 106,7,0,124,2,0,131,1,0,125,3,0,116,8,0,124,
- 3,0,100,2,0,124,2,0,131,1,1,130,1,0,124,0,
- 0,106,9,0,100,3,0,107,8,0,114,163,0,124,0,0,
- 106,10,0,100,3,0,107,8,0,114,140,0,116,8,0,100,
- 4,0,100,2,0,124,0,0,106,0,0,131,1,1,130,1,
- 0,116,11,0,124,0,0,124,1,0,100,5,0,100,6,0,
- 131,2,1,1,124,1,0,83,116,11,0,124,0,0,124,1,
- 0,100,5,0,100,6,0,131,2,1,1,116,12,0,124,0,
- 0,106,9,0,100,7,0,131,2,0,115,219,0,124,0,0,
- 106,9,0,106,13,0,124,2,0,131,1,0,1,110,16,0,
- 124,0,0,106,9,0,106,14,0,124,1,0,131,1,0,1,
- 87,100,3,0,81,82,88,116,4,0,106,5,0,124,2,0,
- 25,83,41,8,122,51,69,120,101,99,117,116,101,32,116,104,
- 101,32,115,112,101,99,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,15,0,0,0,78,122,
- 14,109,105,115,115,105,110,103,32,108,111,97,100,101,114,114,
- 133,0,0,0,84,114,139,0,0,0,41,15,114,15,0,0,
- 0,114,57,0,0,0,218,12,97,99,113,117,105,114,101,95,
- 108,111,99,107,114,54,0,0,0,114,14,0,0,0,114,21,
- 0,0,0,114,42,0,0,0,114,50,0,0,0,114,77,0,
- 0,0,114,99,0,0,0,114,110,0,0,0,114,137,0,0,
- 0,114,4,0,0,0,218,11,108,111,97,100,95,109,111,100,
- 117,108,101,114,139,0,0,0,41,4,114,88,0,0,0,114,
- 89,0,0,0,114,15,0,0,0,218,3,109,115,103,114,10,
- 0,0,0,114,10,0,0,0,114,11,0,0,0,114,86,0,
- 0,0,93,2,0,0,115,32,0,0,0,0,2,9,1,10,
- 1,13,1,24,1,15,1,18,1,15,1,15,1,21,2,19,
- 1,4,1,19,1,18,4,19,2,23,1,114,86,0,0,0,
- 99,1,0,0,0,0,0,0,0,2,0,0,0,27,0,0,
- 0,67,0,0,0,115,3,1,0,0,124,0,0,106,0,0,
- 106,1,0,124,0,0,106,2,0,131,1,0,1,116,3,0,
- 106,4,0,124,0,0,106,2,0,25,125,1,0,116,5,0,
- 124,1,0,100,1,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,96,0,121,16,0,124,0,0,106,0,0,124,1,
- 0,95,6,0,87,110,18,0,4,116,7,0,107,10,0,114,
- 95,0,1,1,1,89,110,1,0,88,116,5,0,124,1,0,
- 100,2,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 197,0,121,56,0,124,1,0,106,8,0,124,1,0,95,9,
- 0,116,10,0,124,1,0,100,3,0,131,2,0,115,175,0,
- 124,0,0,106,2,0,106,11,0,100,4,0,131,1,0,100,
- 5,0,25,124,1,0,95,9,0,87,110,18,0,4,116,7,
- 0,107,10,0,114,196,0,1,1,1,89,110,1,0,88,116,
- 5,0,124,1,0,100,6,0,100,0,0,131,3,0,100,0,
- 0,107,8,0,114,255,0,121,13,0,124,0,0,124,1,0,
- 95,12,0,87,110,18,0,4,116,7,0,107,10,0,114,254,
- 0,1,1,1,89,110,1,0,88,124,1,0,83,41,7,78,
- 114,91,0,0,0,114,134,0,0,0,114,131,0,0,0,114,
- 121,0,0,0,114,33,0,0,0,114,95,0,0,0,41,13,
- 114,99,0,0,0,114,146,0,0,0,114,15,0,0,0,114,
- 14,0,0,0,114,21,0,0,0,114,6,0,0,0,114,91,
- 0,0,0,114,96,0,0,0,114,1,0,0,0,114,134,0,
- 0,0,114,4,0,0,0,114,122,0,0,0,114,95,0,0,
- 0,41,2,114,88,0,0,0,114,89,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,118,2,0,0,115,40,0,0,0,
- 0,4,19,2,16,1,24,1,3,1,16,1,13,1,5,1,
- 24,1,3,4,12,1,15,1,29,1,13,1,5,1,24,1,
- 3,1,13,1,13,1,5,1,114,148,0,0,0,99,1,0,
- 0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,
- 0,0,115,159,0,0,0,124,0,0,106,0,0,100,0,0,
- 107,9,0,114,43,0,116,1,0,124,0,0,106,0,0,100,
- 1,0,131,2,0,115,43,0,116,2,0,124,0,0,131,1,
- 0,83,116,3,0,124,0,0,131,1,0,125,1,0,116,4,
- 0,124,1,0,131,1,0,143,75,0,1,124,0,0,106,0,
- 0,100,0,0,107,8,0,114,122,0,124,0,0,106,5,0,
- 100,0,0,107,8,0,114,138,0,116,6,0,100,2,0,100,
- 3,0,124,0,0,106,7,0,131,1,1,130,1,0,110,16,
- 0,124,0,0,106,0,0,106,8,0,124,1,0,131,1,0,
- 1,87,100,0,0,81,82,88,116,9,0,106,10,0,124,0,
- 0,106,7,0,25,83,41,4,78,114,139,0,0,0,122,14,
- 109,105,115,115,105,110,103,32,108,111,97,100,101,114,114,15,
- 0,0,0,41,11,114,99,0,0,0,114,4,0,0,0,114,
- 148,0,0,0,114,144,0,0,0,114,102,0,0,0,114,110,
- 0,0,0,114,77,0,0,0,114,15,0,0,0,114,139,0,
- 0,0,114,14,0,0,0,114,21,0,0,0,41,2,114,88,
+ 0,0,115,164,0,0,0,116,0,124,1,100,1,131,2,114,
+ 80,116,1,100,2,107,8,114,22,116,2,130,1,116,1,106,
+ 3,125,4,124,3,100,2,107,8,114,50,124,4,124,0,100,
+ 3,124,1,144,1,131,1,83,0,124,3,114,58,103,0,110,
+ 2,100,2,125,5,124,4,124,0,100,3,124,1,100,4,124,
+ 5,144,2,131,1,83,0,124,3,100,2,107,8,114,144,116,
+ 0,124,1,100,5,131,2,114,140,121,14,124,1,106,4,124,
+ 0,131,1,125,3,87,0,113,144,4,0,116,5,107,10,114,
+ 136,1,0,1,0,1,0,100,2,125,3,89,0,113,144,88,
+ 0,110,4,100,6,125,3,116,6,124,0,124,1,100,7,124,
+ 2,100,5,124,3,144,2,131,2,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,114,99,0,0,0,114,110,0,0,0,114,109,0,
+ 0,0,70,114,107,0,0,0,41,7,114,4,0,0,0,114,
+ 119,0,0,0,114,120,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,109,0,0,0,114,77,0,0,0,114,106,0,0,
+ 0,41,6,114,15,0,0,0,114,99,0,0,0,114,107,0,
+ 0,0,114,109,0,0,0,114,128,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,85,0,0,0,180,1,0,0,115,34,0,0,
+ 0,0,2,10,1,8,1,4,1,6,2,8,1,14,1,12,
+ 1,10,1,8,2,8,1,10,1,2,1,14,1,14,1,12,
+ 3,4,2,114,85,0,0,0,99,3,0,0,0,0,0,0,
+ 0,8,0,0,0,53,0,0,0,67,0,0,0,115,58,1,
+ 0,0,121,10,124,0,106,0,125,3,87,0,110,20,4,0,
+ 116,1,107,10,114,30,1,0,1,0,1,0,89,0,110,14,
+ 88,0,124,3,100,0,107,9,114,44,124,3,83,0,124,0,
+ 106,2,125,4,124,1,100,0,107,8,114,90,121,10,124,0,
+ 106,3,125,1,87,0,110,20,4,0,116,1,107,10,114,88,
+ 1,0,1,0,1,0,89,0,110,2,88,0,121,10,124,0,
+ 106,4,125,5,87,0,110,24,4,0,116,1,107,10,114,124,
+ 1,0,1,0,1,0,100,0,125,5,89,0,110,2,88,0,
+ 124,2,100,0,107,8,114,184,124,5,100,0,107,8,114,180,
+ 121,10,124,1,106,5,125,2,87,0,113,184,4,0,116,1,
+ 107,10,114,176,1,0,1,0,1,0,100,0,125,2,89,0,
+ 113,184,88,0,110,4,124,5,125,2,121,10,124,0,106,6,
+ 125,6,87,0,110,24,4,0,116,1,107,10,114,218,1,0,
+ 1,0,1,0,100,0,125,6,89,0,110,2,88,0,121,14,
+ 116,7,124,0,106,8,131,1,125,7,87,0,110,26,4,0,
+ 116,1,107,10,144,1,114,4,1,0,1,0,1,0,100,0,
+ 125,7,89,0,110,2,88,0,116,9,124,4,124,1,100,1,
+ 124,2,144,1,131,2,125,3,124,5,100,0,107,8,144,1,
+ 114,36,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,114,
+ 107,0,0,0,70,84,41,13,114,95,0,0,0,114,96,0,
+ 0,0,114,1,0,0,0,114,91,0,0,0,114,98,0,0,
+ 0,90,7,95,79,82,73,71,73,78,218,10,95,95,99,97,
+ 99,104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,
+ 112,97,116,104,95,95,114,106,0,0,0,114,111,0,0,0,
+ 114,116,0,0,0,114,110,0,0,0,41,8,114,89,0,0,
+ 0,114,99,0,0,0,114,107,0,0,0,114,88,0,0,0,
+ 114,15,0,0,0,90,8,108,111,99,97,116,105,111,110,114,
+ 116,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,115,112,101,99,95,
+ 102,114,111,109,95,109,111,100,117,108,101,209,1,0,0,115,
+ 72,0,0,0,0,2,2,1,10,1,14,1,6,2,8,1,
+ 4,2,6,1,8,1,2,1,10,1,14,2,6,1,2,1,
+ 10,1,14,1,10,1,8,1,8,1,2,1,10,1,14,1,
+ 12,2,4,1,2,1,10,1,14,1,10,1,2,1,14,1,
+ 16,1,10,2,16,1,20,1,6,1,6,1,114,132,0,0,
+ 0,70,41,1,218,8,111,118,101,114,114,105,100,101,99,2,
+ 0,0,0,1,0,0,0,5,0,0,0,59,0,0,0,67,
+ 0,0,0,115,212,1,0,0,124,2,115,20,116,0,124,1,
+ 100,1,100,0,131,3,100,0,107,8,114,54,121,12,124,0,
+ 106,1,124,1,95,2,87,0,110,20,4,0,116,3,107,10,
+ 114,52,1,0,1,0,1,0,89,0,110,2,88,0,124,2,
+ 115,74,116,0,124,1,100,2,100,0,131,3,100,0,107,8,
+ 114,166,124,0,106,4,125,3,124,3,100,0,107,8,114,134,
+ 124,0,106,5,100,0,107,9,114,134,116,6,100,0,107,8,
+ 114,110,116,7,130,1,116,6,106,8,125,4,124,4,106,9,
+ 124,4,131,1,125,3,124,0,106,5,124,3,95,10,121,10,
+ 124,3,124,1,95,11,87,0,110,20,4,0,116,3,107,10,
+ 114,164,1,0,1,0,1,0,89,0,110,2,88,0,124,2,
+ 115,186,116,0,124,1,100,3,100,0,131,3,100,0,107,8,
+ 114,220,121,12,124,0,106,12,124,1,95,13,87,0,110,20,
+ 4,0,116,3,107,10,114,218,1,0,1,0,1,0,89,0,
+ 110,2,88,0,121,10,124,0,124,1,95,14,87,0,110,20,
+ 4,0,116,3,107,10,114,250,1,0,1,0,1,0,89,0,
+ 110,2,88,0,124,2,144,1,115,20,116,0,124,1,100,4,
+ 100,0,131,3,100,0,107,8,144,1,114,68,124,0,106,5,
+ 100,0,107,9,144,1,114,68,121,12,124,0,106,5,124,1,
+ 95,15,87,0,110,22,4,0,116,3,107,10,144,1,114,66,
+ 1,0,1,0,1,0,89,0,110,2,88,0,124,0,106,16,
+ 144,1,114,208,124,2,144,1,115,100,116,0,124,1,100,5,
+ 100,0,131,3,100,0,107,8,144,1,114,136,121,12,124,0,
+ 106,17,124,1,95,18,87,0,110,22,4,0,116,3,107,10,
+ 144,1,114,134,1,0,1,0,1,0,89,0,110,2,88,0,
+ 124,2,144,1,115,160,116,0,124,1,100,6,100,0,131,3,
+ 100,0,107,8,144,1,114,208,124,0,106,19,100,0,107,9,
+ 144,1,114,208,121,12,124,0,106,19,124,1,95,20,87,0,
+ 110,22,4,0,116,3,107,10,144,1,114,206,1,0,1,0,
+ 1,0,89,0,110,2,88,0,124,1,83,0,41,7,78,114,
+ 1,0,0,0,114,91,0,0,0,218,11,95,95,112,97,99,
+ 107,97,103,101,95,95,114,131,0,0,0,114,98,0,0,0,
+ 114,129,0,0,0,41,21,114,6,0,0,0,114,15,0,0,
+ 0,114,1,0,0,0,114,96,0,0,0,114,99,0,0,0,
+ 114,110,0,0,0,114,119,0,0,0,114,120,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,91,0,0,0,114,123,0,0,0,114,134,0,0,0,
+ 114,95,0,0,0,114,131,0,0,0,114,117,0,0,0,114,
+ 107,0,0,0,114,98,0,0,0,114,116,0,0,0,114,129,
+ 0,0,0,41,5,114,88,0,0,0,114,89,0,0,0,114,
+ 133,0,0,0,114,99,0,0,0,114,135,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,254,1,0,0,115,92,0,0,0,0,4,20,1,2,1,
+ 12,1,14,1,6,2,20,1,6,1,8,2,10,1,8,1,
+ 4,1,6,2,10,1,8,1,2,1,10,1,14,1,6,2,
+ 20,1,2,1,12,1,14,1,6,2,2,1,10,1,14,1,
+ 6,2,24,1,12,1,2,1,12,1,16,1,6,2,8,1,
+ 24,1,2,1,12,1,16,1,6,2,24,1,12,1,2,1,
+ 12,1,16,1,6,1,114,137,0,0,0,99,1,0,0,0,
+ 0,0,0,0,2,0,0,0,5,0,0,0,67,0,0,0,
+ 115,92,0,0,0,100,1,125,1,116,0,124,0,106,1,100,
+ 2,131,2,114,30,124,0,106,1,106,2,124,0,131,1,125,
+ 1,110,30,116,0,124,0,106,1,100,3,131,2,114,60,116,
+ 3,106,4,100,4,116,5,100,5,100,6,144,1,131,2,1,
+ 0,124,1,100,1,107,8,114,78,116,6,124,0,106,7,131,
+ 1,125,1,116,8,124,0,124,1,131,2,1,0,124,1,83,
+ 0,41,7,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,87,115,
+ 116,97,114,116,105,110,103,32,105,110,32,80,121,116,104,111,
+ 110,32,51,46,54,44,32,108,111,97,100,101,114,115,32,100,
+ 101,102,105,110,105,110,103,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,218,10,115,116,97,99,107,108,101,118,
+ 101,108,233,2,0,0,0,41,9,114,4,0,0,0,114,99,
+ 0,0,0,114,138,0,0,0,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,114,16,0,
+ 0,0,114,15,0,0,0,114,137,0,0,0,41,2,114,88,
0,0,0,114,89,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,147,2,0,0,115,20,0,0,0,
- 0,2,15,2,18,1,10,2,12,1,13,1,15,1,15,1,
- 24,3,23,5,114,149,0,0,0,99,1,0,0,0,0,0,
- 0,0,1,0,0,0,9,0,0,0,67,0,0,0,115,47,
- 0,0,0,116,0,0,106,1,0,131,0,0,1,116,2,0,
- 124,0,0,106,3,0,131,1,0,143,15,0,1,116,4,0,
- 124,0,0,131,1,0,83,87,100,1,0,81,82,88,100,1,
- 0,83,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,5,114,57,0,0,0,114,145,0,
- 0,0,114,54,0,0,0,114,15,0,0,0,114,149,0,0,
- 0,41,1,114,88,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,114,87,0,0,0,170,2,0,0,
- 115,6,0,0,0,0,9,10,1,16,1,114,87,0,0,0,
- 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
- 0,64,0,0,0,115,205,0,0,0,101,0,0,90,1,0,
- 100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,100,
- 2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,6,
- 0,100,4,0,100,4,0,100,5,0,100,6,0,132,2,0,
- 131,1,0,90,7,0,101,6,0,100,4,0,100,7,0,100,
- 8,0,132,1,0,131,1,0,90,8,0,101,6,0,100,9,
- 0,100,10,0,132,0,0,131,1,0,90,9,0,101,6,0,
- 100,11,0,100,12,0,132,0,0,131,1,0,90,10,0,101,
- 6,0,101,11,0,100,13,0,100,14,0,132,0,0,131,1,
- 0,131,1,0,90,12,0,101,6,0,101,11,0,100,15,0,
- 100,16,0,132,0,0,131,1,0,131,1,0,90,13,0,101,
- 6,0,101,11,0,100,17,0,100,18,0,132,0,0,131,1,
- 0,131,1,0,90,14,0,101,6,0,101,15,0,131,1,0,
- 90,16,0,100,4,0,83,41,19,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,
+ 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,58,2,0,0,115,20,0,
+ 0,0,0,3,4,1,12,3,14,1,12,1,6,2,12,1,
+ 8,1,10,1,10,1,114,145,0,0,0,99,1,0,0,0,
+ 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,
+ 115,110,0,0,0,124,0,106,0,100,1,107,8,114,14,100,
+ 2,110,4,124,0,106,0,125,1,124,0,106,1,100,1,107,
+ 8,114,68,124,0,106,2,100,1,107,8,114,52,100,3,106,
+ 3,124,1,131,1,83,0,113,106,100,4,106,3,124,1,124,
+ 0,106,2,131,2,83,0,110,38,124,0,106,4,114,90,100,
+ 5,106,3,124,1,124,0,106,1,131,2,83,0,110,16,100,
+ 6,106,3,124,0,106,0,124,0,106,1,131,2,83,0,100,
+ 1,83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,
+ 101,32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,
+ 114,32,116,104,101,32,109,111,100,117,108,101,46,78,114,93,
+ 0,0,0,122,13,60,109,111,100,117,108,101,32,123,33,114,
+ 125,62,122,20,60,109,111,100,117,108,101,32,123,33,114,125,
+ 32,40,123,33,114,125,41,62,122,23,60,109,111,100,117,108,
+ 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125,
+ 62,122,18,60,109,111,100,117,108,101,32,123,33,114,125,32,
+ 40,123,125,41,62,41,5,114,15,0,0,0,114,107,0,0,
+ 0,114,99,0,0,0,114,50,0,0,0,114,117,0,0,0,
+ 41,2,114,88,0,0,0,114,15,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,97,0,0,0,
+ 76,2,0,0,115,16,0,0,0,0,3,20,1,10,1,10,
+ 1,12,2,16,2,6,1,16,2,114,97,0,0,0,99,2,
+ 0,0,0,0,0,0,0,4,0,0,0,12,0,0,0,67,
+ 0,0,0,115,194,0,0,0,124,0,106,0,125,2,116,1,
+ 106,2,131,0,1,0,116,3,124,2,131,1,143,156,1,0,
+ 116,4,106,5,106,6,124,2,131,1,124,1,107,9,114,64,
+ 100,1,106,7,124,2,131,1,125,3,116,8,124,3,100,2,
+ 124,2,144,1,131,1,130,1,124,0,106,9,100,3,107,8,
+ 114,120,124,0,106,10,100,3,107,8,114,100,116,8,100,4,
+ 100,2,124,0,106,0,144,1,131,1,130,1,116,11,124,0,
+ 124,1,100,5,100,6,144,1,131,2,1,0,124,1,83,0,
+ 116,11,124,0,124,1,100,5,100,6,144,1,131,2,1,0,
+ 116,12,124,0,106,9,100,7,131,2,115,162,124,0,106,9,
+ 106,13,124,2,131,1,1,0,110,12,124,0,106,9,106,14,
+ 124,1,131,1,1,0,87,0,100,3,81,0,82,0,88,0,
+ 116,4,106,5,124,2,25,0,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,15,0,0,0,78,122,14,109,105,115,115,
+ 105,110,103,32,108,111,97,100,101,114,114,133,0,0,0,84,
+ 114,139,0,0,0,41,15,114,15,0,0,0,114,57,0,0,
+ 0,218,12,97,99,113,117,105,114,101,95,108,111,99,107,114,
+ 54,0,0,0,114,14,0,0,0,114,21,0,0,0,114,42,
+ 0,0,0,114,50,0,0,0,114,77,0,0,0,114,99,0,
+ 0,0,114,110,0,0,0,114,137,0,0,0,114,4,0,0,
+ 0,218,11,108,111,97,100,95,109,111,100,117,108,101,114,139,
+ 0,0,0,41,4,114,88,0,0,0,114,89,0,0,0,114,
+ 15,0,0,0,218,3,109,115,103,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,86,0,0,0,93,2,0,
+ 0,115,32,0,0,0,0,2,6,1,8,1,10,1,16,1,
+ 10,1,14,1,10,1,10,1,16,2,16,1,4,1,16,1,
+ 12,4,14,2,22,1,114,86,0,0,0,99,1,0,0,0,
+ 0,0,0,0,2,0,0,0,27,0,0,0,67,0,0,0,
+ 115,206,0,0,0,124,0,106,0,106,1,124,0,106,2,131,
+ 1,1,0,116,3,106,4,124,0,106,2,25,0,125,1,116,
+ 5,124,1,100,1,100,0,131,3,100,0,107,8,114,76,121,
+ 12,124,0,106,0,124,1,95,6,87,0,110,20,4,0,116,
+ 7,107,10,114,74,1,0,1,0,1,0,89,0,110,2,88,
+ 0,116,5,124,1,100,2,100,0,131,3,100,0,107,8,114,
+ 154,121,40,124,1,106,8,124,1,95,9,116,10,124,1,100,
+ 3,131,2,115,130,124,0,106,2,106,11,100,4,131,1,100,
+ 5,25,0,124,1,95,9,87,0,110,20,4,0,116,7,107,
+ 10,114,152,1,0,1,0,1,0,89,0,110,2,88,0,116,
+ 5,124,1,100,6,100,0,131,3,100,0,107,8,114,202,121,
+ 10,124,0,124,1,95,12,87,0,110,20,4,0,116,7,107,
+ 10,114,200,1,0,1,0,1,0,89,0,110,2,88,0,124,
+ 1,83,0,41,7,78,114,91,0,0,0,114,134,0,0,0,
+ 114,131,0,0,0,114,121,0,0,0,114,33,0,0,0,114,
+ 95,0,0,0,41,13,114,99,0,0,0,114,147,0,0,0,
+ 114,15,0,0,0,114,14,0,0,0,114,21,0,0,0,114,
+ 6,0,0,0,114,91,0,0,0,114,96,0,0,0,114,1,
+ 0,0,0,114,134,0,0,0,114,4,0,0,0,114,122,0,
+ 0,0,114,95,0,0,0,41,2,114,88,0,0,0,114,89,
+ 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,118,2,0,
+ 0,115,40,0,0,0,0,4,14,2,12,1,16,1,2,1,
+ 12,1,14,1,6,1,16,1,2,4,8,1,10,1,22,1,
+ 14,1,6,1,16,1,2,1,10,1,14,1,6,1,114,149,
+ 0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,0,
+ 11,0,0,0,67,0,0,0,115,120,0,0,0,124,0,106,
+ 0,100,0,107,9,114,30,116,1,124,0,106,0,100,1,131,
+ 2,115,30,116,2,124,0,131,1,83,0,116,3,124,0,131,
+ 1,125,1,116,4,124,1,131,1,143,56,1,0,124,0,106,
+ 0,100,0,107,8,114,86,124,0,106,5,100,0,107,8,114,
+ 98,116,6,100,2,100,3,124,0,106,7,144,1,131,1,130,
+ 1,110,12,124,0,106,0,106,8,124,1,131,1,1,0,87,
+ 0,100,0,81,0,82,0,88,0,116,9,106,10,124,0,106,
+ 7,25,0,83,0,41,4,78,114,139,0,0,0,122,14,109,
+ 105,115,115,105,110,103,32,108,111,97,100,101,114,114,15,0,
+ 0,0,41,11,114,99,0,0,0,114,4,0,0,0,114,149,
+ 0,0,0,114,145,0,0,0,114,102,0,0,0,114,110,0,
+ 0,0,114,77,0,0,0,114,15,0,0,0,114,139,0,0,
+ 0,114,14,0,0,0,114,21,0,0,0,41,2,114,88,0,
+ 0,0,114,89,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,147,2,0,0,115,20,0,0,0,0,
+ 2,10,2,12,1,8,2,8,1,10,1,10,1,10,1,18,
+ 3,22,5,114,150,0,0,0,99,1,0,0,0,0,0,0,
+ 0,1,0,0,0,9,0,0,0,67,0,0,0,115,38,0,
+ 0,0,116,0,106,1,131,0,1,0,116,2,124,0,106,3,
+ 131,1,143,10,1,0,116,4,124,0,131,1,83,0,81,0,
+ 82,0,88,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,5,114,57,
+ 0,0,0,114,146,0,0,0,114,54,0,0,0,114,15,0,
+ 0,0,114,150,0,0,0,41,1,114,88,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,87,0,
+ 0,0,170,2,0,0,115,6,0,0,0,0,9,8,1,12,
+ 1,114,87,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,64,0,0,0,115,136,0,0,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,101,4,100,2,
+ 100,3,132,0,131,1,90,5,101,6,100,19,100,5,100,6,
+ 132,1,131,1,90,7,101,6,100,20,100,7,100,8,132,1,
+ 131,1,90,8,101,6,100,9,100,10,132,0,131,1,90,9,
+ 101,6,100,11,100,12,132,0,131,1,90,10,101,6,101,11,
+ 100,13,100,14,132,0,131,1,131,1,90,12,101,6,101,11,
+ 100,15,100,16,132,0,131,1,131,1,90,13,101,6,101,11,
+ 100,17,100,18,132,0,131,1,131,1,90,14,101,6,101,15,
+ 131,1,90,16,100,4,83,0,41,21,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,99,1,0,
+ 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,
+ 0,0,115,12,0,0,0,100,1,106,0,124,0,106,1,131,
+ 1,83,0,41,2,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,24,60,109,111,100,
+ 117,108,101,32,123,33,114,125,32,40,98,117,105,108,116,45,
+ 105,110,41,62,41,2,114,50,0,0,0,114,1,0,0,0,
+ 41,1,114,89,0,0,0,114,10,0,0,0,114,10,0,0,
+ 0,114,11,0,0,0,114,92,0,0,0,195,2,0,0,115,
+ 2,0,0,0,0,7,122,27,66,117,105,108,116,105,110,73,
+ 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114,
+ 101,112,114,78,99,4,0,0,0,0,0,0,0,4,0,0,
+ 0,5,0,0,0,67,0,0,0,115,48,0,0,0,124,2,
+ 100,0,107,9,114,12,100,0,83,0,116,0,106,1,124,1,
+ 131,1,114,40,116,2,124,1,124,0,100,1,100,2,144,1,
+ 131,2,83,0,110,4,100,0,83,0,100,0,83,0,41,3,
+ 78,114,107,0,0,0,122,8,98,117,105,108,116,45,105,110,
+ 41,3,114,57,0,0,0,90,10,105,115,95,98,117,105,108,
+ 116,105,110,114,85,0,0,0,41,4,218,3,99,108,115,114,
+ 78,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,204,2,0,0,
+ 115,10,0,0,0,0,2,8,1,4,1,10,1,18,2,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,4,0,0,0,3,0,0,0,67,0,0,0,115,
+ 30,0,0,0,124,0,106,0,124,1,124,2,131,2,125,3,
+ 124,3,100,1,107,9,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,155,0,0,0,114,99,0,
+ 0,0,41,4,114,152,0,0,0,114,78,0,0,0,114,153,
+ 0,0,0,114,88,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,213,2,0,0,115,4,0,0,0,0,9,12,
+ 1,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,
+ 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,2,
+ 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
+ 0,0,0,115,48,0,0,0,124,1,106,0,116,1,106,2,
+ 107,7,114,36,116,3,100,1,106,4,124,1,106,0,131,1,
+ 100,2,124,1,106,0,144,1,131,1,130,1,116,5,116,6,
+ 106,7,124,1,131,2,83,0,41,3,122,24,67,114,101,97,
+ 116,101,32,97,32,98,117,105,108,116,45,105,110,32,109,111,
+ 100,117,108,101,122,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,15,0,0,0,41,8,114,15,0,0,0,114,
+ 14,0,0,0,114,76,0,0,0,114,77,0,0,0,114,50,
+ 0,0,0,114,65,0,0,0,114,57,0,0,0,90,14,99,
+ 114,101,97,116,101,95,98,117,105,108,116,105,110,41,2,114,
+ 19,0,0,0,114,88,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,138,0,0,0,225,2,0,
+ 0,115,8,0,0,0,0,3,12,1,14,1,10,1,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,2,0,
+ 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,
+ 0,0,115,16,0,0,0,116,0,116,1,106,2,124,1,131,
+ 2,1,0,100,1,83,0,41,2,122,22,69,120,101,99,32,
+ 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,
+ 101,78,41,3,114,65,0,0,0,114,57,0,0,0,90,12,
+ 101,120,101,99,95,98,117,105,108,116,105,110,41,2,114,19,
+ 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,139,0,0,0,233,2,0,0,
+ 115,2,0,0,0,0,3,122,27,66,117,105,108,116,105,110,
+ 73,109,112,111,114,116,101,114,46,101,120,101,99,95,109,111,
+ 100,117,108,101,99,2,0,0,0,0,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,41,2,114,152,0,0,0,114,78,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,238,2,0,0,115,2,
+ 0,0,0,0,4,122,24,66,117,105,108,116,105,110,73,109,
+ 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
+ 67,0,0,0,115,4,0,0,0,100,1,83,0,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,41,
+ 2,114,152,0,0,0,114,78,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,244,2,0,0,115,2,0,0,0,0,
+ 4,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116,
+ 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,
+ 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
+ 0,0,115,4,0,0,0,100,1,83,0,41,2,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,114,10,0,0,0,41,2,114,152,0,0,0,
+ 114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,114,109,0,0,0,250,2,0,0,115,2,0,
+ 0,0,0,4,122,26,66,117,105,108,116,105,110,73,109,112,
+ 111,114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,
+ 41,2,78,78,41,1,78,41,17,114,1,0,0,0,114,0,
+ 0,0,0,114,2,0,0,0,114,3,0,0,0,218,12,115,
+ 116,97,116,105,99,109,101,116,104,111,100,114,92,0,0,0,
+ 218,11,99,108,97,115,115,109,101,116,104,111,100,114,155,0,
+ 0,0,114,156,0,0,0,114,138,0,0,0,114,139,0,0,
+ 0,114,81,0,0,0,114,157,0,0,0,114,158,0,0,0,
+ 114,109,0,0,0,114,90,0,0,0,114,147,0,0,0,114,
+ 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,151,0,0,0,186,2,0,0,115,30,0,0,
+ 0,8,7,4,2,12,9,2,1,12,8,2,1,12,11,12,
+ 8,12,5,2,1,14,5,2,1,14,5,2,1,14,5,114,
+ 151,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,64,0,0,0,115,140,0,0,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,101,4,100,2,100,3,
+ 132,0,131,1,90,5,101,6,100,21,100,5,100,6,132,1,
+ 131,1,90,7,101,6,100,22,100,7,100,8,132,1,131,1,
+ 90,8,101,6,100,9,100,10,132,0,131,1,90,9,101,4,
+ 100,11,100,12,132,0,131,1,90,10,101,6,100,13,100,14,
+ 132,0,131,1,90,11,101,6,101,12,100,15,100,16,132,0,
+ 131,1,131,1,90,13,101,6,101,12,100,17,100,18,132,0,
+ 131,1,131,1,90,14,101,6,101,12,100,19,100,20,132,0,
+ 131,1,131,1,90,15,100,4,83,0,41,23,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,
@@ -1229,605 +1282,455 @@ const unsigned char _Py_M__importlib[] = {
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,99,1,0,0,
0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,
- 0,115,16,0,0,0,100,1,0,106,0,0,124,0,0,106,
- 1,0,131,1,0,83,41,2,122,115,82,101,116,117,114,110,
- 32,114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,
+ 0,115,12,0,0,0,100,1,106,0,124,0,106,1,131,1,
+ 83,0,41,2,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,22,60,109,111,100,117,
+ 108,101,32,123,33,114,125,32,40,102,114,111,122,101,110,41,
+ 62,41,2,114,50,0,0,0,114,1,0,0,0,41,1,218,
+ 1,109,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,92,0,0,0,12,3,0,0,115,2,0,0,0,0,
+ 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,
+ 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4,
+ 0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,
+ 0,0,0,115,36,0,0,0,116,0,106,1,124,1,131,1,
+ 114,28,116,2,124,1,124,0,100,1,100,2,144,1,131,2,
+ 83,0,110,4,100,0,83,0,100,0,83,0,41,3,78,114,
+ 107,0,0,0,90,6,102,114,111,122,101,110,41,3,114,57,
+ 0,0,0,114,82,0,0,0,114,85,0,0,0,41,4,114,
+ 152,0,0,0,114,78,0,0,0,114,153,0,0,0,114,154,
+ 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,
+ 0,0,114,155,0,0,0,21,3,0,0,115,6,0,0,0,
+ 0,2,10,1,18,2,122,24,70,114,111,122,101,110,73,109,
+ 112,111,114,116,101,114,46,102,105,110,100,95,115,112,101,99,
+ 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0,
+ 0,67,0,0,0,115,18,0,0,0,116,0,106,1,124,1,
+ 131,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,24,60,
- 109,111,100,117,108,101,32,123,33,114,125,32,40,98,117,105,
- 108,116,45,105,110,41,62,41,2,114,50,0,0,0,114,1,
- 0,0,0,41,1,114,89,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,92,0,0,0,195,2,
- 0,0,115,2,0,0,0,0,7,122,27,66,117,105,108,116,
- 105,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,
- 101,95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,
- 4,0,0,0,5,0,0,0,67,0,0,0,115,58,0,0,
- 0,124,2,0,100,0,0,107,9,0,114,16,0,100,0,0,
- 83,116,0,0,106,1,0,124,1,0,131,1,0,114,50,0,
- 116,2,0,124,1,0,124,0,0,100,1,0,100,2,0,131,
- 2,1,83,100,0,0,83,100,0,0,83,41,3,78,114,107,
- 0,0,0,122,8,98,117,105,108,116,45,105,110,41,3,114,
- 57,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110,
- 114,85,0,0,0,41,4,218,3,99,108,115,114,78,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,204,2,0,0,115,10,0,
- 0,0,0,2,12,1,4,1,15,1,19,2,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,
- 4,0,0,0,3,0,0,0,67,0,0,0,115,41,0,0,
- 0,124,0,0,106,0,0,124,1,0,124,2,0,131,2,0,
- 125,3,0,124,3,0,100,1,0,107,9,0,114,37,0,124,
- 3,0,106,1,0,83,100,1,0,83,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,154,0,0,0,114,99,0,0,0,41,4,114,151,0,0,
- 0,114,78,0,0,0,114,152,0,0,0,114,88,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,213,2,0,0,
- 115,4,0,0,0,0,9,18,1,122,27,66,117,105,108,116,
- 105,110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,
+ 114,57,0,0,0,114,82,0,0,0,41,3,114,152,0,0,
+ 0,114,78,0,0,0,114,153,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,156,0,0,0,28,
+ 3,0,0,115,2,0,0,0,0,7,122,26,70,114,111,122,
+ 101,110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,
109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,
- 0,0,0,4,0,0,0,67,0,0,0,115,67,0,0,0,
- 124,1,0,106,0,0,116,1,0,106,2,0,107,7,0,114,
- 51,0,116,3,0,100,1,0,106,4,0,124,1,0,106,0,
- 0,131,1,0,100,2,0,124,1,0,106,0,0,131,1,1,
- 130,1,0,116,5,0,116,6,0,106,7,0,124,1,0,131,
- 2,0,83,41,3,122,24,67,114,101,97,116,101,32,97,32,
- 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,122,
- 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,15,
- 0,0,0,41,8,114,15,0,0,0,114,14,0,0,0,114,
- 76,0,0,0,114,77,0,0,0,114,50,0,0,0,114,65,
- 0,0,0,114,57,0,0,0,90,14,99,114,101,97,116,101,
- 95,98,117,105,108,116,105,110,41,2,114,19,0,0,0,114,
+ 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,41,2,114,152,0,0,0,114,
88,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
- 0,0,0,114,138,0,0,0,225,2,0,0,115,8,0,0,
- 0,0,3,18,1,21,1,12,1,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,2,0,0,0,0,0,0,
- 0,2,0,0,0,3,0,0,0,67,0,0,0,115,20,0,
- 0,0,116,0,0,116,1,0,106,2,0,124,1,0,131,2,
- 0,1,100,1,0,83,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,65,0,0,0,114,57,0,0,0,90,12,101,
- 120,101,99,95,98,117,105,108,116,105,110,41,2,114,19,0,
- 0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,139,0,0,0,233,2,0,0,115,
- 2,0,0,0,0,3,122,27,66,117,105,108,116,105,110,73,
- 109,112,111,114,116,101,114,46,101,120,101,99,95,109,111,100,
- 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
- 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,
- 83,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,41,2,114,151,0,0,0,114,78,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,238,2,0,0,115,2,0,
- 0,0,0,4,122,24,66,117,105,108,116,105,110,73,109,112,
- 111,114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,
- 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,
- 0,0,0,115,4,0,0,0,100,1,0,83,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,41,2,
- 114,151,0,0,0,114,78,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,244,2,0,0,115,2,0,0,0,0,4,
- 122,26,66,117,105,108,116,105,110,73,109,112,111,114,116,101,
- 114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,
- 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
- 0,115,4,0,0,0,100,1,0,83,41,2,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,114,10,0,0,0,41,2,114,151,0,0,0,114,
+ 0,0,0,114,138,0,0,0,37,3,0,0,115,0,0,0,
+ 0,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,3,0,0,0,4,0,0,0,
+ 67,0,0,0,115,66,0,0,0,124,0,106,0,106,1,125,
+ 1,116,2,106,3,124,1,131,1,115,38,116,4,100,1,106,
+ 5,124,1,131,1,100,2,124,1,144,1,131,1,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,41,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,15,0,0,0,
+ 41,10,114,95,0,0,0,114,15,0,0,0,114,57,0,0,
+ 0,114,82,0,0,0,114,77,0,0,0,114,50,0,0,0,
+ 114,65,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,89,0,0,0,114,15,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,139,0,0,0,41,3,0,0,115,12,0,
+ 0,0,0,2,8,1,10,1,12,1,8,1,12,1,122,26,
+ 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,101,
+ 120,101,99,95,109,111,100,117,108,101,99,2,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,1,
+ 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,41,1,114,90,0,0,0,41,2,114,152,0,0,0,114,
78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
- 0,0,0,114,109,0,0,0,250,2,0,0,115,2,0,0,
- 0,0,4,122,26,66,117,105,108,116,105,110,73,109,112,111,
- 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,41,
- 17,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
- 114,3,0,0,0,218,12,115,116,97,116,105,99,109,101,116,
- 104,111,100,114,92,0,0,0,218,11,99,108,97,115,115,109,
- 101,116,104,111,100,114,154,0,0,0,114,155,0,0,0,114,
- 138,0,0,0,114,139,0,0,0,114,81,0,0,0,114,156,
- 0,0,0,114,157,0,0,0,114,109,0,0,0,114,90,0,
- 0,0,114,146,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,150,0,0,0,
- 186,2,0,0,115,30,0,0,0,12,7,6,2,18,9,3,
- 1,21,8,3,1,18,11,18,8,18,5,3,1,21,5,3,
- 1,21,5,3,1,21,5,114,150,0,0,0,99,0,0,0,
- 0,0,0,0,0,0,0,0,0,5,0,0,0,64,0,0,
- 0,115,211,0,0,0,101,0,0,90,1,0,100,0,0,90,
- 2,0,100,1,0,90,3,0,101,4,0,100,2,0,100,3,
- 0,132,0,0,131,1,0,90,5,0,101,6,0,100,4,0,
- 100,4,0,100,5,0,100,6,0,132,2,0,131,1,0,90,
- 7,0,101,6,0,100,4,0,100,7,0,100,8,0,132,1,
- 0,131,1,0,90,8,0,101,6,0,100,9,0,100,10,0,
- 132,0,0,131,1,0,90,9,0,101,4,0,100,11,0,100,
- 12,0,132,0,0,131,1,0,90,10,0,101,6,0,100,13,
- 0,100,14,0,132,0,0,131,1,0,90,11,0,101,6,0,
- 101,12,0,100,15,0,100,16,0,132,0,0,131,1,0,131,
- 1,0,90,13,0,101,6,0,101,12,0,100,17,0,100,18,
- 0,132,0,0,131,1,0,131,1,0,90,14,0,101,6,0,
- 101,12,0,100,19,0,100,20,0,132,0,0,131,1,0,131,
- 1,0,90,15,0,100,4,0,83,41,21,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,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,
- 115,16,0,0,0,100,1,0,106,0,0,124,0,0,106,1,
- 0,131,1,0,83,41,2,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,22,60,109,
- 111,100,117,108,101,32,123,33,114,125,32,40,102,114,111,122,
- 101,110,41,62,41,2,114,50,0,0,0,114,1,0,0,0,
- 41,1,218,1,109,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,114,92,0,0,0,12,3,0,0,115,2,0,
- 0,0,0,7,122,26,70,114,111,122,101,110,73,109,112,111,
- 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,
- 78,99,4,0,0,0,0,0,0,0,4,0,0,0,5,0,
- 0,0,67,0,0,0,115,42,0,0,0,116,0,0,106,1,
- 0,124,1,0,131,1,0,114,34,0,116,2,0,124,1,0,
- 124,0,0,100,1,0,100,2,0,131,2,1,83,100,0,0,
- 83,100,0,0,83,41,3,78,114,107,0,0,0,90,6,102,
- 114,111,122,101,110,41,3,114,57,0,0,0,114,82,0,0,
- 0,114,85,0,0,0,41,4,114,151,0,0,0,114,78,0,
- 0,0,114,152,0,0,0,114,153,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,154,0,0,0,
- 21,3,0,0,115,6,0,0,0,0,2,15,1,19,2,122,
- 24,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,
- 102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0,
- 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,23,
- 0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,114,
- 19,0,124,0,0,83,100,1,0,83,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,57,
- 0,0,0,114,82,0,0,0,41,3,114,151,0,0,0,114,
- 78,0,0,0,114,152,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,155,0,0,0,28,3,0,
- 0,115,2,0,0,0,0,7,122,26,70,114,111,122,101,110,
- 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,
- 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
- 0,83,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,41,2,114,151,0,0,0,114,88,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,138,0,0,0,37,3,0,0,115,0,0,0,0,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,3,0,0,0,4,0,0,0,67,0,
- 0,0,115,92,0,0,0,124,0,0,106,0,0,106,1,0,
- 125,1,0,116,2,0,106,3,0,124,1,0,131,1,0,115,
- 54,0,116,4,0,100,1,0,106,5,0,124,1,0,131,1,
- 0,100,2,0,124,1,0,131,1,1,130,1,0,116,6,0,
- 116,2,0,106,7,0,124,1,0,131,2,0,125,2,0,116,
- 8,0,124,2,0,124,0,0,106,9,0,131,2,0,1,100,
- 0,0,83,41,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,15,0,0,0,41,10,114,95,0,0,0,114,
- 15,0,0,0,114,57,0,0,0,114,82,0,0,0,114,77,
- 0,0,0,114,50,0,0,0,114,65,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,89,0,
- 0,0,114,15,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,139,0,0,
- 0,41,3,0,0,115,12,0,0,0,0,2,12,1,15,1,
- 18,1,9,1,18,1,122,26,70,114,111,122,101,110,73,109,
- 112,111,114,116,101,114,46,101,120,101,99,95,109,111,100,117,
- 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,3,
- 0,0,0,67,0,0,0,115,13,0,0,0,116,0,0,124,
- 0,0,124,1,0,131,2,0,83,41,1,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,41,1,114,90,
- 0,0,0,41,2,114,151,0,0,0,114,78,0,0,0,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,146,
- 0,0,0,50,3,0,0,115,2,0,0,0,0,7,122,26,
- 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,
- 111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,
- 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,
- 13,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,
- 83,41,1,122,45,82,101,116,117,114,110,32,116,104,101,32,
- 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,
- 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,
- 101,46,41,2,114,57,0,0,0,114,162,0,0,0,41,2,
- 114,151,0,0,0,114,78,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,156,0,0,0,59,3,
- 0,0,115,2,0,0,0,0,4,122,23,70,114,111,122,101,
- 110,73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,
- 100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,
- 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,
- 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,
- 41,2,114,151,0,0,0,114,78,0,0,0,114,10,0,0,
+ 0,0,0,114,147,0,0,0,50,3,0,0,115,2,0,0,
+ 0,0,7,122,26,70,114,111,122,101,110,73,109,112,111,114,
+ 116,101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,
+ 67,0,0,0,115,10,0,0,0,116,0,106,1,124,1,131,
+ 1,83,0,41,1,122,45,82,101,116,117,114,110,32,116,104,
+ 101,32,99,111,100,101,32,111,98,106,101,99,116,32,102,111,
+ 114,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100,
+ 117,108,101,46,41,2,114,57,0,0,0,114,163,0,0,0,
+ 41,2,114,152,0,0,0,114,78,0,0,0,114,10,0,0,
0,114,10,0,0,0,114,11,0,0,0,114,157,0,0,0,
- 65,3,0,0,115,2,0,0,0,0,4,122,25,70,114,111,
+ 59,3,0,0,115,2,0,0,0,0,4,122,23,70,114,111,
122,101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,
- 115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,2,
- 0,0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,
- 116,0,0,106,1,0,124,1,0,131,1,0,83,41,1,122,
- 46,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,
- 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,
- 101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,41,
- 2,114,57,0,0,0,90,17,105,115,95,102,114,111,122,101,
- 110,95,112,97,99,107,97,103,101,41,2,114,151,0,0,0,
- 114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,114,109,0,0,0,71,3,0,0,115,2,0,
- 0,0,0,4,122,25,70,114,111,122,101,110,73,109,112,111,
- 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,41,
- 16,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
- 114,3,0,0,0,114,158,0,0,0,114,92,0,0,0,114,
- 159,0,0,0,114,154,0,0,0,114,155,0,0,0,114,138,
- 0,0,0,114,139,0,0,0,114,146,0,0,0,114,84,0,
- 0,0,114,156,0,0,0,114,157,0,0,0,114,109,0,0,
- 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,11,0,0,0,114,160,0,0,0,3,3,0,0,115,30,
- 0,0,0,12,7,6,2,18,9,3,1,21,6,3,1,18,
- 8,18,4,18,9,18,9,3,1,21,5,3,1,21,5,3,
- 1,114,160,0,0,0,99,0,0,0,0,0,0,0,0,0,
- 0,0,0,2,0,0,0,64,0,0,0,115,46,0,0,0,
- 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,
- 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,
- 0,100,5,0,132,0,0,90,5,0,100,6,0,83,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,1,0,0,0,1,0,0,0,67,0,0,0,115,
- 14,0,0,0,116,0,0,106,1,0,131,0,0,1,100,1,
- 0,83,41,2,122,24,65,99,113,117,105,114,101,32,116,104,
- 101,32,105,109,112,111,114,116,32,108,111,99,107,46,78,41,
- 2,114,57,0,0,0,114,145,0,0,0,41,1,114,19,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,23,0,0,0,84,3,0,0,115,2,0,0,0,0,
- 2,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111,
- 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99,
- 4,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,
- 67,0,0,0,115,14,0,0,0,116,0,0,106,1,0,131,
- 0,0,1,100,1,0,83,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,57,0,0,0,114,
- 58,0,0,0,41,4,114,19,0,0,0,90,8,101,120,99,
- 95,116,121,112,101,90,9,101,120,99,95,118,97,108,117,101,
- 90,13,101,120,99,95,116,114,97,99,101,98,97,99,107,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,30,
- 0,0,0,88,3,0,0,115,2,0,0,0,0,2,122,27,
- 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,
- 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,1,
- 0,0,0,114,0,0,0,0,114,2,0,0,0,114,3,0,
- 0,0,114,23,0,0,0,114,30,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
- 114,165,0,0,0,80,3,0,0,115,6,0,0,0,12,2,
- 6,2,12,4,114,165,0,0,0,99,3,0,0,0,0,0,
- 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,88,
- 0,0,0,124,1,0,106,0,0,100,1,0,124,2,0,100,
- 2,0,24,131,2,0,125,3,0,116,1,0,124,3,0,131,
- 1,0,124,2,0,107,0,0,114,52,0,116,2,0,100,3,
- 0,131,1,0,130,1,0,124,3,0,100,4,0,25,125,4,
- 0,124,0,0,114,84,0,100,5,0,106,3,0,124,4,0,
- 124,0,0,131,2,0,83,124,4,0,83,41,6,122,50,82,
- 101,115,111,108,118,101,32,97,32,114,101,108,97,116,105,118,
- 101,32,109,111,100,117,108,101,32,110,97,109,101,32,116,111,
- 32,97,110,32,97,98,115,111,108,117,116,101,32,111,110,101,
- 46,114,121,0,0,0,114,45,0,0,0,122,50,97,116,116,
+ 99,111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
+ 83,0,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,41,2,114,152,0,0,0,114,78,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,158,0,
+ 0,0,65,3,0,0,115,2,0,0,0,0,4,122,25,70,
+ 114,111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,
+ 116,95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,
+ 0,2,0,0,0,2,0,0,0,67,0,0,0,115,10,0,
+ 0,0,116,0,106,1,124,1,131,1,83,0,41,1,122,46,
+ 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116,
+ 104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,101,
+ 32,105,115,32,97,32,112,97,99,107,97,103,101,46,41,2,
+ 114,57,0,0,0,90,17,105,115,95,102,114,111,122,101,110,
+ 95,112,97,99,107,97,103,101,41,2,114,152,0,0,0,114,
+ 78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,109,0,0,0,71,3,0,0,115,2,0,0,
+ 0,0,4,122,25,70,114,111,122,101,110,73,109,112,111,114,
+ 116,101,114,46,105,115,95,112,97,99,107,97,103,101,41,2,
+ 78,78,41,1,78,41,16,114,1,0,0,0,114,0,0,0,
+ 0,114,2,0,0,0,114,3,0,0,0,114,159,0,0,0,
+ 114,92,0,0,0,114,160,0,0,0,114,155,0,0,0,114,
+ 156,0,0,0,114,138,0,0,0,114,139,0,0,0,114,147,
+ 0,0,0,114,84,0,0,0,114,157,0,0,0,114,158,0,
+ 0,0,114,109,0,0,0,114,10,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,161,0,0,0,
+ 3,3,0,0,115,30,0,0,0,8,7,4,2,12,9,2,
+ 1,12,6,2,1,12,8,12,4,12,9,12,9,2,1,14,
+ 5,2,1,14,5,2,1,114,161,0,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
+ 0,115,32,0,0,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,
+ 90,5,100,6,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,1,0,0,0,1,
+ 0,0,0,67,0,0,0,115,12,0,0,0,116,0,106,1,
+ 131,0,1,0,100,1,83,0,41,2,122,24,65,99,113,117,
+ 105,114,101,32,116,104,101,32,105,109,112,111,114,116,32,108,
+ 111,99,107,46,78,41,2,114,57,0,0,0,114,146,0,0,
+ 0,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,23,0,0,0,84,3,0,0,
+ 115,2,0,0,0,0,2,122,28,95,73,109,112,111,114,116,
+ 76,111,99,107,67,111,110,116,101,120,116,46,95,95,101,110,
+ 116,101,114,95,95,99,4,0,0,0,0,0,0,0,4,0,
+ 0,0,1,0,0,0,67,0,0,0,115,12,0,0,0,116,
+ 0,106,1,131,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,57,
+ 0,0,0,114,58,0,0,0,41,4,114,19,0,0,0,90,
+ 8,101,120,99,95,116,121,112,101,90,9,101,120,99,95,118,
+ 97,108,117,101,90,13,101,120,99,95,116,114,97,99,101,98,
+ 97,99,107,114,10,0,0,0,114,10,0,0,0,114,11,0,
+ 0,0,114,30,0,0,0,88,3,0,0,115,2,0,0,0,
+ 0,2,122,27,95,73,109,112,111,114,116,76,111,99,107,67,
+ 111,110,116,101,120,116,46,95,95,101,120,105,116,95,95,78,
+ 41,6,114,1,0,0,0,114,0,0,0,0,114,2,0,0,
+ 0,114,3,0,0,0,114,23,0,0,0,114,30,0,0,0,
+ 114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,114,166,0,0,0,80,3,0,0,115,6,0,
+ 0,0,8,2,4,2,8,4,114,166,0,0,0,99,3,0,
+ 0,0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,
+ 0,0,115,64,0,0,0,124,1,106,0,100,1,124,2,100,
+ 2,24,0,131,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,106,3,124,4,124,0,131,
+ 2,83,0,124,4,83,0,41,6,122,50,82,101,115,111,108,
+ 118,101,32,97,32,114,101,108,97,116,105,118,101,32,109,111,
+ 100,117,108,101,32,110,97,109,101,32,116,111,32,97,110,32,
+ 97,98,115,111,108,117,116,101,32,111,110,101,46,114,121,0,
+ 0,0,114,45,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,33,0,0,0,
+ 122,5,123,125,46,123,125,41,4,218,6,114,115,112,108,105,
+ 116,218,3,108,101,110,218,10,86,97,108,117,101,69,114,114,
+ 111,114,114,50,0,0,0,41,5,114,15,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,93,3,0,0,115,10,0,0,
+ 0,0,2,16,1,12,1,8,1,8,1,114,172,0,0,0,
+ 99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,67,0,0,0,115,34,0,0,0,124,0,106,0,124,1,
+ 124,2,131,2,125,3,124,3,100,0,107,8,114,24,100,0,
+ 83,0,116,1,124,1,124,3,131,2,83,0,41,1,78,41,
+ 2,114,156,0,0,0,114,85,0,0,0,41,4,218,6,102,
+ 105,110,100,101,114,114,15,0,0,0,114,153,0,0,0,114,
+ 99,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,102,3,0,0,115,8,0,0,0,0,
+ 3,12,1,8,1,4,1,114,174,0,0,0,99,3,0,0,
+ 0,0,0,0,0,10,0,0,0,27,0,0,0,67,0,0,
+ 0,115,244,0,0,0,116,0,106,1,125,3,124,3,100,1,
+ 107,8,114,22,116,2,100,2,131,1,130,1,124,3,115,38,
+ 116,3,106,4,100,3,116,5,131,2,1,0,124,0,116,0,
+ 106,6,107,6,125,4,120,190,124,3,68,0,93,178,125,5,
+ 116,7,131,0,143,72,1,0,121,10,124,5,106,8,125,6,
+ 87,0,110,42,4,0,116,9,107,10,114,118,1,0,1,0,
+ 1,0,116,10,124,5,124,0,124,1,131,3,125,7,124,7,
+ 100,1,107,8,114,114,119,54,89,0,110,14,88,0,124,6,
+ 124,0,124,1,124,2,131,3,125,7,87,0,100,1,81,0,
+ 82,0,88,0,124,7,100,1,107,9,114,54,124,4,12,0,
+ 114,228,124,0,116,0,106,6,107,6,114,228,116,0,106,6,
+ 124,0,25,0,125,8,121,10,124,8,106,11,125,9,87,0,
+ 110,20,4,0,116,9,107,10,114,206,1,0,1,0,1,0,
+ 124,7,83,0,88,0,124,9,100,1,107,8,114,222,124,7,
+ 83,0,113,232,124,9,83,0,113,54,124,7,83,0,113,54,
+ 87,0,100,1,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,14,0,0,0,218,9,109,101,116,97,
+ 95,112,97,116,104,114,77,0,0,0,114,142,0,0,0,114,
+ 143,0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,
+ 105,110,103,114,21,0,0,0,114,166,0,0,0,114,155,0,
+ 0,0,114,96,0,0,0,114,174,0,0,0,114,95,0,0,
+ 0,41,10,114,15,0,0,0,114,153,0,0,0,114,154,0,
+ 0,0,114,175,0,0,0,90,9,105,115,95,114,101,108,111,
+ 97,100,114,173,0,0,0,114,155,0,0,0,114,88,0,0,
+ 0,114,89,0,0,0,114,95,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,111,3,0,0,115,54,0,0,0,0,
+ 2,6,1,8,2,8,3,4,1,12,5,10,1,10,1,8,
+ 1,2,1,10,1,14,1,12,1,8,1,8,2,22,1,8,
+ 2,16,1,10,1,2,1,10,1,14,4,6,2,8,1,6,
+ 2,6,2,8,2,114,177,0,0,0,99,3,0,0,0,0,
+ 0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,
+ 140,0,0,0,116,0,124,0,116,1,131,2,115,28,116,2,
+ 100,1,106,3,116,4,124,0,131,1,131,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,114,116,0,124,1,116,1,131,2,
+ 115,72,116,2,100,4,131,1,130,1,110,42,124,1,115,86,
+ 116,6,100,5,131,1,130,1,110,28,124,1,116,7,106,8,
+ 107,7,114,114,100,6,125,3,116,9,124,3,106,3,124,1,
+ 131,1,131,1,130,1,124,0,12,0,114,136,124,2,100,2,
+ 107,2,114,136,116,5,100,7,131,1,130,1,100,8,83,0,
+ 41,9,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,33,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,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,
- 33,0,0,0,122,5,123,125,46,123,125,41,4,218,6,114,
- 115,112,108,105,116,218,3,108,101,110,218,10,86,97,108,117,
- 101,69,114,114,111,114,114,50,0,0,0,41,5,114,15,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,93,3,0,0,
- 115,10,0,0,0,0,2,22,1,18,1,12,1,10,1,114,
- 171,0,0,0,99,3,0,0,0,0,0,0,0,4,0,0,
- 0,3,0,0,0,67,0,0,0,115,47,0,0,0,124,0,
- 0,106,0,0,124,1,0,124,2,0,131,2,0,125,3,0,
- 124,3,0,100,0,0,107,8,0,114,34,0,100,0,0,83,
- 116,1,0,124,1,0,124,3,0,131,2,0,83,41,1,78,
- 41,2,114,155,0,0,0,114,85,0,0,0,41,4,218,6,
- 102,105,110,100,101,114,114,15,0,0,0,114,152,0,0,0,
- 114,99,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,102,3,0,0,115,8,0,0,0,
- 0,3,18,1,12,1,4,1,114,173,0,0,0,99,3,0,
- 0,0,0,0,0,0,9,0,0,0,27,0,0,0,67,0,
- 0,0,115,42,1,0,0,116,0,0,106,1,0,100,1,0,
- 107,9,0,114,41,0,116,0,0,106,1,0,12,114,41,0,
- 116,2,0,106,3,0,100,2,0,116,4,0,131,2,0,1,
- 124,0,0,116,0,0,106,5,0,107,6,0,125,3,0,120,
- 235,0,116,0,0,106,1,0,68,93,220,0,125,4,0,116,
- 6,0,131,0,0,143,90,0,1,121,13,0,124,4,0,106,
- 7,0,125,5,0,87,110,51,0,4,116,8,0,107,10,0,
- 114,148,0,1,1,1,116,9,0,124,4,0,124,0,0,124,
- 1,0,131,3,0,125,6,0,124,6,0,100,1,0,107,8,
- 0,114,144,0,119,66,0,89,110,19,0,88,124,5,0,124,
- 0,0,124,1,0,124,2,0,131,3,0,125,6,0,87,100,
- 1,0,81,82,88,124,6,0,100,1,0,107,9,0,114,66,
- 0,124,3,0,12,114,26,1,124,0,0,116,0,0,106,5,
- 0,107,6,0,114,26,1,116,0,0,106,5,0,124,0,0,
- 25,125,7,0,121,13,0,124,7,0,106,10,0,125,8,0,
- 87,110,22,0,4,116,8,0,107,10,0,114,2,1,1,1,
- 1,124,6,0,83,89,113,30,1,88,124,8,0,100,1,0,
- 107,8,0,114,19,1,124,6,0,83,124,8,0,83,113,66,
- 0,124,6,0,83,113,66,0,87,100,1,0,83,100,1,0,
- 83,41,3,122,23,70,105,110,100,32,97,32,109,111,100,117,
- 108,101,39,115,32,108,111,97,100,101,114,46,78,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,11,114,14,0,0,0,218,9,109,101,
- 116,97,95,112,97,116,104,114,141,0,0,0,114,142,0,0,
- 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,
- 114,21,0,0,0,114,165,0,0,0,114,154,0,0,0,114,
- 96,0,0,0,114,173,0,0,0,114,95,0,0,0,41,9,
- 114,15,0,0,0,114,152,0,0,0,114,153,0,0,0,90,
- 9,105,115,95,114,101,108,111,97,100,114,172,0,0,0,114,
- 154,0,0,0,114,88,0,0,0,114,89,0,0,0,114,95,
- 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,111,3,
- 0,0,115,48,0,0,0,0,2,25,1,16,4,15,1,16,
- 1,10,1,3,1,13,1,13,1,18,1,12,1,8,2,25,
- 1,12,2,22,1,13,1,3,1,13,1,13,4,9,2,12,
- 1,4,2,7,2,8,2,114,176,0,0,0,99,3,0,0,
- 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,
- 0,115,185,0,0,0,116,0,0,124,0,0,116,1,0,131,
- 2,0,115,42,0,116,2,0,100,1,0,106,3,0,116,4,
- 0,124,0,0,131,1,0,131,1,0,131,1,0,130,1,0,
- 124,2,0,100,2,0,107,0,0,114,66,0,116,5,0,100,
- 3,0,131,1,0,130,1,0,124,2,0,100,2,0,107,4,
- 0,114,150,0,116,0,0,124,1,0,116,1,0,131,2,0,
- 115,108,0,116,2,0,100,4,0,131,1,0,130,1,0,110,
- 42,0,124,1,0,116,6,0,106,7,0,107,7,0,114,150,
- 0,100,5,0,125,3,0,116,8,0,124,3,0,106,3,0,
- 124,1,0,131,1,0,131,1,0,130,1,0,124,0,0,12,
- 114,181,0,124,2,0,100,2,0,107,2,0,114,181,0,116,
- 5,0,100,6,0,131,1,0,130,1,0,100,7,0,83,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,33,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,61,80,97,114,101,
- 110,116,32,109,111,100,117,108,101,32,123,33,114,125,32,110,
- 111,116,32,108,111,97,100,101,100,44,32,99,97,110,110,111,
- 116,32,112,101,114,102,111,114,109,32,114,101,108,97,116,105,
- 118,101,32,105,109,112,111,114,116,122,17,69,109,112,116,121,
- 32,109,111,100,117,108,101,32,110,97,109,101,78,41,9,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,50,0,0,0,
- 114,13,0,0,0,114,168,0,0,0,114,14,0,0,0,114,
- 21,0,0,0,218,11,83,121,115,116,101,109,69,114,114,111,
- 114,41,4,114,15,0,0,0,114,169,0,0,0,114,170,0,
- 0,0,114,147,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,151,3,0,0,115,24,0,0,0,0,2,
- 15,1,27,1,12,1,12,1,12,1,15,1,15,1,15,1,
- 6,2,21,1,19,1,114,181,0,0,0,122,16,78,111,32,
- 109,111,100,117,108,101,32,110,97,109,101,100,32,122,4,123,
- 33,114,125,99,2,0,0,0,0,0,0,0,8,0,0,0,
- 12,0,0,0,67,0,0,0,115,40,1,0,0,100,0,0,
- 125,2,0,124,0,0,106,0,0,100,1,0,131,1,0,100,
- 2,0,25,125,3,0,124,3,0,114,175,0,124,3,0,116,
- 1,0,106,2,0,107,7,0,114,59,0,116,3,0,124,1,
- 0,124,3,0,131,2,0,1,124,0,0,116,1,0,106,2,
- 0,107,6,0,114,85,0,116,1,0,106,2,0,124,0,0,
- 25,83,116,1,0,106,2,0,124,3,0,25,125,4,0,121,
- 13,0,124,4,0,106,4,0,125,2,0,87,110,61,0,4,
- 116,5,0,107,10,0,114,174,0,1,1,1,116,6,0,100,
- 3,0,23,106,7,0,124,0,0,124,3,0,131,2,0,125,
- 5,0,116,8,0,124,5,0,100,4,0,124,0,0,131,1,
- 1,100,0,0,130,2,0,89,110,1,0,88,116,9,0,124,
- 0,0,124,2,0,131,2,0,125,6,0,124,6,0,100,0,
- 0,107,8,0,114,232,0,116,8,0,116,6,0,106,7,0,
- 124,0,0,131,1,0,100,4,0,124,0,0,131,1,1,130,
- 1,0,110,12,0,116,10,0,124,6,0,131,1,0,125,7,
- 0,124,3,0,114,36,1,116,1,0,106,2,0,124,3,0,
- 25,125,4,0,116,11,0,124,4,0,124,0,0,106,0,0,
- 100,1,0,131,1,0,100,5,0,25,124,7,0,131,3,0,
- 1,124,7,0,83,41,6,78,114,121,0,0,0,114,33,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,15,0,0,0,
- 114,140,0,0,0,41,12,114,122,0,0,0,114,14,0,0,
- 0,114,21,0,0,0,114,65,0,0,0,114,131,0,0,0,
- 114,96,0,0,0,218,8,95,69,82,82,95,77,83,71,114,
- 50,0,0,0,114,77,0,0,0,114,176,0,0,0,114,149,
- 0,0,0,114,5,0,0,0,41,8,114,15,0,0,0,218,
- 7,105,109,112,111,114,116,95,114,152,0,0,0,114,123,0,
- 0,0,90,13,112,97,114,101,110,116,95,109,111,100,117,108,
- 101,114,147,0,0,0,114,88,0,0,0,114,89,0,0,0,
- 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
- 23,95,102,105,110,100,95,97,110,100,95,108,111,97,100,95,
- 117,110,108,111,99,107,101,100,171,3,0,0,115,42,0,0,
- 0,0,1,6,1,19,1,6,1,15,1,13,2,15,1,11,
- 1,13,1,3,1,13,1,13,1,22,1,26,1,15,1,12,
- 1,30,2,12,1,6,2,13,1,29,1,114,184,0,0,0,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,10,0,0,
- 0,67,0,0,0,115,37,0,0,0,116,0,0,124,0,0,
- 131,1,0,143,18,0,1,116,1,0,124,0,0,124,1,0,
- 131,2,0,83,87,100,1,0,81,82,88,100,1,0,83,41,
- 2,122,54,70,105,110,100,32,97,110,100,32,108,111,97,100,
- 32,116,104,101,32,109,111,100,117,108,101,44,32,97,110,100,
- 32,114,101,108,101,97,115,101,32,116,104,101,32,105,109,112,
- 111,114,116,32,108,111,99,107,46,78,41,2,114,54,0,0,
- 0,114,184,0,0,0,41,2,114,15,0,0,0,114,183,0,
+ 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,61,80,97,114,101,110,116,32,109,111,100,117,
+ 108,101,32,123,33,114,125,32,110,111,116,32,108,111,97,100,
+ 101,100,44,32,99,97,110,110,111,116,32,112,101,114,102,111,
+ 114,109,32,114,101,108,97,116,105,118,101,32,105,109,112,111,
+ 114,116,122,17,69,109,112,116,121,32,109,111,100,117,108,101,
+ 32,110,97,109,101,78,41,10,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,50,0,0,0,114,13,0,0,0,114,169,
+ 0,0,0,114,77,0,0,0,114,14,0,0,0,114,21,0,
+ 0,0,218,11,83,121,115,116,101,109,69,114,114,111,114,41,
+ 4,114,15,0,0,0,114,170,0,0,0,114,171,0,0,0,
+ 114,148,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,158,3,0,0,115,28,0,0,0,0,2,10,1,
+ 18,1,8,1,8,1,8,1,10,1,10,1,4,1,10,2,
+ 10,1,4,2,14,1,14,1,114,182,0,0,0,122,16,78,
+ 111,32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,
+ 4,123,33,114,125,99,2,0,0,0,0,0,0,0,8,0,
+ 0,0,12,0,0,0,67,0,0,0,115,224,0,0,0,100,
+ 0,125,2,124,0,106,0,100,1,131,1,100,2,25,0,125,
+ 3,124,3,114,136,124,3,116,1,106,2,107,7,114,42,116,
+ 3,124,1,124,3,131,2,1,0,124,0,116,1,106,2,107,
+ 6,114,62,116,1,106,2,124,0,25,0,83,0,116,1,106,
+ 2,124,3,25,0,125,4,121,10,124,4,106,4,125,2,87,
+ 0,110,52,4,0,116,5,107,10,114,134,1,0,1,0,1,
+ 0,116,6,100,3,23,0,106,7,124,0,124,3,131,2,125,
+ 5,116,8,124,5,100,4,124,0,144,1,131,1,100,0,130,
+ 2,89,0,110,2,88,0,116,9,124,0,124,2,131,2,125,
+ 6,124,6,100,0,107,8,114,176,116,8,116,6,106,7,124,
+ 0,131,1,100,4,124,0,144,1,131,1,130,1,110,8,116,
+ 10,124,6,131,1,125,7,124,3,114,220,116,1,106,2,124,
+ 3,25,0,125,4,116,11,124,4,124,0,106,0,100,1,131,
+ 1,100,5,25,0,124,7,131,3,1,0,124,7,83,0,41,
+ 6,78,114,121,0,0,0,114,33,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,15,0,0,0,114,141,0,0,0,41,
+ 12,114,122,0,0,0,114,14,0,0,0,114,21,0,0,0,
+ 114,65,0,0,0,114,131,0,0,0,114,96,0,0,0,218,
+ 8,95,69,82,82,95,77,83,71,114,50,0,0,0,114,77,
+ 0,0,0,114,177,0,0,0,114,150,0,0,0,114,5,0,
+ 0,0,41,8,114,15,0,0,0,218,7,105,109,112,111,114,
+ 116,95,114,153,0,0,0,114,123,0,0,0,90,13,112,97,
+ 114,101,110,116,95,109,111,100,117,108,101,114,148,0,0,0,
+ 114,88,0,0,0,114,89,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,218,23,95,102,105,110,100,
+ 95,97,110,100,95,108,111,97,100,95,117,110,108,111,99,107,
+ 101,100,181,3,0,0,115,42,0,0,0,0,1,4,1,14,
+ 1,4,1,10,1,10,2,10,1,10,1,10,1,2,1,10,
+ 1,14,1,16,1,22,1,10,1,8,1,22,2,8,1,4,
+ 2,10,1,22,1,114,185,0,0,0,99,2,0,0,0,0,
+ 0,0,0,2,0,0,0,10,0,0,0,67,0,0,0,115,
+ 30,0,0,0,116,0,124,0,131,1,143,12,1,0,116,1,
+ 124,0,124,1,131,2,83,0,81,0,82,0,88,0,100,1,
+ 83,0,41,2,122,54,70,105,110,100,32,97,110,100,32,108,
+ 111,97,100,32,116,104,101,32,109,111,100,117,108,101,44,32,
+ 97,110,100,32,114,101,108,101,97,115,101,32,116,104,101,32,
+ 105,109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,
+ 54,0,0,0,114,185,0,0,0,41,2,114,15,0,0,0,
+ 114,184,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,208,3,0,0,115,4,0,0,0,0,2,10,
+ 1,114,186,0,0,0,114,33,0,0,0,99,3,0,0,0,
+ 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,
+ 115,122,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,106,3,131,0,1,0,124,0,116,
+ 4,106,5,107,7,114,60,116,6,124,0,116,7,131,2,83,
+ 0,116,4,106,5,124,0,25,0,125,3,124,3,100,2,107,
+ 8,114,110,116,2,106,8,131,0,1,0,100,3,106,9,124,
+ 0,131,1,125,4,116,10,124,4,100,4,124,0,144,1,131,
+ 1,130,1,116,11,124,0,131,1,1,0,124,3,83,0,41,
+ 5,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,33,0,0,0,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,15,0,0,0,41,12,114,
+ 182,0,0,0,114,172,0,0,0,114,57,0,0,0,114,146,
+ 0,0,0,114,14,0,0,0,114,21,0,0,0,114,186,0,
+ 0,0,218,11,95,103,99,100,95,105,109,112,111,114,116,114,
+ 58,0,0,0,114,50,0,0,0,114,77,0,0,0,114,63,
+ 0,0,0,41,5,114,15,0,0,0,114,170,0,0,0,114,
+ 171,0,0,0,114,89,0,0,0,114,74,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,187,0,
+ 0,0,214,3,0,0,115,28,0,0,0,0,9,12,1,8,
+ 1,12,1,8,1,10,1,10,1,10,1,8,1,8,1,4,
+ 1,6,1,14,1,8,1,114,187,0,0,0,99,3,0,0,
+ 0,0,0,0,0,6,0,0,0,17,0,0,0,67,0,0,
+ 0,115,178,0,0,0,116,0,124,0,100,1,131,2,114,174,
+ 100,2,124,1,107,6,114,58,116,1,124,1,131,1,125,1,
+ 124,1,106,2,100,2,131,1,1,0,116,0,124,0,100,3,
+ 131,2,114,58,124,1,106,3,124,0,106,4,131,1,1,0,
+ 120,114,124,1,68,0,93,106,125,3,116,0,124,0,124,3,
+ 131,2,115,64,100,4,106,5,124,0,106,6,124,3,131,2,
+ 125,4,121,14,116,7,124,2,124,4,131,2,1,0,87,0,
+ 113,64,4,0,116,8,107,10,114,168,1,0,125,5,1,0,
+ 122,34,116,9,124,5,131,1,106,10,116,11,131,1,114,150,
+ 124,5,106,12,124,4,107,2,114,150,119,64,130,0,87,0,
+ 89,0,100,5,100,5,125,5,126,5,88,0,113,64,88,0,
+ 113,64,87,0,124,0,83,0,41,6,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,114,131,0,0,0,250,
+ 1,42,218,7,95,95,97,108,108,95,95,122,5,123,125,46,
+ 123,125,78,41,13,114,4,0,0,0,114,130,0,0,0,218,
+ 6,114,101,109,111,118,101,218,6,101,120,116,101,110,100,114,
+ 189,0,0,0,114,50,0,0,0,114,1,0,0,0,114,65,
+ 0,0,0,114,77,0,0,0,114,179,0,0,0,114,71,0,
+ 0,0,218,15,95,69,82,82,95,77,83,71,95,80,82,69,
+ 70,73,88,114,15,0,0,0,41,6,114,89,0,0,0,218,
+ 8,102,114,111,109,108,105,115,116,114,184,0,0,0,218,1,
+ 120,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,
+ 218,16,95,104,97,110,100,108,101,95,102,114,111,109,108,105,
+ 115,116,238,3,0,0,115,34,0,0,0,0,10,10,1,8,
+ 1,8,1,10,1,10,1,12,1,10,1,10,1,14,1,2,
+ 1,14,1,16,4,14,1,10,1,2,1,24,1,114,195,0,
+ 0,0,99,1,0,0,0,0,0,0,0,3,0,0,0,7,
+ 0,0,0,67,0,0,0,115,160,0,0,0,124,0,106,0,
+ 100,1,131,1,125,1,124,0,106,0,100,2,131,1,125,2,
+ 124,1,100,3,107,9,114,92,124,2,100,3,107,9,114,86,
+ 124,1,124,2,106,1,107,3,114,86,116,2,106,3,100,4,
+ 106,4,100,5,124,1,155,2,100,6,124,2,106,1,155,2,
+ 100,7,103,5,131,1,116,5,100,8,100,9,144,1,131,2,
+ 1,0,124,1,83,0,110,64,124,2,100,3,107,9,114,108,
+ 124,2,106,1,83,0,110,48,116,2,106,3,100,10,116,5,
+ 100,8,100,9,144,1,131,2,1,0,124,0,100,11,25,0,
+ 125,1,100,12,124,0,107,7,114,156,124,1,106,6,100,13,
+ 131,1,100,14,25,0,125,1,124,1,83,0,41,15,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,134,0,0,0,114,95,0,0,
+ 0,78,218,0,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,114,
+ 140,0,0,0,233,3,0,0,0,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,131,0,0,0,114,121,
+ 0,0,0,114,33,0,0,0,41,7,114,42,0,0,0,114,
+ 123,0,0,0,114,142,0,0,0,114,143,0,0,0,114,115,
+ 0,0,0,114,176,0,0,0,114,122,0,0,0,41,3,218,
+ 7,103,108,111,98,97,108,115,114,170,0,0,0,114,88,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,198,3,0,0,115,4,0,0,0,0,2,13,1,114,185,
- 0,0,0,114,33,0,0,0,99,3,0,0,0,0,0,0,
- 0,5,0,0,0,4,0,0,0,67,0,0,0,115,166,0,
- 0,0,116,0,0,124,0,0,124,1,0,124,2,0,131,3,
- 0,1,124,2,0,100,1,0,107,4,0,114,46,0,116,1,
- 0,124,0,0,124,1,0,124,2,0,131,3,0,125,0,0,
- 116,2,0,106,3,0,131,0,0,1,124,0,0,116,4,0,
- 106,5,0,107,7,0,114,84,0,116,6,0,124,0,0,116,
- 7,0,131,2,0,83,116,4,0,106,5,0,124,0,0,25,
- 125,3,0,124,3,0,100,2,0,107,8,0,114,152,0,116,
- 2,0,106,8,0,131,0,0,1,100,3,0,106,9,0,124,
- 0,0,131,1,0,125,4,0,116,10,0,124,4,0,100,4,
- 0,124,0,0,131,1,1,130,1,0,116,11,0,124,0,0,
- 131,1,0,1,124,3,0,83,41,5,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,33,0,0,0,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,15,0,0,0,41,12,114,181,0,0,0,114,171,0,
- 0,0,114,57,0,0,0,114,145,0,0,0,114,14,0,0,
- 0,114,21,0,0,0,114,185,0,0,0,218,11,95,103,99,
- 100,95,105,109,112,111,114,116,114,58,0,0,0,114,50,0,
- 0,0,114,77,0,0,0,114,63,0,0,0,41,5,114,15,
- 0,0,0,114,169,0,0,0,114,170,0,0,0,114,89,0,
- 0,0,114,74,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,186,0,0,0,204,3,0,0,115,
- 28,0,0,0,0,9,16,1,12,1,18,1,10,1,15,1,
- 13,1,13,1,12,1,10,1,6,1,9,1,18,1,10,1,
- 114,186,0,0,0,99,3,0,0,0,0,0,0,0,6,0,
- 0,0,17,0,0,0,67,0,0,0,115,239,0,0,0,116,
- 0,0,124,0,0,100,1,0,131,2,0,114,235,0,100,2,
- 0,124,1,0,107,6,0,114,83,0,116,1,0,124,1,0,
- 131,1,0,125,1,0,124,1,0,106,2,0,100,2,0,131,
- 1,0,1,116,0,0,124,0,0,100,3,0,131,2,0,114,
- 83,0,124,1,0,106,3,0,124,0,0,106,4,0,131,1,
- 0,1,120,149,0,124,1,0,68,93,141,0,125,3,0,116,
- 0,0,124,0,0,124,3,0,131,2,0,115,90,0,100,4,
- 0,106,5,0,124,0,0,106,6,0,124,3,0,131,2,0,
- 125,4,0,121,17,0,116,7,0,124,2,0,124,4,0,131,
- 2,0,1,87,113,90,0,4,116,8,0,107,10,0,114,230,
- 0,1,125,5,0,1,122,47,0,116,9,0,124,5,0,131,
- 1,0,106,10,0,116,11,0,131,1,0,114,209,0,124,5,
- 0,106,12,0,124,4,0,107,2,0,114,209,0,119,90,0,
- 130,0,0,87,89,100,5,0,100,5,0,125,5,0,126,5,
- 0,88,113,90,0,88,113,90,0,87,124,0,0,83,41,6,
- 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,
- 114,131,0,0,0,250,1,42,218,7,95,95,97,108,108,95,
- 95,122,5,123,125,46,123,125,78,41,13,114,4,0,0,0,
- 114,130,0,0,0,218,6,114,101,109,111,118,101,218,6,101,
- 120,116,101,110,100,114,188,0,0,0,114,50,0,0,0,114,
- 1,0,0,0,114,65,0,0,0,114,77,0,0,0,114,178,
- 0,0,0,114,71,0,0,0,218,15,95,69,82,82,95,77,
- 83,71,95,80,82,69,70,73,88,114,15,0,0,0,41,6,
- 114,89,0,0,0,218,8,102,114,111,109,108,105,115,116,114,
- 183,0,0,0,218,1,120,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,218,16,95,104,97,110,100,108,101,95,
- 102,114,111,109,108,105,115,116,228,3,0,0,115,34,0,0,
- 0,0,10,15,1,12,1,12,1,13,1,15,1,16,1,13,
- 1,15,1,21,1,3,1,17,1,18,4,21,1,15,1,3,
- 1,26,1,114,194,0,0,0,99,1,0,0,0,0,0,0,
- 0,2,0,0,0,2,0,0,0,67,0,0,0,115,72,0,
- 0,0,124,0,0,106,0,0,100,1,0,131,1,0,125,1,
- 0,124,1,0,100,2,0,107,8,0,114,68,0,124,0,0,
- 100,3,0,25,125,1,0,100,4,0,124,0,0,107,7,0,
- 114,68,0,124,1,0,106,1,0,100,5,0,131,1,0,100,
- 6,0,25,125,1,0,124,1,0,83,41,7,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,134,0,0,0,78,114,1,0,0,0,
- 114,131,0,0,0,114,121,0,0,0,114,33,0,0,0,41,
- 2,114,42,0,0,0,114,122,0,0,0,41,2,218,7,103,
- 108,111,98,97,108,115,114,169,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,4,4,0,
- 0,115,12,0,0,0,0,7,15,1,12,1,10,1,12,1,
- 19,1,114,196,0,0,0,99,5,0,0,0,0,0,0,0,
- 9,0,0,0,5,0,0,0,67,0,0,0,115,227,0,0,
- 0,124,4,0,100,1,0,107,2,0,114,27,0,116,0,0,
- 124,0,0,131,1,0,125,5,0,110,54,0,124,1,0,100,
- 2,0,107,9,0,114,45,0,124,1,0,110,3,0,105,0,
- 0,125,6,0,116,1,0,124,6,0,131,1,0,125,7,0,
- 116,0,0,124,0,0,124,7,0,124,4,0,131,3,0,125,
- 5,0,124,3,0,115,207,0,124,4,0,100,1,0,107,2,
- 0,114,122,0,116,0,0,124,0,0,106,2,0,100,3,0,
- 131,1,0,100,1,0,25,131,1,0,83,124,0,0,115,132,
- 0,124,5,0,83,116,3,0,124,0,0,131,1,0,116,3,
- 0,124,0,0,106,2,0,100,3,0,131,1,0,100,1,0,
- 25,131,1,0,24,125,8,0,116,4,0,106,5,0,124,5,
- 0,106,6,0,100,2,0,116,3,0,124,5,0,106,6,0,
- 131,1,0,124,8,0,24,133,2,0,25,25,83,110,16,0,
- 116,7,0,124,5,0,124,3,0,116,0,0,131,3,0,83,
- 100,2,0,83,41,4,97,215,1,0,0,73,109,112,111,114,
+ 0,218,17,95,99,97,108,99,95,95,95,112,97,99,107,97,
+ 103,101,95,95,14,4,0,0,115,30,0,0,0,0,7,10,
+ 1,10,1,8,1,18,1,28,2,12,1,6,1,8,1,8,
+ 2,6,2,12,1,8,1,8,1,14,1,114,200,0,0,0,
+ 99,5,0,0,0,0,0,0,0,9,0,0,0,5,0,0,
+ 0,67,0,0,0,115,170,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,
+ 107,9,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,154,124,4,100,1,107,2,114,86,116,0,124,0,
+ 106,2,100,3,131,1,100,1,25,0,131,1,83,0,113,166,
+ 124,0,115,96,124,5,83,0,113,166,116,3,124,0,131,1,
+ 116,3,124,0,106,2,100,3,131,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,110,12,116,7,124,5,124,3,116,0,131,3,83,0,
+ 100,2,83,0,41,4,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,
@@ -1858,132 +1761,125 @@ const unsigned char _Py_M__importlib[] = {
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,33,0,0,0,78,114,121,0,0,0,41,8,114,
- 186,0,0,0,114,196,0,0,0,218,9,112,97,114,116,105,
- 116,105,111,110,114,167,0,0,0,114,14,0,0,0,114,21,
- 0,0,0,114,1,0,0,0,114,194,0,0,0,41,9,114,
- 15,0,0,0,114,195,0,0,0,218,6,108,111,99,97,108,
- 115,114,192,0,0,0,114,170,0,0,0,114,89,0,0,0,
- 90,8,103,108,111,98,97,108,115,95,114,169,0,0,0,90,
+ 187,0,0,0,114,200,0,0,0,218,9,112,97,114,116,105,
+ 116,105,111,110,114,168,0,0,0,114,14,0,0,0,114,21,
+ 0,0,0,114,1,0,0,0,114,195,0,0,0,41,9,114,
+ 15,0,0,0,114,199,0,0,0,218,6,108,111,99,97,108,
+ 115,114,193,0,0,0,114,171,0,0,0,114,89,0,0,0,
+ 90,8,103,108,111,98,97,108,115,95,114,170,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,19,4,0,0,115,26,0,0,0,0,11,12,1,
- 15,2,24,1,12,1,18,1,6,3,12,1,23,1,6,1,
- 4,4,35,3,40,2,114,199,0,0,0,99,1,0,0,0,
+ 116,95,95,41,4,0,0,115,26,0,0,0,0,11,8,1,
+ 10,2,16,1,8,1,12,1,4,3,8,1,20,1,4,1,
+ 6,4,26,3,32,2,114,203,0,0,0,99,1,0,0,0,
0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,
- 115,53,0,0,0,116,0,0,106,1,0,124,0,0,131,1,
- 0,125,1,0,124,1,0,100,0,0,107,8,0,114,43,0,
- 116,2,0,100,1,0,124,0,0,23,131,1,0,130,1,0,
- 116,3,0,124,1,0,131,1,0,83,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,150,0,0,0,114,
- 154,0,0,0,114,77,0,0,0,114,149,0,0,0,41,2,
- 114,15,0,0,0,114,88,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,54,4,0,
- 0,115,8,0,0,0,0,1,15,1,12,1,16,1,114,200,
- 0,0,0,99,2,0,0,0,0,0,0,0,12,0,0,0,
- 12,0,0,0,67,0,0,0,115,74,1,0,0,124,1,0,
- 97,0,0,124,0,0,97,1,0,116,2,0,116,1,0,131,
- 1,0,125,2,0,120,123,0,116,1,0,106,3,0,106,4,
- 0,131,0,0,68,93,106,0,92,2,0,125,3,0,125,4,
- 0,116,5,0,124,4,0,124,2,0,131,2,0,114,40,0,
- 124,3,0,116,1,0,106,6,0,107,6,0,114,91,0,116,
- 7,0,125,5,0,110,27,0,116,0,0,106,8,0,124,3,
- 0,131,1,0,114,40,0,116,9,0,125,5,0,110,3,0,
- 113,40,0,116,10,0,124,4,0,124,5,0,131,2,0,125,
- 6,0,116,11,0,124,6,0,124,4,0,131,2,0,1,113,
- 40,0,87,116,1,0,106,3,0,116,12,0,25,125,7,0,
- 120,73,0,100,5,0,68,93,65,0,125,8,0,124,8,0,
- 116,1,0,106,3,0,107,7,0,114,206,0,116,13,0,124,
- 8,0,131,1,0,125,9,0,110,13,0,116,1,0,106,3,
- 0,124,8,0,25,125,9,0,116,14,0,124,7,0,124,8,
- 0,124,9,0,131,3,0,1,113,170,0,87,121,16,0,116,
- 13,0,100,2,0,131,1,0,125,10,0,87,110,24,0,4,
- 116,15,0,107,10,0,114,25,1,1,1,1,100,3,0,125,
- 10,0,89,110,1,0,88,116,14,0,124,7,0,100,2,0,
- 124,10,0,131,3,0,1,116,13,0,100,4,0,131,1,0,
- 125,11,0,116,14,0,124,7,0,100,4,0,124,11,0,131,
- 3,0,1,100,3,0,83,41,6,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,114,141,0,0,0,114,34,0,0,0,78,
- 114,62,0,0,0,41,1,122,9,95,119,97,114,110,105,110,
- 103,115,41,16,114,57,0,0,0,114,14,0,0,0,114,13,
- 0,0,0,114,21,0,0,0,218,5,105,116,101,109,115,114,
- 177,0,0,0,114,76,0,0,0,114,150,0,0,0,114,82,
- 0,0,0,114,160,0,0,0,114,132,0,0,0,114,137,0,
- 0,0,114,1,0,0,0,114,200,0,0,0,114,5,0,0,
- 0,114,77,0,0,0,41,12,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,15,
- 0,0,0,114,89,0,0,0,114,99,0,0,0,114,88,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,90,13,116,
- 104,114,101,97,100,95,109,111,100,117,108,101,90,14,119,101,
- 97,107,114,101,102,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,61,4,0,0,115,50,0,0,0,0,9,6,1,
- 6,3,12,1,28,1,15,1,15,1,9,1,15,1,9,2,
- 3,1,15,1,17,3,13,1,13,1,15,1,15,2,13,1,
- 20,3,3,1,16,1,13,2,11,1,16,3,12,1,114,204,
- 0,0,0,99,2,0,0,0,0,0,0,0,3,0,0,0,
- 3,0,0,0,67,0,0,0,115,87,0,0,0,116,0,0,
- 124,0,0,124,1,0,131,2,0,1,116,1,0,106,2,0,
- 106,3,0,116,4,0,131,1,0,1,116,1,0,106,2,0,
- 106,3,0,116,5,0,131,1,0,1,100,1,0,100,2,0,
- 108,6,0,125,2,0,124,2,0,97,7,0,124,2,0,106,
- 8,0,116,1,0,106,9,0,116,10,0,25,131,1,0,1,
- 100,2,0,83,41,3,122,50,73,110,115,116,97,108,108,32,
- 105,109,112,111,114,116,108,105,98,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,114,33,0,0,0,78,
- 41,11,114,204,0,0,0,114,14,0,0,0,114,174,0,0,
- 0,114,113,0,0,0,114,150,0,0,0,114,160,0,0,0,
- 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,119,0,0,
- 0,218,8,95,105,110,115,116,97,108,108,114,21,0,0,0,
- 114,1,0,0,0,41,3,114,202,0,0,0,114,203,0,0,
- 0,114,205,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,11,0,0,0,114,206,0,0,0,108,4,0,0,115,12,
- 0,0,0,0,2,13,2,16,1,16,3,12,1,6,1,114,
- 206,0,0,0,41,51,114,3,0,0,0,114,119,0,0,0,
- 114,12,0,0,0,114,16,0,0,0,114,17,0,0,0,114,
- 59,0,0,0,114,41,0,0,0,114,48,0,0,0,114,31,
- 0,0,0,114,32,0,0,0,114,53,0,0,0,114,54,0,
- 0,0,114,56,0,0,0,114,63,0,0,0,114,65,0,0,
- 0,114,75,0,0,0,114,81,0,0,0,114,84,0,0,0,
- 114,90,0,0,0,114,101,0,0,0,114,102,0,0,0,114,
- 106,0,0,0,114,85,0,0,0,218,6,111,98,106,101,99,
- 116,90,9,95,80,79,80,85,76,65,84,69,114,132,0,0,
- 0,114,137,0,0,0,114,144,0,0,0,114,97,0,0,0,
- 114,86,0,0,0,114,148,0,0,0,114,149,0,0,0,114,
- 87,0,0,0,114,150,0,0,0,114,160,0,0,0,114,165,
- 0,0,0,114,171,0,0,0,114,173,0,0,0,114,176,0,
- 0,0,114,181,0,0,0,114,191,0,0,0,114,182,0,0,
- 0,114,184,0,0,0,114,185,0,0,0,114,186,0,0,0,
- 114,194,0,0,0,114,196,0,0,0,114,199,0,0,0,114,
- 200,0,0,0,114,204,0,0,0,114,206,0,0,0,114,10,
- 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,
- 0,0,218,8,60,109,111,100,117,108,101,62,8,0,0,0,
- 115,96,0,0,0,6,17,6,2,12,8,12,4,19,20,6,
- 2,6,3,22,4,19,68,19,21,19,19,12,19,12,19,12,
- 11,18,8,12,11,12,12,12,16,12,36,19,27,19,101,24,
- 26,9,3,18,45,18,60,12,18,12,17,12,25,12,29,12,
- 23,12,16,19,73,19,77,19,13,12,9,12,9,15,40,12,
- 17,6,1,10,2,12,27,12,6,18,24,12,32,12,15,24,
- 35,12,7,12,47,
+ 115,38,0,0,0,116,0,106,1,124,0,131,1,125,1,124,
+ 1,100,0,107,8,114,30,116,2,100,1,124,0,23,0,131,
+ 1,130,1,116,3,124,1,131,1,83,0,41,2,78,122,25,
+ 110,111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,
+ 108,101,32,110,97,109,101,100,32,41,4,114,151,0,0,0,
+ 114,155,0,0,0,114,77,0,0,0,114,150,0,0,0,41,
+ 2,114,15,0,0,0,114,88,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,76,4,
+ 0,0,115,8,0,0,0,0,1,10,1,8,1,12,1,114,
+ 204,0,0,0,99,2,0,0,0,0,0,0,0,12,0,0,
+ 0,12,0,0,0,67,0,0,0,115,244,0,0,0,124,1,
+ 97,0,124,0,97,1,116,2,116,1,131,1,125,2,120,86,
+ 116,1,106,3,106,4,131,0,68,0,93,72,92,2,125,3,
+ 125,4,116,5,124,4,124,2,131,2,114,28,124,3,116,1,
+ 106,6,107,6,114,62,116,7,125,5,110,18,116,0,106,8,
+ 124,3,131,1,114,28,116,9,125,5,110,2,113,28,116,10,
+ 124,4,124,5,131,2,125,6,116,11,124,6,124,4,131,2,
+ 1,0,113,28,87,0,116,1,106,3,116,12,25,0,125,7,
+ 120,54,100,5,68,0,93,46,125,8,124,8,116,1,106,3,
+ 107,7,114,144,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,120,87,0,121,12,116,13,100,2,131,1,
+ 125,10,87,0,110,24,4,0,116,15,107,10,114,206,1,0,
+ 1,0,1,0,100,3,125,10,89,0,110,2,88,0,116,14,
+ 124,7,100,2,124,10,131,3,1,0,116,13,100,4,131,1,
+ 125,11,116,14,124,7,100,4,124,11,131,3,1,0,100,3,
+ 83,0,41,6,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,
+ 114,142,0,0,0,114,34,0,0,0,78,114,62,0,0,0,
+ 41,1,122,9,95,119,97,114,110,105,110,103,115,41,16,114,
+ 57,0,0,0,114,14,0,0,0,114,13,0,0,0,114,21,
+ 0,0,0,218,5,105,116,101,109,115,114,178,0,0,0,114,
+ 76,0,0,0,114,151,0,0,0,114,82,0,0,0,114,161,
+ 0,0,0,114,132,0,0,0,114,137,0,0,0,114,1,0,
+ 0,0,114,204,0,0,0,114,5,0,0,0,114,77,0,0,
+ 0,41,12,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,15,0,0,0,114,89,
+ 0,0,0,114,99,0,0,0,114,88,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,90,13,116,104,114,101,97,100,
+ 95,109,111,100,117,108,101,90,14,119,101,97,107,114,101,102,
+ 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,83,4,
+ 0,0,115,50,0,0,0,0,9,4,1,4,3,8,1,20,
+ 1,10,1,10,1,6,1,10,1,6,2,2,1,10,1,14,
+ 3,10,1,10,1,10,1,10,2,10,1,16,3,2,1,12,
+ 1,14,2,10,1,12,3,8,1,114,208,0,0,0,99,2,
+ 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,
+ 0,0,0,115,66,0,0,0,116,0,124,0,124,1,131,2,
+ 1,0,116,1,106,2,106,3,116,4,131,1,1,0,116,1,
+ 106,2,106,3,116,5,131,1,1,0,100,1,100,2,108,6,
+ 125,2,124,2,97,7,124,2,106,8,116,1,106,9,116,10,
+ 25,0,131,1,1,0,100,2,83,0,41,3,122,50,73,110,
+ 115,116,97,108,108,32,105,109,112,111,114,116,108,105,98,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,
+ 114,33,0,0,0,78,41,11,114,208,0,0,0,114,14,0,
+ 0,0,114,175,0,0,0,114,113,0,0,0,114,151,0,0,
+ 0,114,161,0,0,0,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,119,0,0,0,218,8,95,105,110,115,116,97,108,
+ 108,114,21,0,0,0,114,1,0,0,0,41,3,114,206,0,
+ 0,0,114,207,0,0,0,114,209,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,210,0,0,0,
+ 130,4,0,0,115,12,0,0,0,0,2,10,2,12,1,12,
+ 3,8,1,4,1,114,210,0,0,0,41,2,78,78,41,1,
+ 78,41,2,78,114,33,0,0,0,41,51,114,3,0,0,0,
+ 114,119,0,0,0,114,12,0,0,0,114,16,0,0,0,114,
+ 17,0,0,0,114,59,0,0,0,114,41,0,0,0,114,48,
+ 0,0,0,114,31,0,0,0,114,32,0,0,0,114,53,0,
+ 0,0,114,54,0,0,0,114,56,0,0,0,114,63,0,0,
+ 0,114,65,0,0,0,114,75,0,0,0,114,81,0,0,0,
+ 114,84,0,0,0,114,90,0,0,0,114,101,0,0,0,114,
+ 102,0,0,0,114,106,0,0,0,114,85,0,0,0,218,6,
+ 111,98,106,101,99,116,90,9,95,80,79,80,85,76,65,84,
+ 69,114,132,0,0,0,114,137,0,0,0,114,145,0,0,0,
+ 114,97,0,0,0,114,86,0,0,0,114,149,0,0,0,114,
+ 150,0,0,0,114,87,0,0,0,114,151,0,0,0,114,161,
+ 0,0,0,114,166,0,0,0,114,172,0,0,0,114,174,0,
+ 0,0,114,177,0,0,0,114,182,0,0,0,114,192,0,0,
+ 0,114,183,0,0,0,114,185,0,0,0,114,186,0,0,0,
+ 114,187,0,0,0,114,195,0,0,0,114,200,0,0,0,114,
+ 203,0,0,0,114,204,0,0,0,114,208,0,0,0,114,210,
+ 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,218,8,60,109,111,100,117,108,101,
+ 62,8,0,0,0,115,96,0,0,0,4,17,4,2,8,8,
+ 8,4,14,20,4,2,4,3,16,4,14,68,14,21,14,19,
+ 8,19,8,19,8,11,14,8,8,11,8,12,8,16,8,36,
+ 14,27,14,101,16,26,6,3,10,45,14,60,8,18,8,17,
+ 8,25,8,29,8,23,8,16,14,73,14,77,14,13,8,9,
+ 8,9,10,47,8,20,4,1,8,2,8,27,8,6,10,24,
+ 8,32,8,27,18,35,8,7,8,47,
};
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index 27d7c8a..4fe2a98 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -1,1004 +1,915 @@
/* Auto-generated by Programs/_freeze_importlib.c */
const unsigned char _Py_M__importlib_external[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
- 0,64,0,0,0,115,244,2,0,0,100,0,0,90,0,0,
- 100,96,0,90,1,0,100,97,0,90,2,0,101,2,0,101,
- 1,0,23,90,3,0,100,4,0,100,5,0,132,0,0,90,
- 4,0,100,6,0,100,7,0,132,0,0,90,5,0,100,8,
- 0,100,9,0,132,0,0,90,6,0,100,10,0,100,11,0,
- 132,0,0,90,7,0,100,12,0,100,13,0,132,0,0,90,
- 8,0,100,14,0,100,15,0,132,0,0,90,9,0,100,16,
- 0,100,17,0,132,0,0,90,10,0,100,18,0,100,19,0,
- 132,0,0,90,11,0,100,20,0,100,21,0,132,0,0,90,
- 12,0,100,22,0,100,23,0,100,24,0,132,1,0,90,13,
- 0,101,14,0,101,13,0,106,15,0,131,1,0,90,16,0,
- 100,25,0,106,17,0,100,26,0,100,27,0,131,2,0,100,
- 28,0,23,90,18,0,101,19,0,106,20,0,101,18,0,100,
- 27,0,131,2,0,90,21,0,100,29,0,90,22,0,100,30,
- 0,90,23,0,100,31,0,103,1,0,90,24,0,100,32,0,
- 103,1,0,90,25,0,101,25,0,4,90,26,0,90,27,0,
- 100,33,0,100,34,0,100,33,0,100,35,0,100,36,0,132,
- 1,1,90,28,0,100,37,0,100,38,0,132,0,0,90,29,
- 0,100,39,0,100,40,0,132,0,0,90,30,0,100,41,0,
- 100,42,0,132,0,0,90,31,0,100,43,0,100,44,0,132,
- 0,0,90,32,0,100,45,0,100,46,0,100,47,0,100,48,
- 0,132,0,1,90,33,0,100,49,0,100,50,0,132,0,0,
- 90,34,0,100,51,0,100,52,0,132,0,0,90,35,0,100,
- 33,0,100,33,0,100,33,0,100,53,0,100,54,0,132,3,
- 0,90,36,0,100,33,0,100,33,0,100,33,0,100,55,0,
- 100,56,0,132,3,0,90,37,0,100,57,0,100,57,0,100,
- 58,0,100,59,0,132,2,0,90,38,0,100,60,0,100,61,
- 0,132,0,0,90,39,0,101,40,0,131,0,0,90,41,0,
- 100,33,0,100,62,0,100,33,0,100,63,0,101,41,0,100,
- 64,0,100,65,0,132,1,2,90,42,0,71,100,66,0,100,
- 67,0,132,0,0,100,67,0,131,2,0,90,43,0,71,100,
- 68,0,100,69,0,132,0,0,100,69,0,131,2,0,90,44,
- 0,71,100,70,0,100,71,0,132,0,0,100,71,0,101,44,
- 0,131,3,0,90,45,0,71,100,72,0,100,73,0,132,0,
- 0,100,73,0,131,2,0,90,46,0,71,100,74,0,100,75,
- 0,132,0,0,100,75,0,101,46,0,101,45,0,131,4,0,
- 90,47,0,71,100,76,0,100,77,0,132,0,0,100,77,0,
- 101,46,0,101,44,0,131,4,0,90,48,0,103,0,0,90,
- 49,0,71,100,78,0,100,79,0,132,0,0,100,79,0,101,
- 46,0,101,44,0,131,4,0,90,50,0,71,100,80,0,100,
- 81,0,132,0,0,100,81,0,131,2,0,90,51,0,71,100,
- 82,0,100,83,0,132,0,0,100,83,0,131,2,0,90,52,
- 0,71,100,84,0,100,85,0,132,0,0,100,85,0,131,2,
- 0,90,53,0,71,100,86,0,100,87,0,132,0,0,100,87,
- 0,131,2,0,90,54,0,100,33,0,100,88,0,100,89,0,
- 132,1,0,90,55,0,100,90,0,100,91,0,132,0,0,90,
- 56,0,100,92,0,100,93,0,132,0,0,90,57,0,100,94,
- 0,100,95,0,132,0,0,90,58,0,100,33,0,83,41,98,
- 97,94,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,112,97,116,104,
- 45,98,97,115,101,100,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,218,3,119,105,110,218,6,99,121,103,119,105,110,
- 218,6,100,97,114,119,105,110,99,0,0,0,0,0,0,0,
- 0,1,0,0,0,3,0,0,0,3,0,0,0,115,88,0,
- 0,0,116,0,0,106,1,0,106,2,0,116,3,0,131,1,
- 0,114,72,0,116,0,0,106,1,0,106,2,0,116,4,0,
- 131,1,0,114,45,0,100,1,0,137,0,0,110,6,0,100,
- 2,0,137,0,0,135,0,0,102,1,0,100,3,0,100,4,
- 0,134,0,0,125,0,0,110,12,0,100,5,0,100,4,0,
- 132,0,0,125,0,0,124,0,0,83,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,2,0,0,0,19,0,0,
- 0,115,13,0,0,0,136,0,0,116,0,0,106,1,0,107,
- 6,0,83,41,1,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,41,2,218,3,
- 95,111,115,90,7,101,110,118,105,114,111,110,169,0,41,1,
- 218,3,107,101,121,114,4,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,11,95,114,101,108,97,120,95,99,97,115,101,37,
- 0,0,0,115,2,0,0,0,0,2,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,1,0,
- 0,0,83,0,0,0,115,4,0,0,0,100,1,0,83,41,
- 2,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,114,4,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,114,7,0,0,0,41,0,0,0,115,2,0,0,0,
- 0,2,41,5,218,3,115,121,115,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,7,0,0,0,114,4,0,0,0,41,1,114,
- 5,0,0,0,114,6,0,0,0,218,16,95,109,97,107,101,
- 95,114,101,108,97,120,95,99,97,115,101,30,0,0,0,115,
- 14,0,0,0,0,1,18,1,18,1,9,2,6,2,21,4,
- 12,3,114,13,0,0,0,99,1,0,0,0,0,0,0,0,
- 1,0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,
- 0,116,0,0,124,0,0,131,1,0,100,1,0,64,106,1,
- 0,100,2,0,100,3,0,131,2,0,83,41,4,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,108,3,0,0,0,255,127,
- 255,127,3,0,233,4,0,0,0,218,6,108,105,116,116,108,
- 101,41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,
- 101,115,41,1,218,1,120,114,4,0,0,0,114,4,0,0,
- 0,114,6,0,0,0,218,7,95,119,95,108,111,110,103,47,
- 0,0,0,115,2,0,0,0,0,2,114,19,0,0,0,99,
- 1,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,0,106,1,0,124,
- 0,0,100,1,0,131,2,0,83,41,2,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,15,0,0,
- 0,41,2,114,16,0,0,0,218,10,102,114,111,109,95,98,
- 121,116,101,115,41,1,90,9,105,110,116,95,98,121,116,101,
- 115,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,7,95,114,95,108,111,110,103,52,0,0,0,115,2,0,
- 0,0,0,2,114,21,0,0,0,99,0,0,0,0,0,0,
- 0,0,1,0,0,0,3,0,0,0,71,0,0,0,115,26,
- 0,0,0,116,0,0,106,1,0,100,1,0,100,2,0,132,
- 0,0,124,0,0,68,131,1,0,131,1,0,83,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,106,111,105,110,40,41,46,
- 99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
- 0,83,0,0,0,115,37,0,0,0,103,0,0,124,0,0,
- 93,27,0,125,1,0,124,1,0,114,6,0,124,1,0,106,
- 0,0,116,1,0,131,1,0,145,2,0,113,6,0,83,114,
- 4,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,218,2,46,48,218,4,112,97,114,116,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,250,10,60,108,105,115,
- 116,99,111,109,112,62,59,0,0,0,115,2,0,0,0,9,
- 1,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,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,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,10,95,112,97,116,104,95,106,111,105,110,57,0,0,0,
- 115,4,0,0,0,0,2,15,1,114,30,0,0,0,99,1,
- 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,
- 0,0,0,115,134,0,0,0,116,0,0,116,1,0,131,1,
- 0,100,1,0,107,2,0,114,52,0,124,0,0,106,2,0,
- 116,3,0,131,1,0,92,3,0,125,1,0,125,2,0,125,
- 3,0,124,1,0,124,3,0,102,2,0,83,120,69,0,116,
- 4,0,124,0,0,131,1,0,68,93,55,0,125,4,0,124,
- 4,0,116,1,0,107,6,0,114,65,0,124,0,0,106,5,
- 0,124,4,0,100,2,0,100,1,0,131,1,1,92,2,0,
- 125,1,0,125,3,0,124,1,0,124,3,0,102,2,0,83,
- 113,65,0,87,100,3,0,124,0,0,102,2,0,83,41,4,
- 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,233,1,0,0,0,90,8,109,97,120,115,112,108,105,
- 116,218,0,41,6,218,3,108,101,110,114,23,0,0,0,218,
- 10,114,112,97,114,116,105,116,105,111,110,114,27,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,18,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,11,
- 95,112,97,116,104,95,115,112,108,105,116,63,0,0,0,115,
- 16,0,0,0,0,2,18,1,24,1,10,1,19,1,12,1,
- 27,1,14,1,114,40,0,0,0,99,1,0,0,0,0,0,
- 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,13,
- 0,0,0,116,0,0,106,1,0,124,0,0,131,1,0,83,
- 41,1,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,41,2,114,3,0,0,0,90,4,115,116,97,116,41,
- 1,114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,218,10,95,112,97,116,104,95,115,116,97,
- 116,75,0,0,0,115,2,0,0,0,0,7,114,41,0,0,
- 0,99,2,0,0,0,0,0,0,0,3,0,0,0,11,0,
- 0,0,67,0,0,0,115,58,0,0,0,121,16,0,116,0,
- 0,124,0,0,131,1,0,125,2,0,87,110,22,0,4,116,
- 1,0,107,10,0,114,40,0,1,1,1,100,1,0,83,89,
- 110,1,0,88,124,2,0,106,2,0,100,2,0,64,124,1,
- 0,107,2,0,83,41,3,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,
- 41,3,114,41,0,0,0,218,7,79,83,69,114,114,111,114,
- 218,7,115,116,95,109,111,100,101,41,3,114,37,0,0,0,
- 218,4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,
- 111,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,
- 116,121,112,101,85,0,0,0,115,10,0,0,0,0,2,3,
- 1,16,1,13,1,9,1,114,45,0,0,0,99,1,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,64,0,0,0,115,248,1,0,0,100,0,90,0,100,91,
+ 90,1,100,92,90,2,101,2,101,1,23,0,90,3,100,4,
+ 100,5,132,0,90,4,100,6,100,7,132,0,90,5,100,8,
+ 100,9,132,0,90,6,100,10,100,11,132,0,90,7,100,12,
+ 100,13,132,0,90,8,100,14,100,15,132,0,90,9,100,16,
+ 100,17,132,0,90,10,100,18,100,19,132,0,90,11,100,20,
+ 100,21,132,0,90,12,100,93,100,23,100,24,132,1,90,13,
+ 101,14,101,13,106,15,131,1,90,16,100,25,106,17,100,26,
+ 100,27,131,2,100,28,23,0,90,18,101,19,106,20,101,18,
+ 100,27,131,2,90,21,100,29,90,22,100,30,90,23,100,31,
+ 103,1,90,24,100,32,103,1,90,25,101,25,4,0,90,26,
+ 90,27,100,94,100,33,100,34,156,1,100,35,100,36,132,3,
+ 90,28,100,37,100,38,132,0,90,29,100,39,100,40,132,0,
+ 90,30,100,41,100,42,132,0,90,31,100,43,100,44,132,0,
+ 90,32,100,45,100,46,132,0,90,33,100,47,100,48,132,0,
+ 90,34,100,95,100,49,100,50,132,1,90,35,100,96,100,51,
+ 100,52,132,1,90,36,100,97,100,54,100,55,132,1,90,37,
+ 100,56,100,57,132,0,90,38,101,39,131,0,90,40,100,98,
+ 100,33,101,40,100,58,156,2,100,59,100,60,132,3,90,41,
+ 71,0,100,61,100,62,132,0,100,62,131,2,90,42,71,0,
+ 100,63,100,64,132,0,100,64,131,2,90,43,71,0,100,65,
+ 100,66,132,0,100,66,101,43,131,3,90,44,71,0,100,67,
+ 100,68,132,0,100,68,131,2,90,45,71,0,100,69,100,70,
+ 132,0,100,70,101,45,101,44,131,4,90,46,71,0,100,71,
+ 100,72,132,0,100,72,101,45,101,43,131,4,90,47,103,0,
+ 90,48,71,0,100,73,100,74,132,0,100,74,101,45,101,43,
+ 131,4,90,49,71,0,100,75,100,76,132,0,100,76,131,2,
+ 90,50,71,0,100,77,100,78,132,0,100,78,131,2,90,51,
+ 71,0,100,79,100,80,132,0,100,80,131,2,90,52,71,0,
+ 100,81,100,82,132,0,100,82,131,2,90,53,100,99,100,83,
+ 100,84,132,1,90,54,100,85,100,86,132,0,90,55,100,87,
+ 100,88,132,0,90,56,100,89,100,90,132,0,90,57,100,33,
+ 83,0,41,100,97,94,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,
+ 112,97,116,104,45,98,97,115,101,100,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,218,3,119,105,110,218,6,99,121,
+ 103,119,105,110,218,6,100,97,114,119,105,110,99,0,0,0,
+ 0,0,0,0,0,1,0,0,0,3,0,0,0,3,0,0,
+ 0,115,60,0,0,0,116,0,106,1,106,2,116,3,131,1,
+ 114,48,116,0,106,1,106,2,116,4,131,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,110,8,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,2,0,0,0,19,0,0,0,115,10,0,0,0,136,0,
+ 116,0,106,1,107,6,83,0,41,1,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,41,2,218,3,95,111,115,90,7,101,110,118,105,114,111,
+ 110,169,0,41,1,218,3,107,101,121,114,4,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,11,95,114,101,108,97,120,95,
+ 99,97,115,101,37,0,0,0,115,2,0,0,0,0,2,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,1,0,0,0,83,0,0,0,115,4,0,0,0,
+ 100,1,83,0,41,2,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,114,4,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,6,0,0,0,114,7,0,0,0,41,0,0,0,
+ 115,2,0,0,0,0,2,41,5,218,3,115,121,115,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,7,0,0,0,114,4,0,
+ 0,0,41,1,114,5,0,0,0,114,6,0,0,0,218,16,
+ 95,109,97,107,101,95,114,101,108,97,120,95,99,97,115,101,
+ 30,0,0,0,115,14,0,0,0,0,1,12,1,12,1,6,
+ 2,4,2,14,4,8,3,114,13,0,0,0,99,1,0,0,
+ 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
+ 0,115,20,0,0,0,116,0,124,0,131,1,100,1,64,0,
+ 106,1,100,2,100,3,131,2,83,0,41,4,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,108,3,0,0,0,255,127,255,
+ 127,3,0,233,4,0,0,0,218,6,108,105,116,116,108,101,
+ 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101,
+ 115,41,1,218,1,120,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,218,7,95,119,95,108,111,110,103,47,0,
+ 0,0,115,2,0,0,0,0,2,114,19,0,0,0,99,1,
+ 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
+ 0,0,0,115,12,0,0,0,116,0,106,1,124,0,100,1,
+ 131,2,83,0,41,2,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,15,0,0,0,41,2,114,16,
+ 0,0,0,218,10,102,114,111,109,95,98,121,116,101,115,41,
+ 1,90,9,105,110,116,95,98,121,116,101,115,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,7,95,114,95,
+ 108,111,110,103,52,0,0,0,115,2,0,0,0,0,2,114,
+ 21,0,0,0,99,0,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,71,0,0,0,115,20,0,0,0,116,0,
+ 106,1,100,1,100,2,132,0,124,0,68,0,131,1,131,1,
+ 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,106,111,
+ 105,110,40,41,46,99,1,0,0,0,0,0,0,0,2,0,
+ 0,0,4,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,106,0,116,
+ 1,131,1,145,2,113,4,83,0,114,4,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,218,2,46,48,218,
+ 4,112,97,114,116,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,250,10,60,108,105,115,116,99,111,109,112,62,
+ 59,0,0,0,115,2,0,0,0,6,1,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,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,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,218,10,95,112,97,116,
+ 104,95,106,111,105,110,57,0,0,0,115,4,0,0,0,0,
+ 2,10,1,114,30,0,0,0,99,1,0,0,0,0,0,0,
+ 0,5,0,0,0,5,0,0,0,67,0,0,0,115,98,0,
+ 0,0,116,0,116,1,131,1,100,1,107,2,114,36,124,0,
+ 106,2,116,3,131,1,92,3,125,1,125,2,125,3,124,1,
+ 124,3,102,2,83,0,120,52,116,4,124,0,131,1,68,0,
+ 93,40,125,4,124,4,116,1,107,6,114,46,124,0,106,5,
+ 124,4,100,2,100,1,144,1,131,1,92,2,125,1,125,3,
+ 124,1,124,3,102,2,83,0,113,46,87,0,100,3,124,0,
+ 102,2,83,0,41,4,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,233,1,0,0,0,90,8,109,
+ 97,120,115,112,108,105,116,218,0,41,6,218,3,108,101,110,
+ 114,23,0,0,0,218,10,114,112,97,114,116,105,116,105,111,
+ 110,114,27,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,18,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,218,11,95,112,97,116,104,95,115,112,108,105,
+ 116,63,0,0,0,115,16,0,0,0,0,2,12,1,16,1,
+ 8,1,14,1,8,1,20,1,12,1,114,40,0,0,0,99,
+ 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,
+ 67,0,0,0,115,10,0,0,0,116,0,106,1,124,0,131,
+ 1,83,0,41,1,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,41,2,114,3,0,0,0,90,4,115,116,
+ 97,116,41,1,114,37,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,218,10,95,112,97,116,104,95,
+ 115,116,97,116,75,0,0,0,115,2,0,0,0,0,7,114,
+ 41,0,0,0,99,2,0,0,0,0,0,0,0,3,0,0,
+ 0,11,0,0,0,67,0,0,0,115,48,0,0,0,121,12,
+ 116,0,124,0,131,1,125,2,87,0,110,20,4,0,116,1,
+ 107,10,114,32,1,0,1,0,1,0,100,1,83,0,88,0,
+ 124,2,106,2,100,2,64,0,124,1,107,2,83,0,41,3,
+ 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,41,3,114,41,0,0,0,
+ 218,7,79,83,69,114,114,111,114,218,7,115,116,95,109,111,
+ 100,101,41,3,114,37,0,0,0,218,4,109,111,100,101,90,
+ 9,115,116,97,116,95,105,110,102,111,114,4,0,0,0,114,
+ 4,0,0,0,114,6,0,0,0,218,18,95,112,97,116,104,
+ 95,105,115,95,109,111,100,101,95,116,121,112,101,85,0,0,
+ 0,115,10,0,0,0,0,2,2,1,12,1,14,1,6,1,
+ 114,45,0,0,0,99,1,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,2,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,41,1,114,45,0,0,0,41,1,114,37,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,12,
+ 95,112,97,116,104,95,105,115,102,105,108,101,94,0,0,0,
+ 115,2,0,0,0,0,2,114,46,0,0,0,99,1,0,0,
0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
- 0,115,13,0,0,0,116,0,0,124,0,0,100,1,0,131,
- 2,0,83,41,2,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,41,1,114,45,0,
- 0,0,41,1,114,37,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,12,95,112,97,116,104,95,
- 105,115,102,105,108,101,94,0,0,0,115,2,0,0,0,0,
- 2,114,46,0,0,0,99,1,0,0,0,0,0,0,0,1,
- 0,0,0,3,0,0,0,67,0,0,0,115,31,0,0,0,
- 124,0,0,115,18,0,116,0,0,106,1,0,131,0,0,125,
- 0,0,116,2,0,124,0,0,100,1,0,131,2,0,83,41,
- 2,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,41,3,114,3,0,0,0,218,6,103,
- 101,116,99,119,100,114,45,0,0,0,41,1,114,37,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,11,95,112,97,116,104,95,105,115,100,105,114,99,0,0,
- 0,115,6,0,0,0,0,2,6,1,12,1,114,48,0,0,
- 0,105,182,1,0,0,99,3,0,0,0,0,0,0,0,6,
- 0,0,0,17,0,0,0,67,0,0,0,115,193,0,0,0,
- 100,1,0,106,0,0,124,0,0,116,1,0,124,0,0,131,
- 1,0,131,2,0,125,3,0,116,2,0,106,3,0,124,3,
- 0,116,2,0,106,4,0,116,2,0,106,5,0,66,116,2,
- 0,106,6,0,66,124,2,0,100,2,0,64,131,3,0,125,
- 4,0,121,61,0,116,7,0,106,8,0,124,4,0,100,3,
- 0,131,2,0,143,20,0,125,5,0,124,5,0,106,9,0,
- 124,1,0,131,1,0,1,87,100,4,0,81,82,88,116,2,
- 0,106,10,0,124,3,0,124,0,0,131,2,0,1,87,110,
- 59,0,4,116,11,0,107,10,0,114,188,0,1,1,1,121,
- 17,0,116,2,0,106,12,0,124,3,0,131,1,0,1,87,
- 110,18,0,4,116,11,0,107,10,0,114,180,0,1,1,1,
- 89,110,1,0,88,130,0,0,89,110,1,0,88,100,4,0,
- 83,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,122,5,123,125,46,123,125,105,182,
- 1,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109,
- 97,116,218,2,105,100,114,3,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,42,0,0,0,90,6,
- 117,110,108,105,110,107,41,6,114,37,0,0,0,218,4,100,
- 97,116,97,114,44,0,0,0,90,8,112,97,116,104,95,116,
- 109,112,90,2,102,100,218,4,102,105,108,101,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,218,13,95,119,114,
- 105,116,101,95,97,116,111,109,105,99,106,0,0,0,115,26,
- 0,0,0,0,5,24,1,9,1,33,1,3,3,21,1,20,
- 1,20,1,13,1,3,1,17,1,13,1,5,1,114,57,0,
- 0,0,105,23,13,0,0,233,2,0,0,0,114,15,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,99,78,218,12,111,112,116,105,109,105,122,
+ 0,115,22,0,0,0,124,0,115,12,116,0,106,1,131,0,
+ 125,0,116,2,124,0,100,1,131,2,83,0,41,2,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,41,3,114,3,0,0,0,218,6,103,101,116,99,
+ 119,100,114,45,0,0,0,41,1,114,37,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,218,11,95,
+ 112,97,116,104,95,105,115,100,105,114,99,0,0,0,115,6,
+ 0,0,0,0,2,4,1,8,1,114,48,0,0,0,233,182,
+ 1,0,0,99,3,0,0,0,0,0,0,0,6,0,0,0,
+ 17,0,0,0,67,0,0,0,115,162,0,0,0,100,1,106,
+ 0,124,0,116,1,124,0,131,1,131,2,125,3,116,2,106,
+ 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,131,3,125,4,121,50,116,
+ 7,106,8,124,4,100,3,131,2,143,16,125,5,124,5,106,
+ 9,124,1,131,1,1,0,87,0,100,4,81,0,82,0,88,
+ 0,116,2,106,10,124,3,124,0,131,2,1,0,87,0,110,
+ 58,4,0,116,11,107,10,114,156,1,0,1,0,1,0,121,
+ 14,116,2,106,12,124,3,131,1,1,0,87,0,110,20,4,
+ 0,116,11,107,10,114,148,1,0,1,0,1,0,89,0,110,
+ 2,88,0,130,0,89,0,110,2,88,0,100,4,83,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,122,5,123,125,46,123,125,105,182,1,0,
+ 0,90,2,119,98,78,41,13,218,6,102,111,114,109,97,116,
+ 218,2,105,100,114,3,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,42,0,0,0,90,6,117,110,
+ 108,105,110,107,41,6,114,37,0,0,0,218,4,100,97,116,
+ 97,114,44,0,0,0,90,8,112,97,116,104,95,116,109,112,
+ 90,2,102,100,218,4,102,105,108,101,114,4,0,0,0,114,
+ 4,0,0,0,114,6,0,0,0,218,13,95,119,114,105,116,
+ 101,95,97,116,111,109,105,99,106,0,0,0,115,26,0,0,
+ 0,0,5,16,1,6,1,26,1,2,3,14,1,20,1,16,
+ 1,14,1,2,1,14,1,14,1,6,1,114,58,0,0,0,
+ 105,44,13,0,0,233,2,0,0,0,114,15,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,99,78,41,1,218,12,111,112,116,105,109,105,122,
97,116,105,111,110,99,2,0,0,0,1,0,0,0,11,0,
- 0,0,6,0,0,0,67,0,0,0,115,87,1,0,0,124,
- 1,0,100,1,0,107,9,0,114,76,0,116,0,0,106,1,
- 0,100,2,0,116,2,0,131,2,0,1,124,2,0,100,1,
- 0,107,9,0,114,58,0,100,3,0,125,3,0,116,3,0,
- 124,3,0,131,1,0,130,1,0,124,1,0,114,70,0,100,
- 4,0,110,3,0,100,5,0,125,2,0,116,4,0,124,0,
- 0,131,1,0,92,2,0,125,4,0,125,5,0,124,5,0,
- 106,5,0,100,6,0,131,1,0,92,3,0,125,6,0,125,
- 7,0,125,8,0,116,6,0,106,7,0,106,8,0,125,9,
- 0,124,9,0,100,1,0,107,8,0,114,154,0,116,9,0,
- 100,7,0,131,1,0,130,1,0,100,4,0,106,10,0,124,
- 6,0,114,172,0,124,6,0,110,3,0,124,8,0,124,7,
- 0,124,9,0,103,3,0,131,1,0,125,10,0,124,2,0,
- 100,1,0,107,8,0,114,241,0,116,6,0,106,11,0,106,
- 12,0,100,8,0,107,2,0,114,229,0,100,4,0,125,2,
- 0,110,12,0,116,6,0,106,11,0,106,12,0,125,2,0,
- 116,13,0,124,2,0,131,1,0,125,2,0,124,2,0,100,
- 4,0,107,3,0,114,63,1,124,2,0,106,14,0,131,0,
- 0,115,42,1,116,15,0,100,9,0,106,16,0,124,2,0,
- 131,1,0,131,1,0,130,1,0,100,10,0,106,16,0,124,
- 10,0,116,17,0,124,2,0,131,3,0,125,10,0,116,18,
- 0,124,4,0,116,19,0,124,10,0,116,20,0,100,8,0,
- 25,23,131,3,0,83,41,11,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,32,0,0,0,114,31,0,
- 0,0,218,1,46,122,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,233,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,41,21,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,40,0,0,0,114,34,0,0,0,114,
- 8,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,28,0,0,0,218,5,102,108,97,103,115,
- 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,49,0,0,0,218,4,95,79,80,84,114,
- 30,0,0,0,218,8,95,80,89,67,65,67,72,69,218,17,
- 66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,69,
- 83,41,11,114,37,0,0,0,90,14,100,101,98,117,103,95,
- 111,118,101,114,114,105,100,101,114,59,0,0,0,218,7,109,
- 101,115,115,97,103,101,218,4,104,101,97,100,114,39,0,0,
- 0,90,4,98,97,115,101,218,3,115,101,112,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,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,218,17,99,97,99,104,101,95,102,
- 114,111,109,95,115,111,117,114,99,101,254,0,0,0,115,46,
- 0,0,0,0,18,12,1,9,1,7,1,12,1,6,1,12,
- 1,18,1,18,1,24,1,12,1,12,1,12,1,36,1,12,
- 1,18,1,9,2,12,1,12,1,12,1,12,1,21,1,21,
- 1,114,81,0,0,0,99,1,0,0,0,0,0,0,0,8,
- 0,0,0,5,0,0,0,67,0,0,0,115,62,1,0,0,
- 116,0,0,106,1,0,106,2,0,100,1,0,107,8,0,114,
- 30,0,116,3,0,100,2,0,131,1,0,130,1,0,116,4,
- 0,124,0,0,131,1,0,92,2,0,125,1,0,125,2,0,
- 116,4,0,124,1,0,131,1,0,92,2,0,125,1,0,125,
- 3,0,124,3,0,116,5,0,107,3,0,114,102,0,116,6,
- 0,100,3,0,106,7,0,116,5,0,124,0,0,131,2,0,
- 131,1,0,130,1,0,124,2,0,106,8,0,100,4,0,131,
- 1,0,125,4,0,124,4,0,100,11,0,107,7,0,114,153,
- 0,116,6,0,100,7,0,106,7,0,124,2,0,131,1,0,
- 131,1,0,130,1,0,110,125,0,124,4,0,100,6,0,107,
- 2,0,114,22,1,124,2,0,106,9,0,100,4,0,100,5,
- 0,131,2,0,100,12,0,25,125,5,0,124,5,0,106,10,
- 0,116,11,0,131,1,0,115,223,0,116,6,0,100,8,0,
- 106,7,0,116,11,0,131,1,0,131,1,0,130,1,0,124,
- 5,0,116,12,0,116,11,0,131,1,0,100,1,0,133,2,
- 0,25,125,6,0,124,6,0,106,13,0,131,0,0,115,22,
- 1,116,6,0,100,9,0,106,7,0,124,5,0,131,1,0,
- 131,1,0,130,1,0,124,2,0,106,14,0,100,4,0,131,
- 1,0,100,10,0,25,125,7,0,116,15,0,124,1,0,124,
- 7,0,116,16,0,100,10,0,25,23,131,2,0,83,41,13,
- 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,36,115,121,115,46,105,109,112,108,101,109,
+ 0,0,6,0,0,0,67,0,0,0,115,234,0,0,0,124,
+ 1,100,1,107,9,114,52,116,0,106,1,100,2,116,2,131,
+ 2,1,0,124,2,100,1,107,9,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,124,0,131,1,92,2,125,4,125,5,124,
+ 5,106,5,100,6,131,1,92,3,125,6,125,7,125,8,116,
+ 6,106,7,106,8,125,9,124,9,100,1,107,8,114,104,116,
+ 9,100,7,131,1,130,1,100,4,106,10,124,6,114,116,124,
+ 6,110,2,124,8,124,7,124,9,103,3,131,1,125,10,124,
+ 2,100,1,107,8,114,162,116,6,106,11,106,12,100,8,107,
+ 2,114,154,100,4,125,2,110,8,116,6,106,11,106,12,125,
+ 2,116,13,124,2,131,1,125,2,124,2,100,4,107,3,114,
+ 214,124,2,106,14,131,0,115,200,116,15,100,9,106,16,124,
+ 2,131,1,131,1,130,1,100,10,106,16,124,10,116,17,124,
+ 2,131,3,125,10,116,18,124,4,116,19,124,10,116,20,100,
+ 8,25,0,23,0,131,3,83,0,41,11,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,32,0,0,0,
+ 114,31,0,0,0,218,1,46,122,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,233,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,41,21,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,40,0,0,0,114,34,0,
+ 0,0,114,8,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,28,0,0,0,218,5,102,108,
+ 97,103,115,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,50,0,0,0,218,4,95,79,
+ 80,84,114,30,0,0,0,218,8,95,80,89,67,65,67,72,
+ 69,218,17,66,89,84,69,67,79,68,69,95,83,85,70,70,
+ 73,88,69,83,41,11,114,37,0,0,0,90,14,100,101,98,
+ 117,103,95,111,118,101,114,114,105,100,101,114,60,0,0,0,
+ 218,7,109,101,115,115,97,103,101,218,4,104,101,97,100,114,
+ 39,0,0,0,90,4,98,97,115,101,218,3,115,101,112,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,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,218,17,99,97,99,104,
+ 101,95,102,114,111,109,95,115,111,117,114,99,101,0,1,0,
+ 0,115,46,0,0,0,0,18,8,1,6,1,6,1,8,1,
+ 4,1,8,1,12,1,12,1,16,1,8,1,8,1,8,1,
+ 24,1,8,1,12,1,6,2,8,1,8,1,8,1,8,1,
+ 14,1,14,1,114,82,0,0,0,99,1,0,0,0,0,0,
+ 0,0,8,0,0,0,5,0,0,0,67,0,0,0,115,220,
+ 0,0,0,116,0,106,1,106,2,100,1,107,8,114,20,116,
+ 3,100,2,131,1,130,1,116,4,124,0,131,1,92,2,125,
+ 1,125,2,116,4,124,1,131,1,92,2,125,1,125,3,124,
+ 3,116,5,107,3,114,68,116,6,100,3,106,7,116,5,124,
+ 0,131,2,131,1,130,1,124,2,106,8,100,4,131,1,125,
+ 4,124,4,100,11,107,7,114,102,116,6,100,7,106,7,124,
+ 2,131,1,131,1,130,1,110,86,124,4,100,6,107,2,114,
+ 188,124,2,106,9,100,4,100,5,131,2,100,12,25,0,125,
+ 5,124,5,106,10,116,11,131,1,115,150,116,6,100,8,106,
+ 7,116,11,131,1,131,1,130,1,124,5,116,12,116,11,131,
+ 1,100,1,133,2,25,0,125,6,124,6,106,13,131,0,115,
+ 188,116,6,100,9,106,7,124,5,131,1,131,1,130,1,124,
+ 2,106,14,100,4,131,1,100,10,25,0,125,7,116,15,124,
+ 1,124,7,116,16,100,10,25,0,23,0,131,2,83,0,41,
+ 13,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,122,37,123,125,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,123,33,114,
- 125,114,60,0,0,0,114,58,0,0,0,233,3,0,0,0,
- 122,33,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,123,
- 33,114,125,122,57,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,123,33,114,125,122,52,
- 111,112,116,105,109,105,122,97,116,105,111,110,32,108,101,118,
- 101,108,32,123,33,114,125,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,61,0,0,0,62,2,0,0,0,114,58,
- 0,0,0,114,82,0,0,0,233,254,255,255,255,41,17,114,
- 8,0,0,0,114,66,0,0,0,114,67,0,0,0,114,68,
- 0,0,0,114,40,0,0,0,114,75,0,0,0,114,73,0,
- 0,0,114,49,0,0,0,218,5,99,111,117,110,116,114,36,
- 0,0,0,114,10,0,0,0,114,74,0,0,0,114,33,0,
- 0,0,114,72,0,0,0,218,9,112,97,114,116,105,116,105,
- 111,110,114,30,0,0,0,218,15,83,79,85,82,67,69,95,
- 83,85,70,70,73,88,69,83,41,8,114,37,0,0,0,114,
- 78,0,0,0,90,16,112,121,99,97,99,104,101,95,102,105,
- 108,101,110,97,109,101,90,7,112,121,99,97,99,104,101,90,
- 9,100,111,116,95,99,111,117,110,116,114,59,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,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,17,115,111,117,114,99,101,
- 95,102,114,111,109,95,99,97,99,104,101,42,1,0,0,115,
- 44,0,0,0,0,9,18,1,12,1,18,1,18,1,12,1,
- 9,1,15,1,15,1,12,1,9,1,15,1,12,1,22,1,
- 15,1,9,1,12,1,22,1,12,1,9,1,12,1,19,1,
- 114,87,0,0,0,99,1,0,0,0,0,0,0,0,5,0,
- 0,0,12,0,0,0,67,0,0,0,115,164,0,0,0,116,
- 0,0,124,0,0,131,1,0,100,1,0,107,2,0,114,22,
- 0,100,2,0,83,124,0,0,106,1,0,100,3,0,131,1,
- 0,92,3,0,125,1,0,125,2,0,125,3,0,124,1,0,
- 12,115,81,0,124,3,0,106,2,0,131,0,0,100,7,0,
- 100,8,0,133,2,0,25,100,6,0,107,3,0,114,85,0,
- 124,0,0,83,121,16,0,116,3,0,124,0,0,131,1,0,
- 125,4,0,87,110,40,0,4,116,4,0,116,5,0,102,2,
- 0,107,10,0,114,143,0,1,1,1,124,0,0,100,2,0,
- 100,9,0,133,2,0,25,125,4,0,89,110,1,0,88,116,
- 6,0,124,4,0,131,1,0,114,160,0,124,4,0,83,124,
- 0,0,83,41,10,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,61,0,0,0,78,114,60,0,0,0,114,82,
- 0,0,0,114,31,0,0,0,90,2,112,121,233,253,255,255,
- 255,233,255,255,255,255,114,89,0,0,0,41,7,114,33,0,
- 0,0,114,34,0,0,0,218,5,108,111,119,101,114,114,87,
- 0,0,0,114,68,0,0,0,114,73,0,0,0,114,46,0,
- 0,0,41,5,218,13,98,121,116,101,99,111,100,101,95,112,
- 97,116,104,114,80,0,0,0,114,38,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,4,0,0,0,114,4,0,0,0,114,
- 6,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99,
- 101,102,105,108,101,75,1,0,0,115,20,0,0,0,0,7,
- 18,1,4,1,24,1,35,1,4,1,3,1,16,1,19,1,
- 21,1,114,93,0,0,0,99,1,0,0,0,0,0,0,0,
- 1,0,0,0,11,0,0,0,67,0,0,0,115,92,0,0,
- 0,124,0,0,106,0,0,116,1,0,116,2,0,131,1,0,
- 131,1,0,114,59,0,121,14,0,116,3,0,124,0,0,131,
- 1,0,83,87,113,88,0,4,116,4,0,107,10,0,114,55,
- 0,1,1,1,89,113,88,0,88,110,29,0,124,0,0,106,
- 0,0,116,1,0,116,5,0,131,1,0,131,1,0,114,84,
- 0,124,0,0,83,100,0,0,83,100,0,0,83,41,1,78,
- 41,6,218,8,101,110,100,115,119,105,116,104,218,5,116,117,
- 112,108,101,114,86,0,0,0,114,81,0,0,0,114,68,0,
- 0,0,114,76,0,0,0,41,1,218,8,102,105,108,101,110,
- 97,109,101,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,11,95,103,101,116,95,99,97,99,104,101,100,94,
- 1,0,0,115,16,0,0,0,0,1,21,1,3,1,14,1,
- 13,1,8,1,21,1,4,2,114,97,0,0,0,99,1,0,
- 0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,
- 0,0,115,60,0,0,0,121,19,0,116,0,0,124,0,0,
- 131,1,0,106,1,0,125,1,0,87,110,24,0,4,116,2,
- 0,107,10,0,114,45,0,1,1,1,100,1,0,125,1,0,
- 89,110,1,0,88,124,1,0,100,2,0,79,125,1,0,124,
- 1,0,83,41,3,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,105,182,1,0,0,233,
- 128,0,0,0,41,3,114,41,0,0,0,114,43,0,0,0,
- 114,42,0,0,0,41,2,114,37,0,0,0,114,44,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,10,95,99,97,108,99,95,109,111,100,101,106,1,0,0,
- 115,12,0,0,0,0,2,3,1,19,1,13,1,11,3,10,
- 1,114,99,0,0,0,218,9,118,101,114,98,111,115,105,116,
- 121,114,31,0,0,0,99,1,0,0,0,1,0,0,0,3,
- 0,0,0,4,0,0,0,71,0,0,0,115,75,0,0,0,
- 116,0,0,106,1,0,106,2,0,124,1,0,107,5,0,114,
- 71,0,124,0,0,106,3,0,100,6,0,131,1,0,115,43,
- 0,100,3,0,124,0,0,23,125,0,0,116,4,0,124,0,
- 0,106,5,0,124,2,0,140,0,0,100,4,0,116,0,0,
- 106,6,0,131,1,1,1,100,5,0,83,41,7,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,250,1,35,250,
- 7,105,109,112,111,114,116,32,122,2,35,32,114,56,0,0,
- 0,78,41,2,114,101,0,0,0,114,102,0,0,0,41,7,
- 114,8,0,0,0,114,69,0,0,0,218,7,118,101,114,98,
- 111,115,101,114,10,0,0,0,218,5,112,114,105,110,116,114,
- 49,0,0,0,218,6,115,116,100,101,114,114,41,3,114,77,
- 0,0,0,114,100,0,0,0,218,4,97,114,103,115,114,4,
- 0,0,0,114,4,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,118,
- 1,0,0,115,8,0,0,0,0,2,18,1,15,1,10,1,
- 114,107,0,0,0,99,1,0,0,0,0,0,0,0,3,0,
- 0,0,11,0,0,0,3,0,0,0,115,84,0,0,0,100,
- 1,0,135,0,0,102,1,0,100,2,0,100,3,0,134,1,
- 0,125,1,0,121,13,0,116,0,0,106,1,0,125,2,0,
- 87,110,30,0,4,116,2,0,107,10,0,114,66,0,1,1,
- 1,100,4,0,100,5,0,132,0,0,125,2,0,89,110,1,
- 0,88,124,2,0,124,1,0,136,0,0,131,2,0,1,124,
- 1,0,83,41,6,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,4,0,0,
- 0,5,0,0,0,31,0,0,0,115,89,0,0,0,124,1,
- 0,100,0,0,107,8,0,114,24,0,124,0,0,106,0,0,
- 125,1,0,110,46,0,124,0,0,106,0,0,124,1,0,107,
- 3,0,114,70,0,116,1,0,100,1,0,124,0,0,106,0,
- 0,124,1,0,102,2,0,22,100,2,0,124,1,0,131,1,
- 1,130,1,0,136,0,0,124,0,0,124,1,0,124,2,0,
- 124,3,0,142,2,0,83,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,218,4,110,97,109,101,
- 41,2,114,108,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,108,0,0,
- 0,114,106,0,0,0,90,6,107,119,97,114,103,115,41,1,
- 218,6,109,101,116,104,111,100,114,4,0,0,0,114,6,0,
- 0,0,218,19,95,99,104,101,99,107,95,110,97,109,101,95,
- 119,114,97,112,112,101,114,134,1,0,0,115,12,0,0,0,
- 0,1,12,1,12,1,15,1,6,1,25,1,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,3,
- 0,0,0,7,0,0,0,83,0,0,0,115,92,0,0,0,
- 120,66,0,100,1,0,100,2,0,100,3,0,100,4,0,103,
- 4,0,68,93,46,0,125,2,0,116,0,0,124,1,0,124,
- 2,0,131,2,0,114,19,0,116,1,0,124,0,0,124,2,
- 0,116,2,0,124,1,0,124,2,0,131,2,0,131,3,0,
- 1,113,19,0,87,124,0,0,106,3,0,106,4,0,124,1,
- 0,106,3,0,131,1,0,1,100,0,0,83,41,5,78,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,54,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,218,5,95,119,114,
- 97,112,145,1,0,0,115,8,0,0,0,0,1,25,1,15,
- 1,29,1,122,26,95,99,104,101,99,107,95,110,97,109,101,
- 46,60,108,111,99,97,108,115,62,46,95,119,114,97,112,41,
- 3,218,10,95,98,111,111,116,115,116,114,97,112,114,122,0,
- 0,0,218,9,78,97,109,101,69,114,114,111,114,41,3,114,
- 111,0,0,0,114,112,0,0,0,114,122,0,0,0,114,4,
- 0,0,0,41,1,114,111,0,0,0,114,6,0,0,0,218,
- 11,95,99,104,101,99,107,95,110,97,109,101,126,1,0,0,
- 115,14,0,0,0,0,8,21,7,3,1,13,1,13,2,17,
- 5,13,1,114,125,0,0,0,99,2,0,0,0,0,0,0,
- 0,5,0,0,0,4,0,0,0,67,0,0,0,115,84,0,
- 0,0,124,0,0,106,0,0,124,1,0,131,1,0,92,2,
- 0,125,2,0,125,3,0,124,2,0,100,1,0,107,8,0,
- 114,80,0,116,1,0,124,3,0,131,1,0,114,80,0,100,
- 2,0,125,4,0,116,2,0,106,3,0,124,4,0,106,4,
- 0,124,3,0,100,3,0,25,131,1,0,116,5,0,131,2,
- 0,1,124,2,0,83,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,61,0,0,0,41,6,218,11,102,105,110,
- 100,95,108,111,97,100,101,114,114,33,0,0,0,114,62,0,
- 0,0,114,63,0,0,0,114,49,0,0,0,218,13,73,109,
- 112,111,114,116,87,97,114,110,105,110,103,41,5,114,110,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,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,
- 95,115,104,105,109,154,1,0,0,115,10,0,0,0,0,10,
- 21,1,24,1,6,1,29,1,114,132,0,0,0,99,4,0,
- 0,0,0,0,0,0,11,0,0,0,19,0,0,0,67,0,
- 0,0,115,240,1,0,0,105,0,0,125,4,0,124,2,0,
- 100,1,0,107,9,0,114,31,0,124,2,0,124,4,0,100,
- 2,0,60,110,6,0,100,3,0,125,2,0,124,3,0,100,
- 1,0,107,9,0,114,59,0,124,3,0,124,4,0,100,4,
- 0,60,124,0,0,100,1,0,100,5,0,133,2,0,25,125,
- 5,0,124,0,0,100,5,0,100,6,0,133,2,0,25,125,
- 6,0,124,0,0,100,6,0,100,7,0,133,2,0,25,125,
- 7,0,124,5,0,116,0,0,107,3,0,114,168,0,100,8,
- 0,106,1,0,124,2,0,124,5,0,131,2,0,125,8,0,
- 116,2,0,100,9,0,124,8,0,131,2,0,1,116,3,0,
- 124,8,0,124,4,0,141,1,0,130,1,0,110,119,0,116,
- 4,0,124,6,0,131,1,0,100,5,0,107,3,0,114,229,
- 0,100,10,0,106,1,0,124,2,0,131,1,0,125,8,0,
- 116,2,0,100,9,0,124,8,0,131,2,0,1,116,5,0,
- 124,8,0,131,1,0,130,1,0,110,58,0,116,4,0,124,
- 7,0,131,1,0,100,5,0,107,3,0,114,31,1,100,11,
- 0,106,1,0,124,2,0,131,1,0,125,8,0,116,2,0,
- 100,9,0,124,8,0,131,2,0,1,116,5,0,124,8,0,
- 131,1,0,130,1,0,124,1,0,100,1,0,107,9,0,114,
- 226,1,121,20,0,116,6,0,124,1,0,100,12,0,25,131,
- 1,0,125,9,0,87,110,18,0,4,116,7,0,107,10,0,
- 114,83,1,1,1,1,89,110,62,0,88,116,8,0,124,6,
- 0,131,1,0,124,9,0,107,3,0,114,145,1,100,13,0,
- 106,1,0,124,2,0,131,1,0,125,8,0,116,2,0,100,
- 9,0,124,8,0,131,2,0,1,116,3,0,124,8,0,124,
- 4,0,141,1,0,130,1,0,121,18,0,124,1,0,100,14,
- 0,25,100,15,0,64,125,10,0,87,110,18,0,4,116,7,
- 0,107,10,0,114,183,1,1,1,1,89,110,43,0,88,116,
- 8,0,124,7,0,131,1,0,124,10,0,107,3,0,114,226,
- 1,116,3,0,100,13,0,106,1,0,124,2,0,131,1,0,
- 124,4,0,141,1,0,130,1,0,124,0,0,100,7,0,100,
- 1,0,133,2,0,25,83,41,16,97,122,1,0,0,86,97,
- 108,105,100,97,116,101,32,116,104,101,32,104,101,97,100,101,
- 114,32,111,102,32,116,104,101,32,112,97,115,115,101,100,45,
- 105,110,32,98,121,116,101,99,111,100,101,32,97,103,97,105,
- 110,115,116,32,115,111,117,114,99,101,95,115,116,97,116,115,
- 32,40,105,102,10,32,32,32,32,103,105,118,101,110,41,32,
- 97,110,100,32,114,101,116,117,114,110,105,110,103,32,116,104,
- 101,32,98,121,116,101,99,111,100,101,32,116,104,97,116,32,
- 99,97,110,32,98,101,32,99,111,109,112,105,108,101,100,32,
- 98,121,32,99,111,109,112,105,108,101,40,41,46,10,10,32,
- 32,32,32,65,108,108,32,111,116,104,101,114,32,97,114,103,
- 117,109,101,110,116,115,32,97,114,101,32,117,115,101,100,32,
- 116,111,32,101,110,104,97,110,99,101,32,101,114,114,111,114,
- 32,114,101,112,111,114,116,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,116,104,101,
- 32,98,121,116,101,99,111,100,101,32,105,115,10,32,32,32,
- 32,102,111,117,110,100,32,116,111,32,98,101,32,115,116,97,
- 108,101,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,10,32,32,32,32,116,114,117,110,99,97,116,101,
- 100,46,10,10,32,32,32,32,78,114,108,0,0,0,122,10,
- 60,98,121,116,101,99,111,100,101,62,114,37,0,0,0,114,
- 14,0,0,0,233,8,0,0,0,233,12,0,0,0,122,30,
- 98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,
- 32,105,110,32,123,33,114,125,58,32,123,33,114,125,122,2,
- 123,125,122,43,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,116,105,
- 109,101,115,116,97,109,112,32,105,110,32,123,33,114,125,122,
- 48,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,115,105,122,101,32,
- 111,102,32,115,111,117,114,99,101,32,105,110,32,123,33,114,
- 125,218,5,109,116,105,109,101,122,26,98,121,116,101,99,111,
- 100,101,32,105,115,32,115,116,97,108,101,32,102,111,114,32,
- 123,33,114,125,218,4,115,105,122,101,108,3,0,0,0,255,
- 127,255,127,3,0,41,9,218,12,77,65,71,73,67,95,78,
- 85,77,66,69,82,114,49,0,0,0,114,107,0,0,0,114,
- 109,0,0,0,114,33,0,0,0,218,8,69,79,70,69,114,
- 114,111,114,114,16,0,0,0,218,8,75,101,121,69,114,114,
- 111,114,114,21,0,0,0,41,11,114,55,0,0,0,218,12,
- 115,111,117,114,99,101,95,115,116,97,116,115,114,108,0,0,
- 0,114,37,0,0,0,90,11,101,120,99,95,100,101,116,97,
- 105,108,115,90,5,109,97,103,105,99,90,13,114,97,119,95,
- 116,105,109,101,115,116,97,109,112,90,8,114,97,119,95,115,
- 105,122,101,114,77,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,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,25,95,118,97,108,105,100,97,116,101,95,98,121,
- 116,101,99,111,100,101,95,104,101,97,100,101,114,171,1,0,
- 0,115,76,0,0,0,0,11,6,1,12,1,13,3,6,1,
- 12,1,10,1,16,1,16,1,16,1,12,1,18,1,13,1,
- 18,1,18,1,15,1,13,1,15,1,18,1,15,1,13,1,
- 12,1,12,1,3,1,20,1,13,1,5,2,18,1,15,1,
- 13,1,15,1,3,1,18,1,13,1,5,2,18,1,15,1,
- 9,1,114,143,0,0,0,99,4,0,0,0,0,0,0,0,
- 5,0,0,0,6,0,0,0,67,0,0,0,115,112,0,0,
- 0,116,0,0,106,1,0,124,0,0,131,1,0,125,4,0,
- 116,2,0,124,4,0,116,3,0,131,2,0,114,75,0,116,
- 4,0,100,1,0,124,2,0,131,2,0,1,124,3,0,100,
- 2,0,107,9,0,114,71,0,116,5,0,106,6,0,124,4,
- 0,124,3,0,131,2,0,1,124,4,0,83,116,7,0,100,
- 3,0,106,8,0,124,2,0,131,1,0,100,4,0,124,1,
- 0,100,5,0,124,2,0,131,1,2,130,1,0,100,2,0,
- 83,41,6,122,60,67,111,109,112,105,108,101,32,98,121,116,
- 101,99,111,100,101,32,97,115,32,114,101,116,117,114,110,101,
- 100,32,98,121,32,95,118,97,108,105,100,97,116,101,95,98,
- 121,116,101,99,111,100,101,95,104,101,97,100,101,114,40,41,
- 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,114,108,0,0,0,114,37,0,0,0,41,9,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,107,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,109,0,0,0,114,49,0,0,0,41,5,114,
- 55,0,0,0,114,108,0,0,0,114,91,0,0,0,114,92,
- 0,0,0,218,4,99,111,100,101,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,17,95,99,111,109,112,105,
- 108,101,95,98,121,116,101,99,111,100,101,226,1,0,0,115,
- 16,0,0,0,0,2,15,1,15,1,13,1,12,1,16,1,
- 4,2,18,1,114,149,0,0,0,114,61,0,0,0,99,3,
- 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,
- 0,0,0,115,76,0,0,0,116,0,0,116,1,0,131,1,
- 0,125,3,0,124,3,0,106,2,0,116,3,0,124,1,0,
- 131,1,0,131,1,0,1,124,3,0,106,2,0,116,3,0,
- 124,2,0,131,1,0,131,1,0,1,124,3,0,106,2,0,
- 116,4,0,106,5,0,124,0,0,131,1,0,131,1,0,1,
- 124,3,0,83,41,1,122,80,67,111,109,112,105,108,101,32,
- 97,32,99,111,100,101,32,111,98,106,101,99,116,32,105,110,
- 116,111,32,98,121,116,101,99,111,100,101,32,102,111,114,32,
- 119,114,105,116,105,110,103,32,111,117,116,32,116,111,32,97,
- 32,98,121,116,101,45,99,111,109,112,105,108,101,100,10,32,
- 32,32,32,102,105,108,101,46,41,6,218,9,98,121,116,101,
- 97,114,114,97,121,114,137,0,0,0,218,6,101,120,116,101,
- 110,100,114,19,0,0,0,114,144,0,0,0,90,5,100,117,
- 109,112,115,41,4,114,148,0,0,0,114,135,0,0,0,114,
- 142,0,0,0,114,55,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,17,95,99,111,100,101,95,
- 116,111,95,98,121,116,101,99,111,100,101,238,1,0,0,115,
- 10,0,0,0,0,3,12,1,19,1,19,1,22,1,114,152,
- 0,0,0,99,1,0,0,0,0,0,0,0,5,0,0,0,
- 4,0,0,0,67,0,0,0,115,89,0,0,0,100,1,0,
- 100,2,0,108,0,0,125,1,0,116,1,0,106,2,0,124,
- 0,0,131,1,0,106,3,0,125,2,0,124,1,0,106,4,
- 0,124,2,0,131,1,0,125,3,0,116,1,0,106,5,0,
- 100,2,0,100,3,0,131,2,0,125,4,0,124,4,0,106,
- 6,0,124,0,0,106,6,0,124,3,0,100,1,0,25,131,
- 1,0,131,1,0,83,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,61,0,0,0,78,84,41,7,218,8,116,111,
- 107,101,110,105,122,101,114,51,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,153,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,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,13,100,101,99,111,100,101,
- 95,115,111,117,114,99,101,248,1,0,0,115,10,0,0,0,
- 0,5,12,1,18,1,15,1,18,1,114,157,0,0,0,114,
- 129,0,0,0,218,26,115,117,98,109,111,100,117,108,101,95,
- 115,101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,
- 99,2,0,0,0,2,0,0,0,9,0,0,0,19,0,0,
- 0,67,0,0,0,115,89,1,0,0,124,1,0,100,1,0,
- 107,8,0,114,73,0,100,2,0,125,1,0,116,0,0,124,
- 2,0,100,3,0,131,2,0,114,73,0,121,19,0,124,2,
- 0,106,1,0,124,0,0,131,1,0,125,1,0,87,110,18,
- 0,4,116,2,0,107,10,0,114,72,0,1,1,1,89,110,
- 1,0,88,116,3,0,106,4,0,124,0,0,124,2,0,100,
- 4,0,124,1,0,131,2,1,125,4,0,100,5,0,124,4,
- 0,95,5,0,124,2,0,100,1,0,107,8,0,114,194,0,
- 120,73,0,116,6,0,131,0,0,68,93,58,0,92,2,0,
- 125,5,0,125,6,0,124,1,0,106,7,0,116,8,0,124,
- 6,0,131,1,0,131,1,0,114,128,0,124,5,0,124,0,
- 0,124,1,0,131,2,0,125,2,0,124,2,0,124,4,0,
- 95,9,0,80,113,128,0,87,100,1,0,83,124,3,0,116,
- 10,0,107,8,0,114,23,1,116,0,0,124,2,0,100,6,
- 0,131,2,0,114,32,1,121,19,0,124,2,0,106,11,0,
- 124,0,0,131,1,0,125,7,0,87,110,18,0,4,116,2,
- 0,107,10,0,114,4,1,1,1,1,89,113,32,1,88,124,
- 7,0,114,32,1,103,0,0,124,4,0,95,12,0,110,9,
- 0,124,3,0,124,4,0,95,12,0,124,4,0,106,12,0,
- 103,0,0,107,2,0,114,85,1,124,1,0,114,85,1,116,
- 13,0,124,1,0,131,1,0,100,7,0,25,125,8,0,124,
- 4,0,106,12,0,106,14,0,124,8,0,131,1,0,1,124,
- 4,0,83,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,218,6,111,114,105,103,105,110,84,218,10,105,115,95,112,
- 97,99,107,97,103,101,114,61,0,0,0,41,15,114,117,0,
- 0,0,114,159,0,0,0,114,109,0,0,0,114,123,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,94,0,0,0,114,95,
- 0,0,0,114,129,0,0,0,218,9,95,80,79,80,85,76,
- 65,84,69,114,161,0,0,0,114,158,0,0,0,114,40,0,
- 0,0,218,6,97,112,112,101,110,100,41,9,114,108,0,0,
- 0,90,8,108,111,99,97,116,105,111,110,114,129,0,0,0,
- 114,158,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,161,0,0,0,90,7,100,105,114,110,97,109,
- 101,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 218,23,115,112,101,99,95,102,114,111,109,95,102,105,108,101,
- 95,108,111,99,97,116,105,111,110,9,2,0,0,115,60,0,
- 0,0,0,12,12,4,6,1,15,2,3,1,19,1,13,1,
- 5,8,24,1,9,3,12,1,22,1,21,1,15,1,9,1,
- 5,2,4,3,12,2,15,1,3,1,19,1,13,1,5,2,
- 6,1,12,2,9,1,15,1,6,1,16,1,16,2,114,169,
- 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
- 5,0,0,0,64,0,0,0,115,121,0,0,0,101,0,0,
- 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,
- 2,0,90,4,0,100,3,0,90,5,0,100,4,0,90,6,
- 0,101,7,0,100,5,0,100,6,0,132,0,0,131,1,0,
- 90,8,0,101,7,0,100,7,0,100,8,0,132,0,0,131,
- 1,0,90,9,0,101,7,0,100,9,0,100,9,0,100,10,
- 0,100,11,0,132,2,0,131,1,0,90,10,0,101,7,0,
- 100,9,0,100,12,0,100,13,0,132,1,0,131,1,0,90,
- 11,0,100,9,0,83,41,14,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,70,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,11,0,0,
- 0,67,0,0,0,115,67,0,0,0,121,23,0,116,0,0,
- 106,1,0,116,0,0,106,2,0,124,1,0,131,2,0,83,
- 87,110,37,0,4,116,3,0,107,10,0,114,62,0,1,1,
- 1,116,0,0,106,1,0,116,0,0,106,4,0,124,1,0,
- 131,2,0,83,89,110,1,0,88,100,0,0,83,41,1,78,
- 41,5,218,7,95,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,42,0,0,0,90,18,72,75,
- 69,89,95,76,79,67,65,76,95,77,65,67,72,73,78,69,
- 41,2,218,3,99,108,115,114,5,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,218,14,95,111,112,
- 101,110,95,114,101,103,105,115,116,114,121,87,2,0,0,115,
- 8,0,0,0,0,2,3,1,23,1,13,1,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,6,0,0,0,16,
- 0,0,0,67,0,0,0,115,143,0,0,0,124,0,0,106,
- 0,0,114,21,0,124,0,0,106,1,0,125,2,0,110,9,
- 0,124,0,0,106,2,0,125,2,0,124,2,0,106,3,0,
- 100,1,0,124,1,0,100,2,0,116,4,0,106,5,0,100,
- 0,0,100,3,0,133,2,0,25,131,0,2,125,3,0,121,
- 47,0,124,0,0,106,6,0,124,3,0,131,1,0,143,25,
- 0,125,4,0,116,7,0,106,8,0,124,4,0,100,4,0,
- 131,2,0,125,5,0,87,100,0,0,81,82,88,87,110,22,
- 0,4,116,9,0,107,10,0,114,138,0,1,1,1,100,0,
- 0,83,89,110,1,0,88,124,5,0,83,41,5,78,114,128,
+ 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,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,122,37,123,125,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,123,33,
+ 114,125,114,61,0,0,0,114,59,0,0,0,233,3,0,0,
+ 0,122,33,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,
+ 123,33,114,125,122,57,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,123,33,114,125,122,
+ 52,111,112,116,105,109,105,122,97,116,105,111,110,32,108,101,
+ 118,101,108,32,123,33,114,125,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,62,0,0,0,62,2,0,0,0,114,
+ 59,0,0,0,114,83,0,0,0,233,254,255,255,255,41,17,
+ 114,8,0,0,0,114,67,0,0,0,114,68,0,0,0,114,
+ 69,0,0,0,114,40,0,0,0,114,76,0,0,0,114,74,
+ 0,0,0,114,50,0,0,0,218,5,99,111,117,110,116,114,
+ 36,0,0,0,114,10,0,0,0,114,75,0,0,0,114,33,
+ 0,0,0,114,73,0,0,0,218,9,112,97,114,116,105,116,
+ 105,111,110,114,30,0,0,0,218,15,83,79,85,82,67,69,
+ 95,83,85,70,70,73,88,69,83,41,8,114,37,0,0,0,
+ 114,79,0,0,0,90,16,112,121,99,97,99,104,101,95,102,
+ 105,108,101,110,97,109,101,90,7,112,121,99,97,99,104,101,
+ 90,9,100,111,116,95,99,111,117,110,116,114,60,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,4,0,0,0,114,
+ 4,0,0,0,114,6,0,0,0,218,17,115,111,117,114,99,
+ 101,95,102,114,111,109,95,99,97,99,104,101,44,1,0,0,
+ 115,44,0,0,0,0,9,12,1,8,1,12,1,12,1,8,
+ 1,6,1,10,1,10,1,8,1,6,1,10,1,8,1,16,
+ 1,10,1,6,1,8,1,16,1,8,1,6,1,8,1,14,
+ 1,114,88,0,0,0,99,1,0,0,0,0,0,0,0,5,
+ 0,0,0,12,0,0,0,67,0,0,0,115,128,0,0,0,
+ 116,0,124,0,131,1,100,1,107,2,114,16,100,2,83,0,
+ 124,0,106,1,100,3,131,1,92,3,125,1,125,2,125,3,
+ 124,1,12,0,115,58,124,3,106,2,131,0,100,7,100,8,
+ 133,2,25,0,100,6,107,3,114,62,124,0,83,0,121,12,
+ 116,3,124,0,131,1,125,4,87,0,110,36,4,0,116,4,
+ 116,5,102,2,107,10,114,110,1,0,1,0,1,0,124,0,
+ 100,2,100,9,133,2,25,0,125,4,89,0,110,2,88,0,
+ 116,6,124,4,131,1,114,124,124,4,83,0,124,0,83,0,
+ 41,10,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,62,0,0,0,78,114,61,0,0,0,114,83,0,0,0,
+ 114,31,0,0,0,90,2,112,121,233,253,255,255,255,233,255,
+ 255,255,255,114,90,0,0,0,41,7,114,33,0,0,0,114,
+ 34,0,0,0,218,5,108,111,119,101,114,114,88,0,0,0,
+ 114,69,0,0,0,114,74,0,0,0,114,46,0,0,0,41,
+ 5,218,13,98,121,116,101,99,111,100,101,95,112,97,116,104,
+ 114,81,0,0,0,114,38,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,4,0,0,0,114,4,0,0,0,114,6,0,0,
+ 0,218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,
+ 108,101,77,1,0,0,115,20,0,0,0,0,7,12,1,4,
+ 1,16,1,26,1,4,1,2,1,12,1,18,1,18,1,114,
+ 94,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,
+ 0,11,0,0,0,67,0,0,0,115,74,0,0,0,124,0,
+ 106,0,116,1,116,2,131,1,131,1,114,46,121,8,116,3,
+ 124,0,131,1,83,0,4,0,116,4,107,10,114,42,1,0,
+ 1,0,1,0,89,0,113,70,88,0,110,24,124,0,106,0,
+ 116,1,116,5,131,1,131,1,114,66,124,0,83,0,110,4,
+ 100,0,83,0,100,0,83,0,41,1,78,41,6,218,8,101,
+ 110,100,115,119,105,116,104,218,5,116,117,112,108,101,114,87,
+ 0,0,0,114,82,0,0,0,114,69,0,0,0,114,77,0,
+ 0,0,41,1,218,8,102,105,108,101,110,97,109,101,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,218,11,95,
+ 103,101,116,95,99,97,99,104,101,100,96,1,0,0,115,16,
+ 0,0,0,0,1,14,1,2,1,8,1,14,1,8,1,14,
+ 1,6,2,114,98,0,0,0,99,1,0,0,0,0,0,0,
+ 0,2,0,0,0,11,0,0,0,67,0,0,0,115,52,0,
+ 0,0,121,14,116,0,124,0,131,1,106,1,125,1,87,0,
+ 110,24,4,0,116,2,107,10,114,38,1,0,1,0,1,0,
+ 100,1,125,1,89,0,110,2,88,0,124,1,100,2,79,0,
+ 125,1,124,1,83,0,41,3,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,105,182,1,
+ 0,0,233,128,0,0,0,41,3,114,41,0,0,0,114,43,
+ 0,0,0,114,42,0,0,0,41,2,114,37,0,0,0,114,
+ 44,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,218,10,95,99,97,108,99,95,109,111,100,101,108,
+ 1,0,0,115,12,0,0,0,0,2,2,1,14,1,14,1,
+ 10,3,8,1,114,100,0,0,0,99,1,0,0,0,0,0,
+ 0,0,3,0,0,0,11,0,0,0,3,0,0,0,115,68,
+ 0,0,0,100,6,135,0,102,1,100,2,100,3,132,9,125,
+ 1,121,10,116,0,106,1,125,2,87,0,110,28,4,0,116,
+ 2,107,10,114,52,1,0,1,0,1,0,100,4,100,5,132,
+ 0,125,2,89,0,110,2,88,0,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,4,0,0,0,5,0,0,0,31,0,0,0,115,64,0,
+ 0,0,124,1,100,0,107,8,114,16,124,0,106,0,125,1,
+ 110,34,124,0,106,0,124,1,107,3,114,50,116,1,100,1,
+ 124,0,106,0,124,1,102,2,22,0,100,2,124,1,144,1,
+ 131,1,130,1,136,0,124,0,124,1,124,2,124,3,142,2,
+ 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,218,4,110,97,109,101,41,2,114,101,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,101,0,0,0,218,4,97,114,
+ 103,115,90,6,107,119,97,114,103,115,41,1,218,6,109,101,
+ 116,104,111,100,114,4,0,0,0,114,6,0,0,0,218,19,
+ 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,
+ 112,101,114,128,1,0,0,115,12,0,0,0,0,1,8,1,
+ 8,1,10,1,4,1,20,1,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,3,0,0,0,7,
+ 0,0,0,83,0,0,0,115,60,0,0,0,120,40,100,5,
+ 68,0,93,32,125,2,116,0,124,1,124,2,131,2,114,6,
+ 116,1,124,0,124,2,116,2,124,1,124,2,131,2,131,3,
+ 1,0,113,6,87,0,124,0,106,3,106,4,124,1,106,3,
+ 131,1,1,0,100,0,83,0,41,6,78,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,4,122,10,95,95,109,111,
+ 100,117,108,101,95,95,122,8,95,95,110,97,109,101,95,95,
+ 122,12,95,95,113,117,97,108,110,97,109,101,95,95,122,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,55,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,218,5,95,119,114,97,112,139,1,0,
+ 0,115,8,0,0,0,0,1,10,1,10,1,22,1,122,26,
+ 95,99,104,101,99,107,95,110,97,109,101,46,60,108,111,99,
+ 97,108,115,62,46,95,119,114,97,112,41,1,78,41,3,218,
+ 10,95,98,111,111,116,115,116,114,97,112,114,116,0,0,0,
+ 218,9,78,97,109,101,69,114,114,111,114,41,3,114,105,0,
+ 0,0,114,106,0,0,0,114,116,0,0,0,114,4,0,0,
+ 0,41,1,114,105,0,0,0,114,6,0,0,0,218,11,95,
+ 99,104,101,99,107,95,110,97,109,101,120,1,0,0,115,14,
+ 0,0,0,0,8,14,7,2,1,10,1,14,2,14,5,10,
+ 1,114,119,0,0,0,99,2,0,0,0,0,0,0,0,5,
+ 0,0,0,4,0,0,0,67,0,0,0,115,60,0,0,0,
+ 124,0,106,0,124,1,131,1,92,2,125,2,125,3,124,2,
+ 100,1,107,8,114,56,116,1,124,3,131,1,114,56,100,2,
+ 125,4,116,2,106,3,124,4,106,4,124,3,100,3,25,0,
+ 131,1,116,5,131,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,62,0,0,0,41,
+ 6,218,11,102,105,110,100,95,108,111,97,100,101,114,114,33,
+ 0,0,0,114,63,0,0,0,114,64,0,0,0,114,50,0,
+ 0,0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,
+ 103,41,5,114,103,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,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,218,17,95,102,105,110,100,95,
+ 109,111,100,117,108,101,95,115,104,105,109,148,1,0,0,115,
+ 10,0,0,0,0,10,14,1,16,1,4,1,22,1,114,126,
+ 0,0,0,99,4,0,0,0,0,0,0,0,11,0,0,0,
+ 19,0,0,0,67,0,0,0,115,128,1,0,0,105,0,125,
+ 4,124,2,100,1,107,9,114,22,124,2,124,4,100,2,60,
+ 0,110,4,100,3,125,2,124,3,100,1,107,9,114,42,124,
+ 3,124,4,100,4,60,0,124,0,100,1,100,5,133,2,25,
+ 0,125,5,124,0,100,5,100,6,133,2,25,0,125,6,124,
+ 0,100,6,100,7,133,2,25,0,125,7,124,5,116,0,107,
+ 3,114,122,100,8,106,1,124,2,124,5,131,2,125,8,116,
+ 2,106,3,100,9,124,8,131,2,1,0,116,4,124,8,124,
+ 4,141,1,130,1,110,86,116,5,124,6,131,1,100,5,107,
+ 3,114,166,100,10,106,1,124,2,131,1,125,8,116,2,106,
+ 3,100,9,124,8,131,2,1,0,116,6,124,8,131,1,130,
+ 1,110,42,116,5,124,7,131,1,100,5,107,3,114,208,100,
+ 11,106,1,124,2,131,1,125,8,116,2,106,3,100,9,124,
+ 8,131,2,1,0,116,6,124,8,131,1,130,1,124,1,100,
+ 1,107,9,144,1,114,116,121,16,116,7,124,1,100,12,25,
+ 0,131,1,125,9,87,0,110,20,4,0,116,8,107,10,114,
+ 254,1,0,1,0,1,0,89,0,110,48,88,0,116,9,124,
+ 6,131,1,124,9,107,3,144,1,114,46,100,13,106,1,124,
+ 2,131,1,125,8,116,2,106,3,100,9,124,8,131,2,1,
+ 0,116,4,124,8,124,4,141,1,130,1,121,16,124,1,100,
+ 14,25,0,100,15,64,0,125,10,87,0,110,22,4,0,116,
+ 8,107,10,144,1,114,84,1,0,1,0,1,0,89,0,110,
+ 32,88,0,116,9,124,7,131,1,124,10,107,3,144,1,114,
+ 116,116,4,100,13,106,1,124,2,131,1,124,4,141,1,130,
+ 1,124,0,100,7,100,1,133,2,25,0,83,0,41,16,97,
+ 122,1,0,0,86,97,108,105,100,97,116,101,32,116,104,101,
+ 32,104,101,97,100,101,114,32,111,102,32,116,104,101,32,112,
+ 97,115,115,101,100,45,105,110,32,98,121,116,101,99,111,100,
+ 101,32,97,103,97,105,110,115,116,32,115,111,117,114,99,101,
+ 95,115,116,97,116,115,32,40,105,102,10,32,32,32,32,103,
+ 105,118,101,110,41,32,97,110,100,32,114,101,116,117,114,110,
+ 105,110,103,32,116,104,101,32,98,121,116,101,99,111,100,101,
+ 32,116,104,97,116,32,99,97,110,32,98,101,32,99,111,109,
+ 112,105,108,101,100,32,98,121,32,99,111,109,112,105,108,101,
+ 40,41,46,10,10,32,32,32,32,65,108,108,32,111,116,104,
+ 101,114,32,97,114,103,117,109,101,110,116,115,32,97,114,101,
+ 32,117,115,101,100,32,116,111,32,101,110,104,97,110,99,101,
+ 32,101,114,114,111,114,32,114,101,112,111,114,116,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,116,104,101,32,98,121,116,101,99,111,100,101,32,
+ 105,115,10,32,32,32,32,102,111,117,110,100,32,116,111,32,
+ 98,101,32,115,116,97,108,101,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,10,32,32,32,32,116,114,
+ 117,110,99,97,116,101,100,46,10,10,32,32,32,32,78,114,
+ 101,0,0,0,122,10,60,98,121,116,101,99,111,100,101,62,
+ 114,37,0,0,0,114,14,0,0,0,233,8,0,0,0,233,
+ 12,0,0,0,122,30,98,97,100,32,109,97,103,105,99,32,
+ 110,117,109,98,101,114,32,105,110,32,123,33,114,125,58,32,
+ 123,33,114,125,122,2,123,125,122,43,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,116,105,109,101,115,116,97,109,112,32,105,110,
+ 32,123,33,114,125,122,48,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,115,105,122,101,32,111,102,32,115,111,117,114,99,101,32,
+ 105,110,32,123,33,114,125,218,5,109,116,105,109,101,122,26,
+ 98,121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,
+ 101,32,102,111,114,32,123,33,114,125,218,4,115,105,122,101,
+ 108,3,0,0,0,255,127,255,127,3,0,41,10,218,12,77,
+ 65,71,73,67,95,78,85,77,66,69,82,114,50,0,0,0,
+ 114,117,0,0,0,218,16,95,118,101,114,98,111,115,101,95,
+ 109,101,115,115,97,103,101,114,102,0,0,0,114,33,0,0,
+ 0,218,8,69,79,70,69,114,114,111,114,114,16,0,0,0,
+ 218,8,75,101,121,69,114,114,111,114,114,21,0,0,0,41,
+ 11,114,56,0,0,0,218,12,115,111,117,114,99,101,95,115,
+ 116,97,116,115,114,101,0,0,0,114,37,0,0,0,90,11,
+ 101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,
+ 105,99,90,13,114,97,119,95,116,105,109,101,115,116,97,109,
+ 112,90,8,114,97,119,95,115,105,122,101,114,78,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,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,218,25,95,118,97,108,
+ 105,100,97,116,101,95,98,121,116,101,99,111,100,101,95,104,
+ 101,97,100,101,114,165,1,0,0,115,76,0,0,0,0,11,
+ 4,1,8,1,10,3,4,1,8,1,8,1,12,1,12,1,
+ 12,1,8,1,12,1,12,1,12,1,12,1,10,1,12,1,
+ 10,1,12,1,10,1,12,1,8,1,10,1,2,1,16,1,
+ 14,1,6,2,14,1,10,1,12,1,10,1,2,1,16,1,
+ 16,1,6,2,14,1,10,1,6,1,114,138,0,0,0,99,
+ 4,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,
+ 67,0,0,0,115,86,0,0,0,116,0,106,1,124,0,131,
+ 1,125,4,116,2,124,4,116,3,131,2,114,58,116,4,106,
+ 5,100,1,124,2,131,2,1,0,124,3,100,2,107,9,114,
+ 52,116,6,106,7,124,4,124,3,131,2,1,0,124,4,83,
+ 0,110,24,116,8,100,3,106,9,124,2,131,1,100,4,124,
+ 1,100,5,124,2,144,2,131,1,130,1,100,2,83,0,41,
+ 6,122,60,67,111,109,112,105,108,101,32,98,121,116,101,99,
+ 111,100,101,32,97,115,32,114,101,116,117,114,110,101,100,32,
+ 98,121,32,95,118,97,108,105,100,97,116,101,95,98,121,116,
+ 101,99,111,100,101,95,104,101,97,100,101,114,40,41,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,
+ 114,101,0,0,0,114,37,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,117,0,0,0,114,132,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,102,0,0,0,114,50,0,0,0,
+ 41,5,114,56,0,0,0,114,101,0,0,0,114,92,0,0,
+ 0,114,93,0,0,0,218,4,99,111,100,101,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,17,95,99,111,
+ 109,112,105,108,101,95,98,121,116,101,99,111,100,101,220,1,
+ 0,0,115,16,0,0,0,0,2,10,1,10,1,12,1,8,
+ 1,12,1,6,2,12,1,114,144,0,0,0,114,62,0,0,
+ 0,99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,67,0,0,0,115,56,0,0,0,116,0,116,1,131,
+ 1,125,3,124,3,106,2,116,3,124,1,131,1,131,1,1,
+ 0,124,3,106,2,116,3,124,2,131,1,131,1,1,0,124,
+ 3,106,2,116,4,106,5,124,0,131,1,131,1,1,0,124,
+ 3,83,0,41,1,122,80,67,111,109,112,105,108,101,32,97,
+ 32,99,111,100,101,32,111,98,106,101,99,116,32,105,110,116,
+ 111,32,98,121,116,101,99,111,100,101,32,102,111,114,32,119,
+ 114,105,116,105,110,103,32,111,117,116,32,116,111,32,97,32,
+ 98,121,116,101,45,99,111,109,112,105,108,101,100,10,32,32,
+ 32,32,102,105,108,101,46,41,6,218,9,98,121,116,101,97,
+ 114,114,97,121,114,131,0,0,0,218,6,101,120,116,101,110,
+ 100,114,19,0,0,0,114,139,0,0,0,90,5,100,117,109,
+ 112,115,41,4,114,143,0,0,0,114,129,0,0,0,114,137,
+ 0,0,0,114,56,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,6,0,0,0,218,17,95,99,111,100,101,95,116,
+ 111,95,98,121,116,101,99,111,100,101,232,1,0,0,115,10,
+ 0,0,0,0,3,8,1,14,1,14,1,16,1,114,147,0,
+ 0,0,99,1,0,0,0,0,0,0,0,5,0,0,0,4,
+ 0,0,0,67,0,0,0,115,62,0,0,0,100,1,100,2,
+ 108,0,125,1,116,1,106,2,124,0,131,1,106,3,125,2,
+ 124,1,106,4,124,2,131,1,125,3,116,1,106,5,100,2,
+ 100,3,131,2,125,4,124,4,106,6,124,0,106,6,124,3,
+ 100,1,25,0,131,1,131,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,62,0,0,0,78,84,41,7,
+ 218,8,116,111,107,101,110,105,122,101,114,52,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,148,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,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,218,13,100,101,
+ 99,111,100,101,95,115,111,117,114,99,101,242,1,0,0,115,
+ 10,0,0,0,0,5,8,1,12,1,10,1,12,1,114,152,
+ 0,0,0,41,2,114,123,0,0,0,218,26,115,117,98,109,
+ 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,
+ 97,116,105,111,110,115,99,2,0,0,0,2,0,0,0,9,
+ 0,0,0,19,0,0,0,67,0,0,0,115,8,1,0,0,
+ 124,1,100,1,107,8,114,58,100,2,125,1,116,0,124,2,
+ 100,3,131,2,114,58,121,14,124,2,106,1,124,0,131,1,
+ 125,1,87,0,110,20,4,0,116,2,107,10,114,56,1,0,
+ 1,0,1,0,89,0,110,2,88,0,116,3,106,4,124,0,
+ 124,2,100,4,124,1,144,1,131,2,125,4,100,5,124,4,
+ 95,5,124,2,100,1,107,8,114,146,120,54,116,6,131,0,
+ 68,0,93,40,92,2,125,5,125,6,124,1,106,7,116,8,
+ 124,6,131,1,131,1,114,98,124,5,124,0,124,1,131,2,
+ 125,2,124,2,124,4,95,9,80,0,113,98,87,0,100,1,
+ 83,0,124,3,116,10,107,8,114,212,116,0,124,2,100,6,
+ 131,2,114,218,121,14,124,2,106,11,124,0,131,1,125,7,
+ 87,0,110,20,4,0,116,2,107,10,114,198,1,0,1,0,
+ 1,0,89,0,113,218,88,0,124,7,114,218,103,0,124,4,
+ 95,12,110,6,124,3,124,4,95,12,124,4,106,12,103,0,
+ 107,2,144,1,114,4,124,1,144,1,114,4,116,13,124,1,
+ 131,1,100,7,25,0,125,8,124,4,106,12,106,14,124,8,
+ 131,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,218,6,111,114,105,103,105,110,84,218,
+ 10,105,115,95,112,97,99,107,97,103,101,114,62,0,0,0,
+ 41,15,114,111,0,0,0,114,154,0,0,0,114,102,0,0,
+ 0,114,117,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,95,
+ 0,0,0,114,96,0,0,0,114,123,0,0,0,218,9,95,
+ 80,79,80,85,76,65,84,69,114,156,0,0,0,114,153,0,
+ 0,0,114,40,0,0,0,218,6,97,112,112,101,110,100,41,
+ 9,114,101,0,0,0,90,8,108,111,99,97,116,105,111,110,
+ 114,123,0,0,0,114,153,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,156,0,0,0,90,7,100,
+ 105,114,110,97,109,101,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,218,23,115,112,101,99,95,102,114,111,109,
+ 95,102,105,108,101,95,108,111,99,97,116,105,111,110,3,2,
+ 0,0,115,60,0,0,0,0,12,8,4,4,1,10,2,2,
+ 1,14,1,14,1,6,8,18,1,6,3,8,1,16,1,14,
+ 1,10,1,6,1,6,2,4,3,8,2,10,1,2,1,14,
+ 1,14,1,6,2,4,1,8,2,6,1,12,1,6,1,12,
+ 1,12,2,114,164,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,64,0,0,0,115,80,0,
+ 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,
+ 90,4,100,3,90,5,100,4,90,6,101,7,100,5,100,6,
+ 132,0,131,1,90,8,101,7,100,7,100,8,132,0,131,1,
+ 90,9,101,7,100,14,100,10,100,11,132,1,131,1,90,10,
+ 101,7,100,15,100,12,100,13,132,1,131,1,90,11,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,70,99,2,0,0,
+ 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,
+ 0,115,50,0,0,0,121,14,116,0,106,1,116,0,106,2,
+ 124,1,131,2,83,0,4,0,116,3,107,10,114,44,1,0,
+ 1,0,1,0,116,0,106,1,116,0,106,4,124,1,131,2,
+ 83,0,88,0,100,0,83,0,41,1,78,41,5,218,7,95,
+ 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,42,0,0,0,90,18,72,75,69,89,95,76,79,
+ 67,65,76,95,77,65,67,72,73,78,69,41,2,218,3,99,
+ 108,115,114,5,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,218,14,95,111,112,101,110,95,114,101,
+ 103,105,115,116,114,121,81,2,0,0,115,8,0,0,0,0,
+ 2,2,1,14,1,14,1,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,6,0,0,0,16,0,0,0,67,0,
+ 0,0,115,116,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,100,
+ 1,124,1,100,2,100,3,116,4,106,5,100,0,100,4,133,
+ 2,25,0,22,0,144,2,131,0,125,3,121,38,124,0,106,
+ 6,124,3,131,1,143,18,125,4,116,7,106,8,124,4,100,
+ 5,131,2,125,5,87,0,100,0,81,0,82,0,88,0,87,
+ 0,110,20,4,0,116,9,107,10,114,110,1,0,1,0,1,
+ 0,100,0,83,0,88,0,124,5,83,0,41,6,78,114,122,
0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110,
- 114,82,0,0,0,114,32,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,49,0,0,0,
- 114,8,0,0,0,218,7,118,101,114,115,105,111,110,114,173,
- 0,0,0,114,171,0,0,0,90,10,81,117,101,114,121,86,
- 97,108,117,101,114,42,0,0,0,41,6,114,172,0,0,0,
- 114,128,0,0,0,90,12,114,101,103,105,115,116,114,121,95,
- 107,101,121,114,5,0,0,0,90,4,104,107,101,121,218,8,
- 102,105,108,101,112,97,116,104,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,218,16,95,115,101,97,114,99,104,
- 95,114,101,103,105,115,116,114,121,94,2,0,0,115,22,0,
- 0,0,0,2,9,1,12,2,9,1,15,1,22,1,3,1,
- 18,1,29,1,13,1,9,1,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,8,0,0,0,14,0,
- 0,0,67,0,0,0,115,158,0,0,0,124,0,0,106,0,
- 0,124,1,0,131,1,0,125,4,0,124,4,0,100,0,0,
- 107,8,0,114,31,0,100,0,0,83,121,14,0,116,1,0,
- 124,4,0,131,1,0,1,87,110,22,0,4,116,2,0,107,
- 10,0,114,69,0,1,1,1,100,0,0,83,89,110,1,0,
- 88,120,81,0,116,3,0,131,0,0,68,93,70,0,92,2,
- 0,125,5,0,125,6,0,124,4,0,106,4,0,116,5,0,
- 124,6,0,131,1,0,131,1,0,114,80,0,116,6,0,106,
- 7,0,124,1,0,124,5,0,124,1,0,124,4,0,131,2,
- 0,100,1,0,124,4,0,131,2,1,125,7,0,124,7,0,
- 83,113,80,0,87,100,0,0,83,41,2,78,114,160,0,0,
- 0,41,8,114,179,0,0,0,114,41,0,0,0,114,42,0,
- 0,0,114,163,0,0,0,114,94,0,0,0,114,95,0,0,
- 0,114,123,0,0,0,218,16,115,112,101,99,95,102,114,111,
- 109,95,108,111,97,100,101,114,41,8,114,172,0,0,0,114,
- 128,0,0,0,114,37,0,0,0,218,6,116,97,114,103,101,
- 116,114,178,0,0,0,114,129,0,0,0,114,168,0,0,0,
- 114,166,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 6,0,0,0,218,9,102,105,110,100,95,115,112,101,99,109,
- 2,0,0,115,26,0,0,0,0,2,15,1,12,1,4,1,
- 3,1,14,1,13,1,9,1,22,1,21,1,9,1,15,1,
- 9,1,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,4,0,0,0,
- 3,0,0,0,67,0,0,0,115,45,0,0,0,124,0,0,
- 106,0,0,124,1,0,124,2,0,131,2,0,125,3,0,124,
- 3,0,100,1,0,107,9,0,114,37,0,124,3,0,106,1,
- 0,83,100,1,0,83,100,1,0,83,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,2,114,182,0,
- 0,0,114,129,0,0,0,41,4,114,172,0,0,0,114,128,
- 0,0,0,114,37,0,0,0,114,166,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,6,0,0,0,218,11,102,105,
- 110,100,95,109,111,100,117,108,101,125,2,0,0,115,8,0,
- 0,0,0,7,18,1,12,1,7,2,122,33,87,105,110,100,
+ 122,5,37,100,46,37,100,114,59,0,0,0,114,32,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,50,0,0,0,114,8,0,0,0,218,12,118,101,
+ 114,115,105,111,110,95,105,110,102,111,114,168,0,0,0,114,
+ 166,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101,
+ 114,42,0,0,0,41,6,114,167,0,0,0,114,122,0,0,
+ 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114,
+ 5,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101,
+ 112,97,116,104,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103,
+ 105,115,116,114,121,88,2,0,0,115,22,0,0,0,0,2,
+ 6,1,8,2,6,1,10,1,22,1,2,1,12,1,26,1,
+ 14,1,6,1,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,8,0,0,0,14,0,0,0,67,0,
+ 0,0,115,122,0,0,0,124,0,106,0,124,1,131,1,125,
+ 4,124,4,100,0,107,8,114,22,100,0,83,0,121,12,116,
+ 1,124,4,131,1,1,0,87,0,110,20,4,0,116,2,107,
+ 10,114,54,1,0,1,0,1,0,100,0,83,0,88,0,120,
+ 60,116,3,131,0,68,0,93,50,92,2,125,5,125,6,124,
+ 4,106,4,116,5,124,6,131,1,131,1,114,64,116,6,106,
+ 7,124,1,124,5,124,1,124,4,131,2,100,1,124,4,144,
+ 1,131,2,125,7,124,7,83,0,113,64,87,0,100,0,83,
+ 0,41,2,78,114,155,0,0,0,41,8,114,174,0,0,0,
+ 114,41,0,0,0,114,42,0,0,0,114,158,0,0,0,114,
+ 95,0,0,0,114,96,0,0,0,114,117,0,0,0,218,16,
+ 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,
+ 41,8,114,167,0,0,0,114,122,0,0,0,114,37,0,0,
+ 0,218,6,116,97,114,103,101,116,114,173,0,0,0,114,123,
+ 0,0,0,114,163,0,0,0,114,161,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,218,9,102,105,
+ 110,100,95,115,112,101,99,103,2,0,0,115,26,0,0,0,
+ 0,2,10,1,8,1,4,1,2,1,12,1,14,1,6,1,
+ 16,1,14,1,6,1,10,1,8,1,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,109,111,100,117,108,101,41,12,114,
- 114,0,0,0,114,113,0,0,0,114,115,0,0,0,114,116,
- 0,0,0,114,176,0,0,0,114,175,0,0,0,114,174,0,
- 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,
- 173,0,0,0,114,179,0,0,0,114,182,0,0,0,114,183,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,114,170,0,0,0,75,2,0,0,
- 115,20,0,0,0,12,2,6,3,6,3,6,2,6,2,18,
- 7,18,15,3,1,21,15,3,1,114,170,0,0,0,99,0,
- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,
- 0,0,0,115,70,0,0,0,101,0,0,90,1,0,100,0,
- 0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,
- 132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,
- 5,0,100,6,0,100,7,0,132,0,0,90,6,0,100,8,
- 0,100,9,0,132,0,0,90,7,0,100,10,0,83,41,11,
+ 114,46,102,105,110,100,95,115,112,101,99,99,3,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,0,106,0,124,1,124,2,131,2,125,
+ 3,124,3,100,1,107,9,114,28,124,3,106,1,83,0,110,
+ 4,100,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,2,114,177,0,0,
+ 0,114,123,0,0,0,41,4,114,167,0,0,0,114,122,0,
+ 0,0,114,37,0,0,0,114,161,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,11,102,105,110,
+ 100,95,109,111,100,117,108,101,119,2,0,0,115,8,0,0,
+ 0,0,7,12,1,8,1,8,2,122,33,87,105,110,100,111,
+ 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,
+ 46,102,105,110,100,95,109,111,100,117,108,101,41,2,78,78,
+ 41,1,78,41,12,114,108,0,0,0,114,107,0,0,0,114,
+ 109,0,0,0,114,110,0,0,0,114,171,0,0,0,114,170,
+ 0,0,0,114,169,0,0,0,218,11,99,108,97,115,115,109,
+ 101,116,104,111,100,114,168,0,0,0,114,174,0,0,0,114,
+ 177,0,0,0,114,178,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,114,165,0,
+ 0,0,69,2,0,0,115,20,0,0,0,8,2,4,3,4,
+ 3,4,2,4,2,12,7,12,15,2,1,12,15,2,1,114,
+ 165,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,64,0,0,0,115,48,0,0,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,
+ 90,4,100,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,
@@ -1006,110 +917,106 @@ const unsigned char _Py_M__importlib_external[] = {
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,5,0,0,
- 0,3,0,0,0,67,0,0,0,115,88,0,0,0,116,0,
- 0,124,0,0,106,1,0,124,1,0,131,1,0,131,1,0,
- 100,1,0,25,125,2,0,124,2,0,106,2,0,100,2,0,
- 100,1,0,131,2,0,100,3,0,25,125,3,0,124,1,0,
- 106,3,0,100,2,0,131,1,0,100,4,0,25,125,4,0,
- 124,3,0,100,5,0,107,2,0,111,87,0,124,4,0,100,
- 5,0,107,3,0,83,41,6,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,31,0,0,0,114,60,0,0,
- 0,114,61,0,0,0,114,58,0,0,0,218,8,95,95,105,
- 110,105,116,95,95,41,4,114,40,0,0,0,114,159,0,0,
- 0,114,36,0,0,0,114,34,0,0,0,41,5,114,110,0,
- 0,0,114,128,0,0,0,114,96,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,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,114,161,0,0,0,144,2,0,0,115,8,
- 0,0,0,0,3,25,1,22,1,19,1,122,24,95,76,111,
- 97,100,101,114,66,97,115,105,99,115,46,105,115,95,112,97,
- 99,107,97,103,101,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,
- 1,0,83,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,4,0,0,0,41,2,114,110,0,0,0,114,166,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108,
- 101,152,2,0,0,115,0,0,0,0,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,
- 3,0,0,0,4,0,0,0,67,0,0,0,115,80,0,0,
- 0,124,0,0,106,0,0,124,1,0,106,1,0,131,1,0,
- 125,2,0,124,2,0,100,1,0,107,8,0,114,54,0,116,
- 2,0,100,2,0,106,3,0,124,1,0,106,1,0,131,1,
- 0,131,1,0,130,1,0,116,4,0,106,5,0,116,6,0,
- 124,2,0,124,1,0,106,7,0,131,3,0,1,100,1,0,
- 83,41,3,122,19,69,120,101,99,117,116,101,32,116,104,101,
+ 0,3,0,0,0,67,0,0,0,115,64,0,0,0,116,0,
+ 124,0,106,1,124,1,131,1,131,1,100,1,25,0,125,2,
+ 124,2,106,2,100,2,100,1,131,2,100,3,25,0,125,3,
+ 124,1,106,3,100,2,131,1,100,4,25,0,125,4,124,3,
+ 100,5,107,2,111,62,124,4,100,5,107,3,83,0,41,6,
+ 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,
+ 31,0,0,0,114,61,0,0,0,114,62,0,0,0,114,59,
+ 0,0,0,218,8,95,95,105,110,105,116,95,95,41,4,114,
+ 40,0,0,0,114,154,0,0,0,114,36,0,0,0,114,34,
+ 0,0,0,41,5,114,103,0,0,0,114,122,0,0,0,114,
+ 97,0,0,0,90,13,102,105,108,101,110,97,109,101,95,98,
+ 97,115,101,90,9,116,97,105,108,95,110,97,109,101,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,114,156,0,
+ 0,0,138,2,0,0,115,8,0,0,0,0,3,18,1,16,
+ 1,14,1,122,24,95,76,111,97,100,101,114,66,97,115,105,
+ 99,115,46,105,115,95,112,97,99,107,97,103,101,99,2,0,
+ 0,0,0,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,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,4,0,0,0,41,
+ 2,114,103,0,0,0,114,161,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,218,13,99,114,101,97,
+ 116,101,95,109,111,100,117,108,101,146,2,0,0,115,0,0,
+ 0,0,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,3,0,0,0,4,0,0,0,
+ 67,0,0,0,115,56,0,0,0,124,0,106,0,124,1,106,
+ 1,131,1,125,2,124,2,100,1,107,8,114,36,116,2,100,
+ 2,106,3,124,1,106,1,131,1,131,1,130,1,116,4,106,
+ 5,116,6,124,2,124,1,106,7,131,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,114,0,0,0,
- 114,109,0,0,0,114,49,0,0,0,114,123,0,0,0,218,
+ 8,218,8,103,101,116,95,99,111,100,101,114,108,0,0,0,
+ 114,102,0,0,0,114,50,0,0,0,114,117,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,120,0,0,0,41,3,114,110,0,0,0,218,6,109,111,
- 100,117,108,101,114,148,0,0,0,114,4,0,0,0,114,4,
+ 114,114,0,0,0,41,3,114,103,0,0,0,218,6,109,111,
+ 100,117,108,101,114,143,0,0,0,114,4,0,0,0,114,4,
0,0,0,114,6,0,0,0,218,11,101,120,101,99,95,109,
- 111,100,117,108,101,155,2,0,0,115,10,0,0,0,0,2,
- 18,1,12,1,9,1,15,1,122,25,95,76,111,97,100,101,
+ 111,100,117,108,101,149,2,0,0,115,10,0,0,0,0,2,
+ 12,1,8,1,6,1,10,1,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,2,0,0,0,
- 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,
- 106,1,0,124,0,0,124,1,0,131,2,0,83,41,1,78,
- 41,2,114,123,0,0,0,218,17,95,108,111,97,100,95,109,
- 111,100,117,108,101,95,115,104,105,109,41,2,114,110,0,0,
- 0,114,128,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,218,11,108,111,97,100,95,109,111,100,117,
- 108,101,163,2,0,0,115,2,0,0,0,0,1,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,114,0,0,0,
- 114,113,0,0,0,114,115,0,0,0,114,116,0,0,0,114,
- 161,0,0,0,114,187,0,0,0,114,192,0,0,0,114,194,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,114,185,0,0,0,139,2,0,0,
- 115,10,0,0,0,12,3,6,2,12,8,12,3,12,8,114,
- 185,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
- 0,4,0,0,0,64,0,0,0,115,106,0,0,0,101,0,
- 0,90,1,0,100,0,0,90,2,0,100,1,0,100,2,0,
- 132,0,0,90,3,0,100,3,0,100,4,0,132,0,0,90,
- 4,0,100,5,0,100,6,0,132,0,0,90,5,0,100,7,
- 0,100,8,0,132,0,0,90,6,0,100,9,0,100,10,0,
- 132,0,0,90,7,0,100,11,0,100,18,0,100,13,0,100,
- 14,0,132,0,1,90,8,0,100,15,0,100,16,0,132,0,
- 0,90,9,0,100,17,0,83,41,19,218,12,83,111,117,114,
- 99,101,76,111,97,100,101,114,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,1,0,0,0,67,0,0,0,115,10,0,
- 0,0,116,0,0,130,1,0,100,1,0,83,41,2,122,178,
- 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,44,32,119,104,101,114,
- 101,32,112,97,116,104,32,105,115,32,97,32,115,116,114,46,
- 10,10,32,32,32,32,32,32,32,32,82,97,105,115,101,115,
- 32,73,79,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,218,7,73,79,69,114,114,111,114,41,2,
- 114,110,0,0,0,114,37,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,6,0,0,0,218,10,112,97,116,104,95,
- 109,116,105,109,101,169,2,0,0,115,2,0,0,0,0,6,
- 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,2,0,0,0,3,0,0,0,67,0,0,0,115,19,
- 0,0,0,100,1,0,124,0,0,106,0,0,124,1,0,131,
- 1,0,105,1,0,83,41,2,97,170,1,0,0,79,112,116,
+ 3,0,0,0,67,0,0,0,115,12,0,0,0,116,0,106,
+ 1,124,0,124,1,131,2,83,0,41,1,122,26,84,104,105,
+ 115,32,109,111,100,117,108,101,32,105,115,32,100,101,112,114,
+ 101,99,97,116,101,100,46,41,2,114,117,0,0,0,218,17,
+ 95,108,111,97,100,95,109,111,100,117,108,101,95,115,104,105,
+ 109,41,2,114,103,0,0,0,114,122,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,218,11,108,111,
+ 97,100,95,109,111,100,117,108,101,157,2,0,0,115,2,0,
+ 0,0,0,2,122,25,95,76,111,97,100,101,114,66,97,115,
+ 105,99,115,46,108,111,97,100,95,109,111,100,117,108,101,78,
+ 41,8,114,108,0,0,0,114,107,0,0,0,114,109,0,0,
+ 0,114,110,0,0,0,114,156,0,0,0,114,182,0,0,0,
+ 114,187,0,0,0,114,189,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,180,
+ 0,0,0,133,2,0,0,115,10,0,0,0,8,3,4,2,
+ 8,8,8,3,8,8,114,180,0,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,
+ 115,74,0,0,0,101,0,90,1,100,0,90,2,100,1,100,
+ 2,132,0,90,3,100,3,100,4,132,0,90,4,100,5,100,
+ 6,132,0,90,5,100,7,100,8,132,0,90,6,100,9,100,
+ 10,132,0,90,7,100,18,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,
+ 19,218,12,83,111,117,114,99,101,76,111,97,100,101,114,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
+ 67,0,0,0,115,8,0,0,0,116,0,130,1,100,1,83,
+ 0,41,2,122,178,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,44,
+ 32,119,104,101,114,101,32,112,97,116,104,32,105,115,32,97,
+ 32,115,116,114,46,10,10,32,32,32,32,32,32,32,32,82,
+ 97,105,115,101,115,32,73,79,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,218,7,73,79,69,114,
+ 114,111,114,41,2,114,103,0,0,0,114,37,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,10,
+ 112,97,116,104,95,109,116,105,109,101,164,2,0,0,115,2,
+ 0,0,0,0,6,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,2,0,0,0,3,0,0,0,67,
+ 0,0,0,115,14,0,0,0,100,1,124,0,106,0,124,1,
+ 131,1,105,1,83,0,41,2,97,170,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,
@@ -1136,1471 +1043,1393 @@ const unsigned char _Py_M__importlib_external[] = {
97,105,115,101,115,32,73,79,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,135,0,0,0,41,1,114,197,
- 0,0,0,41,2,114,110,0,0,0,114,37,0,0,0,114,
+ 32,32,32,32,32,32,32,114,129,0,0,0,41,1,114,192,
+ 0,0,0,41,2,114,103,0,0,0,114,37,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,10,
- 112,97,116,104,95,115,116,97,116,115,177,2,0,0,115,2,
+ 112,97,116,104,95,115,116,97,116,115,172,2,0,0,115,2,
0,0,0,0,11,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,4,0,0,0,3,0,0,0,67,
- 0,0,0,115,16,0,0,0,124,0,0,106,0,0,124,2,
- 0,124,3,0,131,2,0,83,41,1,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,
- 41,1,218,8,115,101,116,95,100,97,116,97,41,4,114,110,
- 0,0,0,114,92,0,0,0,90,10,99,97,99,104,101,95,
- 112,97,116,104,114,55,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,15,95,99,97,99,104,101,
- 95,98,121,116,101,99,111,100,101,190,2,0,0,115,2,0,
- 0,0,0,8,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,3,0,0,0,1,
- 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,
- 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,4,0,0,0,
- 41,3,114,110,0,0,0,114,37,0,0,0,114,55,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 114,199,0,0,0,200,2,0,0,115,0,0,0,0,122,21,
- 83,111,117,114,99,101,76,111,97,100,101,114,46,115,101,116,
- 95,100,97,116,97,99,2,0,0,0,0,0,0,0,5,0,
- 0,0,16,0,0,0,67,0,0,0,115,105,0,0,0,124,
- 0,0,106,0,0,124,1,0,131,1,0,125,2,0,121,19,
- 0,124,0,0,106,1,0,124,2,0,131,1,0,125,3,0,
- 87,110,58,0,4,116,2,0,107,10,0,114,94,0,1,125,
- 4,0,1,122,26,0,116,3,0,100,1,0,100,2,0,124,
- 1,0,131,1,1,124,4,0,130,2,0,87,89,100,3,0,
- 100,3,0,125,4,0,126,4,0,88,110,1,0,88,116,4,
- 0,124,3,0,131,1,0,83,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,108,0,0,0,78,41,
- 5,114,159,0,0,0,218,8,103,101,116,95,100,97,116,97,
- 114,42,0,0,0,114,109,0,0,0,114,157,0,0,0,41,
- 5,114,110,0,0,0,114,128,0,0,0,114,37,0,0,0,
- 114,155,0,0,0,218,3,101,120,99,114,4,0,0,0,114,
- 4,0,0,0,114,6,0,0,0,218,10,103,101,116,95,115,
- 111,117,114,99,101,207,2,0,0,115,14,0,0,0,0,2,
- 15,1,3,1,19,1,18,1,9,1,31,1,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,218,9,95,111,112,116,105,109,105,122,101,
- 114,31,0,0,0,99,3,0,0,0,1,0,0,0,4,0,
- 0,0,9,0,0,0,67,0,0,0,115,34,0,0,0,116,
- 0,0,106,1,0,116,2,0,124,1,0,124,2,0,100,1,
- 0,100,2,0,100,3,0,100,4,0,124,3,0,131,4,2,
- 83,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,190,0,0,0,218,12,100,111,
- 110,116,95,105,110,104,101,114,105,116,84,114,70,0,0,0,
- 41,3,114,123,0,0,0,114,189,0,0,0,218,7,99,111,
- 109,112,105,108,101,41,4,114,110,0,0,0,114,55,0,0,
- 0,114,37,0,0,0,114,204,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,218,14,115,111,117,114,
- 99,101,95,116,111,95,99,111,100,101,217,2,0,0,115,4,
- 0,0,0,0,5,21,1,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,10,0,0,
- 0,43,0,0,0,67,0,0,0,115,174,1,0,0,124,0,
- 0,106,0,0,124,1,0,131,1,0,125,2,0,100,1,0,
- 125,3,0,121,16,0,116,1,0,124,2,0,131,1,0,125,
- 4,0,87,110,24,0,4,116,2,0,107,10,0,114,63,0,
- 1,1,1,100,1,0,125,4,0,89,110,202,0,88,121,19,
- 0,124,0,0,106,3,0,124,2,0,131,1,0,125,5,0,
- 87,110,18,0,4,116,4,0,107,10,0,114,103,0,1,1,
- 1,89,110,162,0,88,116,5,0,124,5,0,100,2,0,25,
- 131,1,0,125,3,0,121,19,0,124,0,0,106,6,0,124,
- 4,0,131,1,0,125,6,0,87,110,18,0,4,116,7,0,
- 107,10,0,114,159,0,1,1,1,89,110,106,0,88,121,34,
- 0,116,8,0,124,6,0,100,3,0,124,5,0,100,4,0,
- 124,1,0,100,5,0,124,4,0,131,1,3,125,7,0,87,
- 110,24,0,4,116,9,0,116,10,0,102,2,0,107,10,0,
- 114,220,0,1,1,1,89,110,45,0,88,116,11,0,100,6,
- 0,124,4,0,124,2,0,131,3,0,1,116,12,0,124,7,
- 0,100,4,0,124,1,0,100,7,0,124,4,0,100,8,0,
- 124,2,0,131,1,3,83,124,0,0,106,6,0,124,2,0,
- 131,1,0,125,8,0,124,0,0,106,13,0,124,8,0,124,
- 2,0,131,2,0,125,9,0,116,11,0,100,9,0,124,2,
- 0,131,2,0,1,116,14,0,106,15,0,12,114,170,1,124,
- 4,0,100,1,0,107,9,0,114,170,1,124,3,0,100,1,
- 0,107,9,0,114,170,1,116,16,0,124,9,0,124,3,0,
- 116,17,0,124,8,0,131,1,0,131,3,0,125,6,0,121,
- 36,0,124,0,0,106,18,0,124,2,0,124,4,0,124,6,
- 0,131,3,0,1,116,11,0,100,10,0,124,4,0,131,2,
- 0,1,87,110,18,0,4,116,2,0,107,10,0,114,169,1,
- 1,1,1,89,110,1,0,88,124,9,0,83,41,11,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,114,
- 135,0,0,0,114,140,0,0,0,114,108,0,0,0,114,37,
- 0,0,0,122,13,123,125,32,109,97,116,99,104,101,115,32,
- 123,125,114,91,0,0,0,114,92,0,0,0,122,19,99,111,
- 100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,123,
- 125,122,10,119,114,111,116,101,32,123,33,114,125,41,19,114,
- 159,0,0,0,114,81,0,0,0,114,68,0,0,0,114,198,
- 0,0,0,114,196,0,0,0,114,16,0,0,0,114,201,0,
- 0,0,114,42,0,0,0,114,143,0,0,0,114,109,0,0,
- 0,114,138,0,0,0,114,107,0,0,0,114,149,0,0,0,
- 114,207,0,0,0,114,8,0,0,0,218,19,100,111,110,116,
- 95,119,114,105,116,101,95,98,121,116,101,99,111,100,101,114,
- 152,0,0,0,114,33,0,0,0,114,200,0,0,0,41,10,
- 114,110,0,0,0,114,128,0,0,0,114,92,0,0,0,114,
- 141,0,0,0,114,91,0,0,0,218,2,115,116,114,55,0,
- 0,0,218,10,98,121,116,101,115,95,100,97,116,97,114,155,
- 0,0,0,90,11,99,111,100,101,95,111,98,106,101,99,116,
- 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,
- 188,0,0,0,225,2,0,0,115,78,0,0,0,0,7,15,
- 1,6,1,3,1,16,1,13,1,11,2,3,1,19,1,13,
- 1,5,2,16,1,3,1,19,1,13,1,5,2,3,1,9,
- 1,12,1,13,1,19,1,5,2,9,1,7,1,15,1,6,
- 1,7,1,15,1,18,1,13,1,22,1,12,1,9,1,15,
- 1,3,1,19,1,17,1,13,1,5,1,122,21,83,111,117,
- 114,99,101,76,111,97,100,101,114,46,103,101,116,95,99,111,
- 100,101,78,114,89,0,0,0,41,10,114,114,0,0,0,114,
- 113,0,0,0,114,115,0,0,0,114,197,0,0,0,114,198,
- 0,0,0,114,200,0,0,0,114,199,0,0,0,114,203,0,
- 0,0,114,207,0,0,0,114,188,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 114,195,0,0,0,167,2,0,0,115,14,0,0,0,12,2,
- 12,8,12,13,12,10,12,7,12,10,18,8,114,195,0,0,
- 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,
- 0,0,0,0,0,0,115,112,0,0,0,101,0,0,90,1,
- 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,
- 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,
- 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,
- 0,101,7,0,135,0,0,102,1,0,100,8,0,100,9,0,
- 134,0,0,131,1,0,90,8,0,101,7,0,100,10,0,100,
- 11,0,132,0,0,131,1,0,90,9,0,100,12,0,100,13,
- 0,132,0,0,90,10,0,135,0,0,83,41,14,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,3,0,0,0,2,
- 0,0,0,67,0,0,0,115,22,0,0,0,124,1,0,124,
- 0,0,95,0,0,124,2,0,124,0,0,95,1,0,100,1,
- 0,83,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,41,2,114,108,0,0,0,114,37,0,0,0,41,3,
- 114,110,0,0,0,114,128,0,0,0,114,37,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,186,
- 0,0,0,26,3,0,0,115,4,0,0,0,0,3,9,1,
- 122,19,70,105,108,101,76,111,97,100,101,114,46,95,95,105,
- 110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,2,0,0,0,67,0,0,0,115,34,0,0,0,124,
- 0,0,106,0,0,124,1,0,106,0,0,107,2,0,111,33,
- 0,124,0,0,106,1,0,124,1,0,106,1,0,107,2,0,
- 83,41,1,78,41,2,218,9,95,95,99,108,97,115,115,95,
- 95,114,120,0,0,0,41,2,114,110,0,0,0,218,5,111,
- 116,104,101,114,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,218,6,95,95,101,113,95,95,32,3,0,0,115,
- 4,0,0,0,0,1,18,1,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,1,0,0,0,3,0,0,0,67,0,0,0,
- 115,26,0,0,0,116,0,0,124,0,0,106,1,0,131,1,
- 0,116,0,0,124,0,0,106,2,0,131,1,0,65,83,41,
- 1,78,41,3,218,4,104,97,115,104,114,108,0,0,0,114,
- 37,0,0,0,41,1,114,110,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,218,8,95,95,104,97,
- 115,104,95,95,36,3,0,0,115,2,0,0,0,0,1,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,2,0,0,
- 0,3,0,0,0,3,0,0,0,115,22,0,0,0,116,0,
- 0,116,1,0,124,0,0,131,2,0,106,2,0,124,1,0,
- 131,1,0,83,41,1,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,41,3,218,5,
- 115,117,112,101,114,114,211,0,0,0,114,194,0,0,0,41,
- 2,114,110,0,0,0,114,128,0,0,0,41,1,114,212,0,
+ 0,0,0,115,12,0,0,0,124,0,106,0,124,2,124,3,
+ 131,2,83,0,41,1,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,41,1,218,8,
+ 115,101,116,95,100,97,116,97,41,4,114,103,0,0,0,114,
+ 93,0,0,0,90,10,99,97,99,104,101,95,112,97,116,104,
+ 114,56,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,218,15,95,99,97,99,104,101,95,98,121,116,
+ 101,99,111,100,101,185,2,0,0,115,2,0,0,0,0,8,
+ 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,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,4,0,0,0,41,3,114,103,
+ 0,0,0,114,37,0,0,0,114,56,0,0,0,114,4,0,
0,0,114,4,0,0,0,114,6,0,0,0,114,194,0,0,
- 0,39,3,0,0,115,2,0,0,0,0,10,122,22,70,105,
- 108,101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,
- 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,1,0,0,0,67,0,0,0,115,7,0,0,0,124,0,
- 0,106,0,0,83,41,1,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,41,1,114,37,0,0,0,41,2,114,110,0,0,
- 0,114,128,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,114,159,0,0,0,51,3,0,0,115,2,
- 0,0,0,0,3,122,23,70,105,108,101,76,111,97,100,101,
- 114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,2,
- 0,0,0,0,0,0,0,3,0,0,0,9,0,0,0,67,
- 0,0,0,115,42,0,0,0,116,0,0,106,1,0,124,1,
- 0,100,1,0,131,2,0,143,17,0,125,2,0,124,2,0,
- 106,2,0,131,0,0,83,87,100,2,0,81,82,88,100,2,
- 0,83,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,218,1,114,
- 78,41,3,114,51,0,0,0,114,52,0,0,0,90,4,114,
- 101,97,100,41,3,114,110,0,0,0,114,37,0,0,0,114,
- 56,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,201,0,0,0,56,3,0,0,115,4,0,0,
- 0,0,2,21,1,122,19,70,105,108,101,76,111,97,100,101,
- 114,46,103,101,116,95,100,97,116,97,41,11,114,114,0,0,
- 0,114,113,0,0,0,114,115,0,0,0,114,116,0,0,0,
- 114,186,0,0,0,114,214,0,0,0,114,216,0,0,0,114,
- 125,0,0,0,114,194,0,0,0,114,159,0,0,0,114,201,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,41,1,114,
- 212,0,0,0,114,6,0,0,0,114,211,0,0,0,21,3,
- 0,0,115,14,0,0,0,12,3,6,2,12,6,12,4,12,
- 3,24,12,18,5,114,211,0,0,0,99,0,0,0,0,0,
- 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,
- 64,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,
- 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,
- 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6,
- 0,100,7,0,100,8,0,100,9,0,132,0,1,90,6,0,
- 100,10,0,83,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,3,0,0,0,4,0,0,0,67,0,0,0,115,34,0,
- 0,0,116,0,0,124,1,0,131,1,0,125,2,0,100,1,
- 0,124,2,0,106,1,0,100,2,0,124,2,0,106,2,0,
- 105,2,0,83,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,114,135,0,0,0,114,136,
- 0,0,0,41,3,114,41,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,
- 110,0,0,0,114,37,0,0,0,114,209,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,6,0,0,0,114,198,0,
- 0,0,66,3,0,0,115,4,0,0,0,0,2,12,1,122,
- 27,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,
- 114,46,112,97,116,104,95,115,116,97,116,115,99,4,0,0,
- 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,
- 0,115,34,0,0,0,116,0,0,124,1,0,131,1,0,125,
- 4,0,124,0,0,106,1,0,124,2,0,124,3,0,100,1,
- 0,124,4,0,131,2,1,83,41,2,78,218,5,95,109,111,
- 100,101,41,2,114,99,0,0,0,114,199,0,0,0,41,5,
- 114,110,0,0,0,114,92,0,0,0,114,91,0,0,0,114,
- 55,0,0,0,114,44,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,200,0,0,0,71,3,0,
- 0,115,4,0,0,0,0,2,12,1,122,32,83,111,117,114,
- 99,101,70,105,108,101,76,111,97,100,101,114,46,95,99,97,
- 99,104,101,95,98,121,116,101,99,111,100,101,114,221,0,0,
- 0,105,182,1,0,0,99,3,0,0,0,1,0,0,0,9,
- 0,0,0,17,0,0,0,67,0,0,0,115,53,1,0,0,
- 116,0,0,124,1,0,131,1,0,92,2,0,125,4,0,125,
- 5,0,103,0,0,125,6,0,120,54,0,124,4,0,114,80,
- 0,116,1,0,124,4,0,131,1,0,12,114,80,0,116,0,
- 0,124,4,0,131,1,0,92,2,0,125,4,0,125,7,0,
- 124,6,0,106,2,0,124,7,0,131,1,0,1,113,27,0,
- 87,120,132,0,116,3,0,124,6,0,131,1,0,68,93,118,
- 0,125,7,0,116,4,0,124,4,0,124,7,0,131,2,0,
- 125,4,0,121,17,0,116,5,0,106,6,0,124,4,0,131,
- 1,0,1,87,113,94,0,4,116,7,0,107,10,0,114,155,
- 0,1,1,1,119,94,0,89,113,94,0,4,116,8,0,107,
- 10,0,114,211,0,1,125,8,0,1,122,25,0,116,9,0,
- 100,1,0,124,4,0,124,8,0,131,3,0,1,100,2,0,
- 83,87,89,100,2,0,100,2,0,125,8,0,126,8,0,88,
- 113,94,0,88,113,94,0,87,121,33,0,116,10,0,124,1,
- 0,124,2,0,124,3,0,131,3,0,1,116,9,0,100,3,
- 0,124,1,0,131,2,0,1,87,110,53,0,4,116,8,0,
- 107,10,0,114,48,1,1,125,8,0,1,122,21,0,116,9,
- 0,100,1,0,124,1,0,124,8,0,131,3,0,1,87,89,
- 100,2,0,100,2,0,125,8,0,126,8,0,88,110,1,0,
- 88,100,2,0,83,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,11,114,40,0,0,0,114,48,0,0,0,114,165,0,0,
- 0,114,35,0,0,0,114,30,0,0,0,114,3,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,42,0,0,0,114,107,0,
- 0,0,114,57,0,0,0,41,9,114,110,0,0,0,114,37,
- 0,0,0,114,55,0,0,0,114,221,0,0,0,218,6,112,
- 97,114,101,110,116,114,96,0,0,0,114,29,0,0,0,114,
- 25,0,0,0,114,202,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,199,0,0,0,76,3,0,
- 0,115,38,0,0,0,0,2,18,1,6,2,22,1,18,1,
- 17,2,19,1,15,1,3,1,17,1,13,2,7,1,18,3,
- 16,1,27,1,3,1,16,1,17,1,18,2,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,114,0,0,0,114,
- 113,0,0,0,114,115,0,0,0,114,116,0,0,0,114,198,
- 0,0,0,114,200,0,0,0,114,199,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
- 0,114,219,0,0,0,62,3,0,0,115,8,0,0,0,12,
- 2,6,2,12,5,12,5,114,219,0,0,0,99,0,0,0,
- 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
- 0,115,46,0,0,0,101,0,0,90,1,0,100,0,0,90,
- 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
- 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
- 100,6,0,83,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,5,0,0,0,6,0,0,0,67,0,0,0,
- 115,76,0,0,0,124,0,0,106,0,0,124,1,0,131,1,
- 0,125,2,0,124,0,0,106,1,0,124,2,0,131,1,0,
- 125,3,0,116,2,0,124,3,0,100,1,0,124,1,0,100,
- 2,0,124,2,0,131,1,2,125,4,0,116,3,0,124,4,
- 0,100,1,0,124,1,0,100,3,0,124,2,0,131,1,2,
- 83,41,4,78,114,108,0,0,0,114,37,0,0,0,114,91,
- 0,0,0,41,4,114,159,0,0,0,114,201,0,0,0,114,
- 143,0,0,0,114,149,0,0,0,41,5,114,110,0,0,0,
- 114,128,0,0,0,114,37,0,0,0,114,55,0,0,0,114,
- 210,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,188,0,0,0,109,3,0,0,115,8,0,0,
- 0,0,1,15,1,15,1,24,1,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,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,
- 0,0,100,1,0,83,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,4,0,0,0,41,2,114,110,0,0,0,114,128,
+ 0,195,2,0,0,115,0,0,0,0,122,21,83,111,117,114,
+ 99,101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,
+ 97,99,2,0,0,0,0,0,0,0,5,0,0,0,16,0,
+ 0,0,67,0,0,0,115,84,0,0,0,124,0,106,0,124,
+ 1,131,1,125,2,121,14,124,0,106,1,124,2,131,1,125,
+ 3,87,0,110,50,4,0,116,2,107,10,114,74,1,0,125,
+ 4,1,0,122,22,116,3,100,1,100,2,124,1,144,1,131,
+ 1,124,4,130,2,87,0,89,0,100,3,100,3,125,4,126,
+ 4,88,0,110,2,88,0,116,4,124,3,131,1,83,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,101,0,0,0,78,41,5,114,154,0,0,0,218,8,103,
+ 101,116,95,100,97,116,97,114,42,0,0,0,114,102,0,0,
+ 0,114,152,0,0,0,41,5,114,103,0,0,0,114,122,0,
+ 0,0,114,37,0,0,0,114,150,0,0,0,218,3,101,120,
+ 99,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
+ 218,10,103,101,116,95,115,111,117,114,99,101,202,2,0,0,
+ 115,14,0,0,0,0,2,10,1,2,1,14,1,16,1,6,
+ 1,28,1,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,31,0,0,
+ 0,41,1,218,9,95,111,112,116,105,109,105,122,101,99,3,
+ 0,0,0,1,0,0,0,4,0,0,0,9,0,0,0,67,
+ 0,0,0,115,26,0,0,0,116,0,106,1,116,2,124,1,
+ 124,2,100,1,100,2,100,3,100,4,124,3,144,2,131,4,
+ 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,185,0,0,0,218,12,100,
+ 111,110,116,95,105,110,104,101,114,105,116,84,114,71,0,0,
+ 0,41,3,114,117,0,0,0,114,184,0,0,0,218,7,99,
+ 111,109,112,105,108,101,41,4,114,103,0,0,0,114,56,0,
+ 0,0,114,37,0,0,0,114,199,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,14,115,111,117,
+ 114,99,101,95,116,111,95,99,111,100,101,212,2,0,0,115,
+ 4,0,0,0,0,5,14,1,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,10,0,
+ 0,0,43,0,0,0,67,0,0,0,115,106,1,0,0,124,
+ 0,106,0,124,1,131,1,125,2,100,1,125,3,121,12,116,
+ 1,124,2,131,1,125,4,87,0,110,24,4,0,116,2,107,
+ 10,114,50,1,0,1,0,1,0,100,1,125,4,89,0,110,
+ 174,88,0,121,14,124,0,106,3,124,2,131,1,125,5,87,
+ 0,110,20,4,0,116,4,107,10,114,86,1,0,1,0,1,
+ 0,89,0,110,138,88,0,116,5,124,5,100,2,25,0,131,
+ 1,125,3,121,14,124,0,106,6,124,4,131,1,125,6,87,
+ 0,110,20,4,0,116,7,107,10,114,134,1,0,1,0,1,
+ 0,89,0,110,90,88,0,121,26,116,8,124,6,100,3,124,
+ 5,100,4,124,1,100,5,124,4,144,3,131,1,125,7,87,
+ 0,110,24,4,0,116,9,116,10,102,2,107,10,114,186,1,
+ 0,1,0,1,0,89,0,110,38,88,0,116,11,106,12,100,
+ 6,124,4,124,2,131,3,1,0,116,13,124,7,100,4,124,
+ 1,100,7,124,4,100,8,124,2,144,3,131,1,83,0,124,
+ 0,106,6,124,2,131,1,125,8,124,0,106,14,124,8,124,
+ 2,131,2,125,9,116,11,106,12,100,9,124,2,131,2,1,
+ 0,116,15,106,16,12,0,144,1,114,102,124,4,100,1,107,
+ 9,144,1,114,102,124,3,100,1,107,9,144,1,114,102,116,
+ 17,124,9,124,3,116,18,124,8,131,1,131,3,125,6,121,
+ 30,124,0,106,19,124,2,124,4,124,6,131,3,1,0,116,
+ 11,106,12,100,10,124,4,131,2,1,0,87,0,110,22,4,
+ 0,116,2,107,10,144,1,114,100,1,0,1,0,1,0,89,
+ 0,110,2,88,0,124,9,83,0,41,11,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,114,129,0,0,
+ 0,114,135,0,0,0,114,101,0,0,0,114,37,0,0,0,
+ 122,13,123,125,32,109,97,116,99,104,101,115,32,123,125,114,
+ 92,0,0,0,114,93,0,0,0,122,19,99,111,100,101,32,
+ 111,98,106,101,99,116,32,102,114,111,109,32,123,125,122,10,
+ 119,114,111,116,101,32,123,33,114,125,41,20,114,154,0,0,
+ 0,114,82,0,0,0,114,69,0,0,0,114,193,0,0,0,
+ 114,191,0,0,0,114,16,0,0,0,114,196,0,0,0,114,
+ 42,0,0,0,114,138,0,0,0,114,102,0,0,0,114,133,
+ 0,0,0,114,117,0,0,0,114,132,0,0,0,114,144,0,
+ 0,0,114,202,0,0,0,114,8,0,0,0,218,19,100,111,
+ 110,116,95,119,114,105,116,101,95,98,121,116,101,99,111,100,
+ 101,114,147,0,0,0,114,33,0,0,0,114,195,0,0,0,
+ 41,10,114,103,0,0,0,114,122,0,0,0,114,93,0,0,
+ 0,114,136,0,0,0,114,92,0,0,0,218,2,115,116,114,
+ 56,0,0,0,218,10,98,121,116,101,115,95,100,97,116,97,
+ 114,150,0,0,0,90,11,99,111,100,101,95,111,98,106,101,
+ 99,116,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
+ 0,114,183,0,0,0,220,2,0,0,115,78,0,0,0,0,
+ 7,10,1,4,1,2,1,12,1,14,1,10,2,2,1,14,
+ 1,14,1,6,2,12,1,2,1,14,1,14,1,6,2,2,
+ 1,6,1,8,1,12,1,18,1,6,2,8,1,6,1,10,
+ 1,4,1,8,1,10,1,12,1,12,1,20,1,10,1,6,
+ 1,10,1,2,1,14,1,16,1,16,1,6,1,122,21,83,
+ 111,117,114,99,101,76,111,97,100,101,114,46,103,101,116,95,
+ 99,111,100,101,78,114,90,0,0,0,41,10,114,108,0,0,
+ 0,114,107,0,0,0,114,109,0,0,0,114,192,0,0,0,
+ 114,193,0,0,0,114,195,0,0,0,114,194,0,0,0,114,
+ 198,0,0,0,114,202,0,0,0,114,183,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
+ 0,0,114,190,0,0,0,162,2,0,0,115,14,0,0,0,
+ 8,2,8,8,8,13,8,10,8,7,8,10,14,8,114,190,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,0,0,0,0,115,76,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,135,0,83,0,41,14,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,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,41,2,114,101,0,0,
+ 0,114,37,0,0,0,41,3,114,103,0,0,0,114,122,0,
+ 0,0,114,37,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,181,0,0,0,21,3,0,0,115,
+ 4,0,0,0,0,3,6,1,122,19,70,105,108,101,76,111,
+ 97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,
+ 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,
+ 0,0,115,24,0,0,0,124,0,106,0,124,1,106,0,107,
+ 2,111,22,124,0,106,1,124,1,106,1,107,2,83,0,41,
+ 1,78,41,2,218,9,95,95,99,108,97,115,115,95,95,114,
+ 114,0,0,0,41,2,114,103,0,0,0,218,5,111,116,104,
+ 101,114,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
+ 0,218,6,95,95,101,113,95,95,27,3,0,0,115,4,0,
+ 0,0,0,1,12,1,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,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,41,1,78,41,3,218,4,104,97,
+ 115,104,114,101,0,0,0,114,37,0,0,0,41,1,114,103,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,114,203,0,0,0,115,3,0,0,115,2,0,0,0,
- 0,2,122,31,83,111,117,114,99,101,108,101,115,115,70,105,
- 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
- 114,99,101,78,41,6,114,114,0,0,0,114,113,0,0,0,
- 114,115,0,0,0,114,116,0,0,0,114,188,0,0,0,114,
- 203,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,224,0,0,0,105,3,0,
- 0,115,6,0,0,0,12,2,6,2,12,6,114,224,0,0,
+ 0,0,218,8,95,95,104,97,115,104,95,95,31,3,0,0,
+ 115,2,0,0,0,0,1,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,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,106,2,
+ 124,1,131,1,83,0,41,1,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,41,3,
+ 218,5,115,117,112,101,114,114,206,0,0,0,114,189,0,0,
+ 0,41,2,114,103,0,0,0,114,122,0,0,0,41,1,114,
+ 207,0,0,0,114,4,0,0,0,114,6,0,0,0,114,189,
+ 0,0,0,34,3,0,0,115,2,0,0,0,0,10,122,22,
+ 70,105,108,101,76,111,97,100,101,114,46,108,111,97,100,95,
+ 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,
+ 0,0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,
+ 124,0,106,0,83,0,41,1,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,41,1,114,37,0,0,0,41,2,114,103,0,
+ 0,0,114,122,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,154,0,0,0,46,3,0,0,115,
+ 2,0,0,0,0,3,122,23,70,105,108,101,76,111,97,100,
+ 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,
+ 2,0,0,0,0,0,0,0,3,0,0,0,9,0,0,0,
+ 67,0,0,0,115,32,0,0,0,116,0,106,1,124,1,100,
+ 1,131,2,143,10,125,2,124,2,106,2,131,0,83,0,81,
+ 0,82,0,88,0,100,2,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,218,1,114,78,41,3,114,52,0,0,0,114,
+ 53,0,0,0,90,4,114,101,97,100,41,3,114,103,0,0,
+ 0,114,37,0,0,0,114,57,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,196,0,0,0,51,
+ 3,0,0,115,4,0,0,0,0,2,14,1,122,19,70,105,
+ 108,101,76,111,97,100,101,114,46,103,101,116,95,100,97,116,
+ 97,41,11,114,108,0,0,0,114,107,0,0,0,114,109,0,
+ 0,0,114,110,0,0,0,114,181,0,0,0,114,209,0,0,
+ 0,114,211,0,0,0,114,119,0,0,0,114,189,0,0,0,
+ 114,154,0,0,0,114,196,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,41,1,114,207,0,0,0,114,6,0,0,0,
+ 114,206,0,0,0,16,3,0,0,115,14,0,0,0,8,3,
+ 4,2,8,6,8,4,8,3,16,12,12,5,114,206,0,0,
0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
- 0,0,64,0,0,0,115,136,0,0,0,101,0,0,90,1,
- 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,
- 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,
- 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,
- 0,100,8,0,100,9,0,132,0,0,90,7,0,100,10,0,
- 100,11,0,132,0,0,90,8,0,100,12,0,100,13,0,132,
- 0,0,90,9,0,100,14,0,100,15,0,132,0,0,90,10,
- 0,100,16,0,100,17,0,132,0,0,90,11,0,101,12,0,
- 100,18,0,100,19,0,132,0,0,131,1,0,90,13,0,100,
- 20,0,83,41,21,218,19,69,120,116,101,110,115,105,111,110,
- 70,105,108,101,76,111,97,100,101,114,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,3,0,0,0,2,0,0,0,67,0,0,0,115,22,
- 0,0,0,124,1,0,124,0,0,95,0,0,124,2,0,124,
- 0,0,95,1,0,100,0,0,83,41,1,78,41,2,114,108,
- 0,0,0,114,37,0,0,0,41,3,114,110,0,0,0,114,
- 108,0,0,0,114,37,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,186,0,0,0,132,3,0,
- 0,115,4,0,0,0,0,1,9,1,122,28,69,120,116,101,
- 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,
- 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,2,0,0,0,67,0,0,0,115,34,0,
- 0,0,124,0,0,106,0,0,124,1,0,106,0,0,107,2,
- 0,111,33,0,124,0,0,106,1,0,124,1,0,106,1,0,
- 107,2,0,83,41,1,78,41,2,114,212,0,0,0,114,120,
- 0,0,0,41,2,114,110,0,0,0,114,213,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,214,
- 0,0,0,136,3,0,0,115,4,0,0,0,0,1,18,1,
- 122,26,69,120,116,101,110,115,105,111,110,70,105,108,101,76,
- 111,97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,
- 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
- 0,115,26,0,0,0,116,0,0,124,0,0,106,1,0,131,
- 1,0,116,0,0,124,0,0,106,2,0,131,1,0,65,83,
- 41,1,78,41,3,114,215,0,0,0,114,108,0,0,0,114,
- 37,0,0,0,41,1,114,110,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,114,216,0,0,0,140,
- 3,0,0,115,2,0,0,0,0,1,122,28,69,120,116,101,
- 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,
- 95,95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,
- 0,3,0,0,0,4,0,0,0,67,0,0,0,115,47,0,
- 0,0,116,0,0,106,1,0,116,2,0,106,3,0,124,1,
- 0,131,2,0,125,2,0,116,4,0,100,1,0,124,1,0,
- 106,5,0,124,0,0,106,6,0,131,3,0,1,124,2,0,
- 83,41,2,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,41,7,114,123,0,0,0,114,189,0,0,0,114,
- 147,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,
- 97,109,105,99,114,107,0,0,0,114,108,0,0,0,114,37,
- 0,0,0,41,3,114,110,0,0,0,114,166,0,0,0,114,
- 191,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,187,0,0,0,143,3,0,0,115,10,0,0,
- 0,0,2,6,1,15,1,6,1,16,1,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,2,0,0,0,4,0,0,0,67,
- 0,0,0,115,45,0,0,0,116,0,0,106,1,0,116,2,
- 0,106,3,0,124,1,0,131,2,0,1,116,4,0,100,1,
- 0,124,0,0,106,5,0,124,0,0,106,6,0,131,3,0,
- 1,100,2,0,83,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,123,0,0,0,114,189,0,0,0,114,147,
- 0,0,0,90,12,101,120,101,99,95,100,121,110,97,109,105,
- 99,114,107,0,0,0,114,108,0,0,0,114,37,0,0,0,
- 41,2,114,110,0,0,0,114,191,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,114,192,0,0,0,
- 151,3,0,0,115,6,0,0,0,0,2,19,1,6,1,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,2,0,0,0,4,0,0,
- 0,3,0,0,0,115,48,0,0,0,116,0,0,124,0,0,
- 106,1,0,131,1,0,100,1,0,25,137,0,0,116,2,0,
- 135,0,0,102,1,0,100,2,0,100,3,0,134,0,0,116,
- 3,0,68,131,1,0,131,1,0,83,41,4,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,
- 31,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,
- 0,4,0,0,0,51,0,0,0,115,31,0,0,0,124,0,
- 0,93,21,0,125,1,0,136,0,0,100,0,0,124,1,0,
- 23,107,2,0,86,1,113,3,0,100,1,0,83,41,2,114,
- 186,0,0,0,78,114,4,0,0,0,41,2,114,24,0,0,
- 0,218,6,115,117,102,102,105,120,41,1,218,9,102,105,108,
- 101,95,110,97,109,101,114,4,0,0,0,114,6,0,0,0,
- 250,9,60,103,101,110,101,120,112,114,62,160,3,0,0,115,
- 2,0,0,0,6,1,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,41,4,114,40,0,0,0,
- 114,37,0,0,0,218,3,97,110,121,218,18,69,88,84,69,
- 78,83,73,79,78,95,83,85,70,70,73,88,69,83,41,2,
- 114,110,0,0,0,114,128,0,0,0,114,4,0,0,0,41,
- 1,114,227,0,0,0,114,6,0,0,0,114,161,0,0,0,
- 157,3,0,0,115,6,0,0,0,0,2,19,1,18,1,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,2,0,0,0,1,0,0,0,
- 67,0,0,0,115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,110,0,0,0,114,128,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
- 0,114,188,0,0,0,163,3,0,0,115,2,0,0,0,0,
- 2,122,28,69,120,116,101,110,115,105,111,110,70,105,108,101,
- 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99,
- 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
- 67,0,0,0,115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,110,
- 0,0,0,114,128,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,114,203,0,0,0,167,3,0,0,
- 115,2,0,0,0,0,2,122,30,69,120,116,101,110,115,105,
- 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
- 95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,
- 2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,0,
- 0,124,0,0,106,0,0,83,41,1,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,41,1,114,37,0,0,0,41,2,114,
- 110,0,0,0,114,128,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,159,0,0,0,171,3,0,
- 0,115,2,0,0,0,0,3,122,32,69,120,116,101,110,115,
- 105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,
- 116,95,102,105,108,101,110,97,109,101,78,41,14,114,114,0,
- 0,0,114,113,0,0,0,114,115,0,0,0,114,116,0,0,
- 0,114,186,0,0,0,114,214,0,0,0,114,216,0,0,0,
- 114,187,0,0,0,114,192,0,0,0,114,161,0,0,0,114,
- 188,0,0,0,114,203,0,0,0,114,125,0,0,0,114,159,
+ 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,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,2,122,
+ 33,82,101,116,117,114,110,32,116,104,101,32,109,101,116,97,
+ 100,97,116,97,32,102,111,114,32,116,104,101,32,112,97,116,
+ 104,46,41,2,122,5,109,116,105,109,101,122,4,115,105,122,
+ 101,41,3,114,41,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,103,0,
+ 0,0,114,37,0,0,0,114,204,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,114,193,0,0,0,
+ 61,3,0,0,115,4,0,0,0,0,2,8,1,122,27,83,
+ 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,
+ 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,
+ 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,
+ 26,0,0,0,116,0,124,1,131,1,125,4,124,0,106,1,
+ 124,2,124,3,100,1,124,4,144,1,131,2,83,0,41,2,
+ 78,218,5,95,109,111,100,101,41,2,114,100,0,0,0,114,
+ 194,0,0,0,41,5,114,103,0,0,0,114,93,0,0,0,
+ 114,92,0,0,0,114,56,0,0,0,114,44,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,195,
+ 0,0,0,66,3,0,0,115,4,0,0,0,0,2,8,1,
+ 122,32,83,111,117,114,99,101,70,105,108,101,76,111,97,100,
+ 101,114,46,95,99,97,99,104,101,95,98,121,116,101,99,111,
+ 100,101,105,182,1,0,0,41,1,114,216,0,0,0,99,3,
+ 0,0,0,1,0,0,0,9,0,0,0,17,0,0,0,67,
+ 0,0,0,115,250,0,0,0,116,0,124,1,131,1,92,2,
+ 125,4,125,5,103,0,125,6,120,40,124,4,114,56,116,1,
+ 124,4,131,1,12,0,114,56,116,0,124,4,131,1,92,2,
+ 125,4,125,7,124,6,106,2,124,7,131,1,1,0,113,18,
+ 87,0,120,108,116,3,124,6,131,1,68,0,93,96,125,7,
+ 116,4,124,4,124,7,131,2,125,4,121,14,116,5,106,6,
+ 124,4,131,1,1,0,87,0,113,68,4,0,116,7,107,10,
+ 114,118,1,0,1,0,1,0,119,68,89,0,113,68,4,0,
+ 116,8,107,10,114,162,1,0,125,8,1,0,122,18,116,9,
+ 106,10,100,1,124,4,124,8,131,3,1,0,100,2,83,0,
+ 100,2,125,8,126,8,88,0,113,68,88,0,113,68,87,0,
+ 121,28,116,11,124,1,124,2,124,3,131,3,1,0,116,9,
+ 106,10,100,3,124,1,131,2,1,0,87,0,110,48,4,0,
+ 116,8,107,10,114,244,1,0,125,8,1,0,122,20,116,9,
+ 106,10,100,1,124,1,124,8,131,3,1,0,87,0,89,0,
+ 100,2,100,2,125,8,126,8,88,0,110,2,88,0,100,2,
+ 83,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,
+ 40,0,0,0,114,48,0,0,0,114,160,0,0,0,114,35,
+ 0,0,0,114,30,0,0,0,114,3,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,42,0,0,0,114,117,0,0,0,114,
+ 132,0,0,0,114,58,0,0,0,41,9,114,103,0,0,0,
+ 114,37,0,0,0,114,56,0,0,0,114,216,0,0,0,218,
+ 6,112,97,114,101,110,116,114,97,0,0,0,114,29,0,0,
+ 0,114,25,0,0,0,114,197,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,194,0,0,0,71,
+ 3,0,0,115,42,0,0,0,0,2,12,1,4,2,16,1,
+ 12,1,14,2,14,1,10,1,2,1,14,1,14,2,6,1,
+ 16,3,6,1,8,1,20,1,2,1,12,1,16,1,16,2,
+ 8,1,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,108,0,0,0,114,107,0,0,0,114,109,0,0,0,114,
+ 110,0,0,0,114,193,0,0,0,114,195,0,0,0,114,194,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,114,225,0,0,0,124,3,0,0,
- 115,20,0,0,0,12,6,6,2,12,4,12,4,12,3,12,
- 8,12,6,12,6,12,4,12,4,114,225,0,0,0,99,0,
- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,
- 0,0,0,115,130,0,0,0,101,0,0,90,1,0,100,0,
- 0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,
- 132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,
- 5,0,100,6,0,100,7,0,132,0,0,90,6,0,100,8,
- 0,100,9,0,132,0,0,90,7,0,100,10,0,100,11,0,
- 132,0,0,90,8,0,100,12,0,100,13,0,132,0,0,90,
- 9,0,100,14,0,100,15,0,132,0,0,90,10,0,100,16,
- 0,100,17,0,132,0,0,90,11,0,100,18,0,100,19,0,
- 132,0,0,90,12,0,100,20,0,83,41,21,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,
- 4,0,0,0,2,0,0,0,67,0,0,0,115,52,0,0,
- 0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,
- 95,1,0,116,2,0,124,0,0,106,3,0,131,0,0,131,
- 1,0,124,0,0,95,4,0,124,3,0,124,0,0,95,5,
- 0,100,0,0,83,41,1,78,41,6,218,5,95,110,97,109,
- 101,218,5,95,112,97,116,104,114,95,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,
- 41,4,114,110,0,0,0,114,108,0,0,0,114,37,0,0,
- 0,218,11,112,97,116,104,95,102,105,110,100,101,114,114,4,
- 0,0,0,114,4,0,0,0,114,6,0,0,0,114,186,0,
- 0,0,184,3,0,0,115,8,0,0,0,0,1,9,1,9,
- 1,21,1,122,23,95,78,97,109,101,115,112,97,99,101,80,
- 97,116,104,46,95,95,105,110,105,116,95,95,99,1,0,0,
- 0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,
- 0,115,53,0,0,0,124,0,0,106,0,0,106,1,0,100,
- 1,0,131,1,0,92,3,0,125,1,0,125,2,0,125,3,
- 0,124,2,0,100,2,0,107,2,0,114,43,0,100,6,0,
- 83,124,1,0,100,5,0,102,2,0,83,41,7,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,60,0,
- 0,0,114,32,0,0,0,114,8,0,0,0,114,37,0,0,
- 0,90,8,95,95,112,97,116,104,95,95,41,2,122,3,115,
- 121,115,122,4,112,97,116,104,41,2,114,232,0,0,0,114,
- 34,0,0,0,41,4,114,110,0,0,0,114,223,0,0,0,
- 218,3,100,111,116,90,2,109,101,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,
- 112,97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,
- 115,190,3,0,0,115,8,0,0,0,0,2,27,1,12,2,
- 4,3,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,3,0,0,0,3,0,0,0,67,0,0,0,115,
- 38,0,0,0,124,0,0,106,0,0,131,0,0,92,2,0,
- 125,1,0,125,2,0,116,1,0,116,2,0,106,3,0,124,
- 1,0,25,124,2,0,131,2,0,83,41,1,78,41,4,114,
- 239,0,0,0,114,119,0,0,0,114,8,0,0,0,218,7,
- 109,111,100,117,108,101,115,41,3,114,110,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,4,0,0,0,114,4,0,0,0,114,6,0,0,
- 0,114,234,0,0,0,200,3,0,0,115,4,0,0,0,0,
- 1,18,1,122,31,95,78,97,109,101,115,112,97,99,101,80,
- 97,116,104,46,95,103,101,116,95,112,97,114,101,110,116,95,
- 112,97,116,104,99,1,0,0,0,0,0,0,0,3,0,0,
- 0,3,0,0,0,67,0,0,0,115,118,0,0,0,116,0,
- 0,124,0,0,106,1,0,131,0,0,131,1,0,125,1,0,
- 124,1,0,124,0,0,106,2,0,107,3,0,114,111,0,124,
- 0,0,106,3,0,124,0,0,106,4,0,124,1,0,131,2,
- 0,125,2,0,124,2,0,100,0,0,107,9,0,114,102,0,
- 124,2,0,106,5,0,100,0,0,107,8,0,114,102,0,124,
- 2,0,106,6,0,114,102,0,124,2,0,106,6,0,124,0,
- 0,95,7,0,124,1,0,124,0,0,95,2,0,124,0,0,
- 106,7,0,83,41,1,78,41,8,114,95,0,0,0,114,234,
- 0,0,0,114,235,0,0,0,114,236,0,0,0,114,232,0,
- 0,0,114,129,0,0,0,114,158,0,0,0,114,233,0,0,
- 0,41,3,114,110,0,0,0,90,11,112,97,114,101,110,116,
- 95,112,97,116,104,114,166,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,6,0,0,0,218,12,95,114,101,99,97,
- 108,99,117,108,97,116,101,204,3,0,0,115,16,0,0,0,
- 0,2,18,1,15,1,21,3,27,1,9,1,12,1,9,1,
- 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,1,0,0,0,2,0,0,0,67,0,
- 0,0,115,16,0,0,0,116,0,0,124,0,0,106,1,0,
- 131,0,0,131,1,0,83,41,1,78,41,2,218,4,105,116,
- 101,114,114,241,0,0,0,41,1,114,110,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,6,0,0,0,218,8,95,
- 95,105,116,101,114,95,95,217,3,0,0,115,2,0,0,0,
- 0,1,122,23,95,78,97,109,101,115,112,97,99,101,80,97,
- 116,104,46,95,95,105,116,101,114,95,95,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,
- 115,16,0,0,0,116,0,0,124,0,0,106,1,0,131,0,
- 0,131,1,0,83,41,1,78,41,2,114,33,0,0,0,114,
- 241,0,0,0,41,1,114,110,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,218,7,95,95,108,101,
- 110,95,95,220,3,0,0,115,2,0,0,0,0,1,122,22,
+ 0,0,114,6,0,0,0,114,214,0,0,0,57,3,0,0,
+ 115,8,0,0,0,8,2,4,2,8,5,8,5,114,214,0,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,64,0,0,0,115,32,0,0,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,
+ 100,4,100,5,132,0,90,5,100,6,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,5,0,0,0,
+ 6,0,0,0,67,0,0,0,115,56,0,0,0,124,0,106,
+ 0,124,1,131,1,125,2,124,0,106,1,124,2,131,1,125,
+ 3,116,2,124,3,100,1,124,1,100,2,124,2,144,2,131,
+ 1,125,4,116,3,124,4,100,1,124,1,100,3,124,2,144,
+ 2,131,1,83,0,41,4,78,114,101,0,0,0,114,37,0,
+ 0,0,114,92,0,0,0,41,4,114,154,0,0,0,114,196,
+ 0,0,0,114,138,0,0,0,114,144,0,0,0,41,5,114,
+ 103,0,0,0,114,122,0,0,0,114,37,0,0,0,114,56,
+ 0,0,0,114,205,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,6,0,0,0,114,183,0,0,0,106,3,0,0,
+ 115,8,0,0,0,0,1,10,1,10,1,18,1,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,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,4,0,0,0,41,2,114,103,0,
+ 0,0,114,122,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,198,0,0,0,112,3,0,0,115,
+ 2,0,0,0,0,2,122,31,83,111,117,114,99,101,108,101,
+ 115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
+ 95,115,111,117,114,99,101,78,41,6,114,108,0,0,0,114,
+ 107,0,0,0,114,109,0,0,0,114,110,0,0,0,114,183,
+ 0,0,0,114,198,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,114,219,0,0,
+ 0,102,3,0,0,115,6,0,0,0,8,2,4,2,8,6,
+ 114,219,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,64,0,0,0,115,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,218,19,69,
+ 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
+ 101,114,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,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,41,1,78,41,2,
+ 114,101,0,0,0,114,37,0,0,0,41,3,114,103,0,0,
+ 0,114,101,0,0,0,114,37,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,181,0,0,0,129,
+ 3,0,0,115,4,0,0,0,0,1,6,1,122,28,69,120,
+ 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
+ 114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,0,
+ 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,
+ 24,0,0,0,124,0,106,0,124,1,106,0,107,2,111,22,
+ 124,0,106,1,124,1,106,1,107,2,83,0,41,1,78,41,
+ 2,114,207,0,0,0,114,114,0,0,0,41,2,114,103,0,
+ 0,0,114,208,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,209,0,0,0,133,3,0,0,115,
+ 4,0,0,0,0,1,12,1,122,26,69,120,116,101,110,115,
+ 105,111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,
+ 101,113,95,95,99,1,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,67,0,0,0,115,20,0,0,0,116,0,
+ 124,0,106,1,131,1,116,0,124,0,106,2,131,1,65,0,
+ 83,0,41,1,78,41,3,114,210,0,0,0,114,101,0,0,
+ 0,114,37,0,0,0,41,1,114,103,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,114,211,0,0,
+ 0,137,3,0,0,115,2,0,0,0,0,1,122,28,69,120,
+ 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
+ 114,46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,
+ 0,0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,
+ 36,0,0,0,116,0,106,1,116,2,106,3,124,1,131,2,
+ 125,2,116,0,106,4,100,1,124,1,106,5,124,0,106,6,
+ 131,3,1,0,124,2,83,0,41,2,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,41,7,114,117,0,0,
+ 0,114,184,0,0,0,114,142,0,0,0,90,14,99,114,101,
+ 97,116,101,95,100,121,110,97,109,105,99,114,132,0,0,0,
+ 114,101,0,0,0,114,37,0,0,0,41,3,114,103,0,0,
+ 0,114,161,0,0,0,114,186,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,182,0,0,0,140,
+ 3,0,0,115,10,0,0,0,0,2,4,1,10,1,6,1,
+ 12,1,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,2,0,
+ 0,0,4,0,0,0,67,0,0,0,115,36,0,0,0,116,
+ 0,106,1,116,2,106,3,124,1,131,2,1,0,116,0,106,
+ 4,100,1,124,0,106,5,124,0,106,6,131,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,117,0,0,0,114,184,0,0,0,114,142,0,0,
+ 0,90,12,101,120,101,99,95,100,121,110,97,109,105,99,114,
+ 132,0,0,0,114,101,0,0,0,114,37,0,0,0,41,2,
+ 114,103,0,0,0,114,186,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,6,0,0,0,114,187,0,0,0,148,3,
+ 0,0,115,6,0,0,0,0,2,14,1,6,1,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,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,4,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,31,0,0,0,99,1,0,0,0,0,0,0,0,2,
+ 0,0,0,4,0,0,0,51,0,0,0,115,26,0,0,0,
+ 124,0,93,18,125,1,136,0,100,0,124,1,23,0,107,2,
+ 86,0,1,0,113,2,100,1,83,0,41,2,114,181,0,0,
+ 0,78,114,4,0,0,0,41,2,114,24,0,0,0,218,6,
+ 115,117,102,102,105,120,41,1,218,9,102,105,108,101,95,110,
+ 97,109,101,114,4,0,0,0,114,6,0,0,0,250,9,60,
+ 103,101,110,101,120,112,114,62,157,3,0,0,115,2,0,0,
+ 0,4,1,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,41,4,114,40,0,0,0,114,37,0,
+ 0,0,218,3,97,110,121,218,18,69,88,84,69,78,83,73,
+ 79,78,95,83,85,70,70,73,88,69,83,41,2,114,103,0,
+ 0,0,114,122,0,0,0,114,4,0,0,0,41,1,114,222,
+ 0,0,0,114,6,0,0,0,114,156,0,0,0,154,3,0,
+ 0,115,6,0,0,0,0,2,14,1,12,1,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,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,4,
+ 0,0,0,41,2,114,103,0,0,0,114,122,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,183,
+ 0,0,0,160,3,0,0,115,2,0,0,0,0,2,122,28,
+ 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,
+ 100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,
+ 0,0,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,4,0,0,0,41,2,114,103,0,0,0,
+ 114,122,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,114,198,0,0,0,164,3,0,0,115,2,0,
+ 0,0,0,2,122,30,69,120,116,101,110,115,105,111,110,70,
+ 105,108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,
+ 117,114,99,101,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,1,0,0,0,67,0,0,0,115,6,0,0,0,124,0,
+ 106,0,83,0,41,1,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,41,1,114,37,0,0,0,41,2,114,103,0,0,0,
+ 114,122,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,114,154,0,0,0,168,3,0,0,115,2,0,
+ 0,0,0,3,122,32,69,120,116,101,110,115,105,111,110,70,
+ 105,108,101,76,111,97,100,101,114,46,103,101,116,95,102,105,
+ 108,101,110,97,109,101,78,41,14,114,108,0,0,0,114,107,
+ 0,0,0,114,109,0,0,0,114,110,0,0,0,114,181,0,
+ 0,0,114,209,0,0,0,114,211,0,0,0,114,182,0,0,
+ 0,114,187,0,0,0,114,156,0,0,0,114,183,0,0,0,
+ 114,198,0,0,0,114,119,0,0,0,114,154,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,114,220,0,0,0,121,3,0,0,115,20,0,0,
+ 0,8,6,4,2,8,4,8,4,8,3,8,8,8,6,8,
+ 6,8,4,8,4,114,220,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,
+ 96,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 100,2,100,3,132,0,90,4,100,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,83,0,41,23,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,4,0,0,0,2,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,106,3,131,0,131,
+ 1,124,0,95,4,124,3,124,0,95,5,100,0,83,0,41,
+ 1,78,41,6,218,5,95,110,97,109,101,218,5,95,112,97,
+ 116,104,114,96,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,41,4,114,103,0,0,
+ 0,114,101,0,0,0,114,37,0,0,0,218,11,112,97,116,
+ 104,95,102,105,110,100,101,114,114,4,0,0,0,114,4,0,
+ 0,0,114,6,0,0,0,114,181,0,0,0,181,3,0,0,
+ 115,8,0,0,0,0,1,6,1,6,1,14,1,122,23,95,
+ 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,
+ 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,
+ 124,0,106,0,106,1,100,1,131,1,92,3,125,1,125,2,
+ 125,3,124,2,100,2,107,2,114,30,100,6,83,0,124,1,
+ 100,5,102,2,83,0,41,7,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,61,0,0,0,114,32,0,
+ 0,0,114,8,0,0,0,114,37,0,0,0,90,8,95,95,
+ 112,97,116,104,95,95,41,2,122,3,115,121,115,122,4,112,
+ 97,116,104,41,2,114,227,0,0,0,114,34,0,0,0,41,
+ 4,114,103,0,0,0,114,218,0,0,0,218,3,100,111,116,
+ 90,2,109,101,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,218,23,95,102,105,110,100,95,112,97,114,101,110,
+ 116,95,112,97,116,104,95,110,97,109,101,115,187,3,0,0,
+ 115,8,0,0,0,0,2,18,1,8,2,4,3,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,3,0,
+ 0,0,3,0,0,0,67,0,0,0,115,28,0,0,0,124,
+ 0,106,0,131,0,92,2,125,1,125,2,116,1,116,2,106,
+ 3,124,1,25,0,124,2,131,2,83,0,41,1,78,41,4,
+ 114,234,0,0,0,114,113,0,0,0,114,8,0,0,0,218,
+ 7,109,111,100,117,108,101,115,41,3,114,103,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,4,0,0,0,114,4,0,0,0,114,6,0,
+ 0,0,114,229,0,0,0,197,3,0,0,115,4,0,0,0,
+ 0,1,12,1,122,31,95,78,97,109,101,115,112,97,99,101,
+ 80,97,116,104,46,95,103,101,116,95,112,97,114,101,110,116,
+ 95,112,97,116,104,99,1,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,67,0,0,0,115,80,0,0,0,116,
+ 0,124,0,106,1,131,0,131,1,125,1,124,1,124,0,106,
+ 2,107,3,114,74,124,0,106,3,124,0,106,4,124,1,131,
+ 2,125,2,124,2,100,0,107,9,114,68,124,2,106,5,100,
+ 0,107,8,114,68,124,2,106,6,114,68,124,2,106,6,124,
+ 0,95,7,124,1,124,0,95,2,124,0,106,7,83,0,41,
+ 1,78,41,8,114,96,0,0,0,114,229,0,0,0,114,230,
+ 0,0,0,114,231,0,0,0,114,227,0,0,0,114,123,0,
+ 0,0,114,153,0,0,0,114,228,0,0,0,41,3,114,103,
+ 0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,104,
+ 114,161,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,218,12,95,114,101,99,97,108,99,117,108,97,
+ 116,101,201,3,0,0,115,16,0,0,0,0,2,12,1,10,
+ 1,14,3,18,1,6,1,8,1,6,1,122,27,95,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,1,0,0,0,2,0,0,0,67,0,0,0,115,12,0,
+ 0,0,116,0,124,0,106,1,131,0,131,1,83,0,41,1,
+ 78,41,2,218,4,105,116,101,114,114,236,0,0,0,41,1,
+ 114,103,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,218,8,95,95,105,116,101,114,95,95,214,3,
+ 0,0,115,2,0,0,0,0,1,122,23,95,78,97,109,101,
+ 115,112,97,99,101,80,97,116,104,46,95,95,105,116,101,114,
+ 95,95,99,3,0,0,0,0,0,0,0,3,0,0,0,3,
+ 0,0,0,67,0,0,0,115,14,0,0,0,124,2,124,0,
+ 106,0,124,1,60,0,100,0,83,0,41,1,78,41,1,114,
+ 228,0,0,0,41,3,114,103,0,0,0,218,5,105,110,100,
+ 101,120,114,37,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,218,11,95,95,115,101,116,105,116,101,
+ 109,95,95,217,3,0,0,115,2,0,0,0,0,1,122,26,
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,1,
- 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,
- 100,1,0,106,0,0,124,0,0,106,1,0,131,1,0,83,
- 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,49,0,0,0,
- 114,233,0,0,0,41,1,114,110,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,218,8,95,95,114,
- 101,112,114,95,95,223,3,0,0,115,2,0,0,0,0,1,
- 122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
- 46,95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,
- 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,
- 0,0,0,124,1,0,124,0,0,106,0,0,131,0,0,107,
- 6,0,83,41,1,78,41,1,114,241,0,0,0,41,2,114,
- 110,0,0,0,218,4,105,116,101,109,114,4,0,0,0,114,
- 4,0,0,0,114,6,0,0,0,218,12,95,95,99,111,110,
- 116,97,105,110,115,95,95,226,3,0,0,115,2,0,0,0,
- 0,1,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,2,0,0,0,2,0,0,0,
- 67,0,0,0,115,20,0,0,0,124,0,0,106,0,0,106,
- 1,0,124,1,0,131,1,0,1,100,0,0,83,41,1,78,
- 41,2,114,233,0,0,0,114,165,0,0,0,41,2,114,110,
- 0,0,0,114,246,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,6,0,0,0,114,165,0,0,0,229,3,0,0,
- 115,2,0,0,0,0,1,122,21,95,78,97,109,101,115,112,
- 97,99,101,80,97,116,104,46,97,112,112,101,110,100,78,41,
- 13,114,114,0,0,0,114,113,0,0,0,114,115,0,0,0,
- 114,116,0,0,0,114,186,0,0,0,114,239,0,0,0,114,
- 234,0,0,0,114,241,0,0,0,114,243,0,0,0,114,244,
- 0,0,0,114,245,0,0,0,114,247,0,0,0,114,165,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,6,0,0,0,114,231,0,0,0,177,3,0,0,115,
- 20,0,0,0,12,5,6,2,12,6,12,10,12,4,12,13,
- 12,3,12,3,12,3,12,3,114,231,0,0,0,99,0,0,
- 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,
- 0,0,115,118,0,0,0,101,0,0,90,1,0,100,0,0,
- 90,2,0,100,1,0,100,2,0,132,0,0,90,3,0,101,
- 4,0,100,3,0,100,4,0,132,0,0,131,1,0,90,5,
- 0,100,5,0,100,6,0,132,0,0,90,6,0,100,7,0,
- 100,8,0,132,0,0,90,7,0,100,9,0,100,10,0,132,
- 0,0,90,8,0,100,11,0,100,12,0,132,0,0,90,9,
- 0,100,13,0,100,14,0,132,0,0,90,10,0,100,15,0,
- 100,16,0,132,0,0,90,11,0,100,17,0,83,41,18,218,
+ 95,115,101,116,105,116,101,109,95,95,99,1,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,124,0,106,1,131,0,131,1,83,0,
+ 41,1,78,41,2,114,33,0,0,0,114,236,0,0,0,41,
+ 1,114,103,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,218,7,95,95,108,101,110,95,95,220,3,
+ 0,0,115,2,0,0,0,0,1,122,22,95,78,97,109,101,
+ 115,112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,
+ 95,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,
+ 0,0,67,0,0,0,115,12,0,0,0,100,1,106,0,124,
+ 0,106,1,131,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,50,0,0,0,114,228,0,0,0,41,1,114,103,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
+ 0,0,218,8,95,95,114,101,112,114,95,95,223,3,0,0,
+ 115,2,0,0,0,0,1,122,23,95,78,97,109,101,115,112,
+ 97,99,101,80,97,116,104,46,95,95,114,101,112,114,95,95,
+ 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,
+ 0,67,0,0,0,115,12,0,0,0,124,1,124,0,106,0,
+ 131,0,107,6,83,0,41,1,78,41,1,114,236,0,0,0,
+ 41,2,114,103,0,0,0,218,4,105,116,101,109,114,4,0,
+ 0,0,114,4,0,0,0,114,6,0,0,0,218,12,95,95,
+ 99,111,110,116,97,105,110,115,95,95,226,3,0,0,115,2,
+ 0,0,0,0,1,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,2,0,0,0,2,
+ 0,0,0,67,0,0,0,115,16,0,0,0,124,0,106,0,
+ 106,1,124,1,131,1,1,0,100,0,83,0,41,1,78,41,
+ 2,114,228,0,0,0,114,160,0,0,0,41,2,114,103,0,
+ 0,0,114,243,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,160,0,0,0,229,3,0,0,115,
+ 2,0,0,0,0,1,122,21,95,78,97,109,101,115,112,97,
+ 99,101,80,97,116,104,46,97,112,112,101,110,100,78,41,14,
+ 114,108,0,0,0,114,107,0,0,0,114,109,0,0,0,114,
+ 110,0,0,0,114,181,0,0,0,114,234,0,0,0,114,229,
+ 0,0,0,114,236,0,0,0,114,238,0,0,0,114,240,0,
+ 0,0,114,241,0,0,0,114,242,0,0,0,114,244,0,0,
+ 0,114,160,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,226,0,0,0,174,
+ 3,0,0,115,22,0,0,0,8,5,4,2,8,6,8,10,
+ 8,4,8,13,8,3,8,3,8,3,8,3,8,3,114,226,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,64,0,0,0,115,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,4,0,0,0,4,0,
- 0,0,67,0,0,0,115,25,0,0,0,116,0,0,124,1,
- 0,124,2,0,124,3,0,131,3,0,124,0,0,95,1,0,
- 100,0,0,83,41,1,78,41,2,114,231,0,0,0,114,233,
- 0,0,0,41,4,114,110,0,0,0,114,108,0,0,0,114,
- 37,0,0,0,114,237,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,6,0,0,0,114,186,0,0,0,235,3,0,
- 0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,115,
- 112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,
- 116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,
- 2,0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,
- 106,0,0,124,1,0,106,1,0,131,1,0,83,41,2,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,41,
- 2,114,49,0,0,0,114,114,0,0,0,41,2,114,172,0,
- 0,0,114,191,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,6,0,0,0,218,11,109,111,100,117,108,101,95,114,
- 101,112,114,238,3,0,0,115,2,0,0,0,0,7,122,28,
- 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
- 46,109,111,100,117,108,101,95,114,101,112,114,99,2,0,0,
- 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
- 0,115,4,0,0,0,100,1,0,83,41,2,78,84,114,4,
- 0,0,0,41,2,114,110,0,0,0,114,128,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,161,
- 0,0,0,247,3,0,0,115,2,0,0,0,0,1,122,27,
- 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
- 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,
- 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
- 115,4,0,0,0,100,1,0,83,41,2,78,114,32,0,0,
- 0,114,4,0,0,0,41,2,114,110,0,0,0,114,128,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,41,1,78,
+ 41,2,114,226,0,0,0,114,228,0,0,0,41,4,114,103,
+ 0,0,0,114,101,0,0,0,114,37,0,0,0,114,232,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
- 0,114,203,0,0,0,250,3,0,0,115,2,0,0,0,0,
- 1,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97,
- 100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,
- 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,67,
- 0,0,0,115,22,0,0,0,116,0,0,100,1,0,100,2,
- 0,100,3,0,100,4,0,100,5,0,131,3,1,83,41,6,
- 78,114,32,0,0,0,122,8,60,115,116,114,105,110,103,62,
- 114,190,0,0,0,114,205,0,0,0,84,41,1,114,206,0,
- 0,0,41,2,114,110,0,0,0,114,128,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,6,0,0,0,114,188,0,
- 0,0,253,3,0,0,115,2,0,0,0,0,1,122,25,95,
- 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
- 103,101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,
- 0,0,100,1,0,83,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,4,0,0,0,41,2,114,110,0,0,
- 0,114,166,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,114,187,0,0,0,0,4,0,0,115,0,
- 0,0,0,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,
+ 0,114,181,0,0,0,235,3,0,0,115,2,0,0,0,0,
+ 1,122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,
+ 100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,
+ 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,
+ 0,115,12,0,0,0,100,1,106,0,124,1,106,1,131,1,
+ 83,0,41,2,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,41,2,114,50,0,0,0,114,108,0,0,0,
+ 41,2,114,167,0,0,0,114,186,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,11,109,111,100,
+ 117,108,101,95,114,101,112,114,238,3,0,0,115,2,0,0,
+ 0,0,7,122,28,95,78,97,109,101,115,112,97,99,101,76,
+ 111,97,100,101,114,46,109,111,100,117,108,101,95,114,101,112,
+ 114,99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,
+ 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,
+ 2,78,84,114,4,0,0,0,41,2,114,103,0,0,0,114,
+ 122,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,114,156,0,0,0,247,3,0,0,115,2,0,0,
+ 0,0,1,122,27,95,78,97,109,101,115,112,97,99,101,76,
+ 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,
+ 99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,
+ 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,
+ 78,114,32,0,0,0,114,4,0,0,0,41,2,114,103,0,
+ 0,0,114,122,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,198,0,0,0,250,3,0,0,115,
+ 2,0,0,0,0,1,122,27,95,78,97,109,101,115,112,97,
+ 99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
+ 114,99,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
+ 6,0,0,0,67,0,0,0,115,18,0,0,0,116,0,100,
+ 1,100,2,100,3,100,4,100,5,144,1,131,3,83,0,41,
+ 6,78,114,32,0,0,0,122,8,60,115,116,114,105,110,103,
+ 62,114,185,0,0,0,114,200,0,0,0,84,41,1,114,201,
+ 0,0,0,41,2,114,103,0,0,0,114,122,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,183,
+ 0,0,0,253,3,0,0,115,2,0,0,0,0,1,122,25,
+ 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
+ 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0,
+ 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,
+ 0,0,0,100,1,83,0,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,4,0,0,0,41,2,114,103,0,
+ 0,0,114,161,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,182,0,0,0,0,4,0,0,115,
+ 0,0,0,0,122,30,95,78,97,109,101,115,112,97,99,101,
+ 76,111,97,100,101,114,46,99,114,101,97,116,101,95,109,111,
+ 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,0,
+ 83,0,41,1,78,114,4,0,0,0,41,2,114,103,0,0,
+ 0,114,186,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,114,187,0,0,0,3,4,0,0,115,2,
+ 0,0,0,0,1,122,28,95,78,97,109,101,115,112,97,99,
+ 101,76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,
117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
- 1,0,0,0,67,0,0,0,115,4,0,0,0,100,0,0,
- 83,41,1,78,114,4,0,0,0,41,2,114,110,0,0,0,
- 114,191,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 6,0,0,0,114,192,0,0,0,3,4,0,0,115,2,0,
- 0,0,0,1,122,28,95,78,97,109,101,115,112,97,99,101,
- 76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,
- 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,3,
- 0,0,0,67,0,0,0,115,32,0,0,0,116,0,0,100,
- 1,0,124,0,0,106,1,0,131,2,0,1,116,2,0,106,
- 3,0,124,0,0,124,1,0,131,2,0,83,41,2,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,41,4,114,107,0,0,
- 0,114,233,0,0,0,114,123,0,0,0,114,193,0,0,0,
- 41,2,114,110,0,0,0,114,128,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,114,194,0,0,0,
- 6,4,0,0,115,4,0,0,0,0,7,16,1,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,114,
- 0,0,0,114,113,0,0,0,114,115,0,0,0,114,186,0,
- 0,0,114,184,0,0,0,114,249,0,0,0,114,161,0,0,
- 0,114,203,0,0,0,114,188,0,0,0,114,187,0,0,0,
- 114,192,0,0,0,114,194,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,248,
- 0,0,0,234,3,0,0,115,16,0,0,0,12,1,12,3,
- 18,9,12,3,12,3,12,3,12,3,12,3,114,248,0,0,
- 0,99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,
- 0,0,64,0,0,0,115,160,0,0,0,101,0,0,90,1,
- 0,100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,
- 100,2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,
- 4,0,100,4,0,100,5,0,132,0,0,131,1,0,90,6,
- 0,101,4,0,100,6,0,100,7,0,132,0,0,131,1,0,
- 90,7,0,101,4,0,100,8,0,100,9,0,132,0,0,131,
- 1,0,90,8,0,101,4,0,100,10,0,100,11,0,100,12,
- 0,132,1,0,131,1,0,90,9,0,101,4,0,100,10,0,
- 100,10,0,100,13,0,100,14,0,132,2,0,131,1,0,90,
- 10,0,101,4,0,100,10,0,100,15,0,100,16,0,132,1,
- 0,131,1,0,90,11,0,100,10,0,83,41,17,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,1,0,0,0,0,0,
- 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,55,
- 0,0,0,120,48,0,116,0,0,106,1,0,106,2,0,131,
- 0,0,68,93,31,0,125,1,0,116,3,0,124,1,0,100,
- 1,0,131,2,0,114,16,0,124,1,0,106,4,0,131,0,
- 0,1,113,16,0,87,100,2,0,83,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,218,17,105,110,118,
- 97,108,105,100,97,116,101,95,99,97,99,104,101,115,78,41,
- 5,114,8,0,0,0,218,19,112,97,116,104,95,105,109,112,
- 111,114,116,101,114,95,99,97,99,104,101,218,6,118,97,108,
- 117,101,115,114,117,0,0,0,114,251,0,0,0,41,2,114,
- 172,0,0,0,218,6,102,105,110,100,101,114,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,114,251,0,0,0,
- 23,4,0,0,115,6,0,0,0,0,4,22,1,15,1,122,
- 28,80,97,116,104,70,105,110,100,101,114,46,105,110,118,97,
- 108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,
- 0,0,0,0,0,0,3,0,0,0,12,0,0,0,67,0,
- 0,0,115,107,0,0,0,116,0,0,106,1,0,100,1,0,
- 107,9,0,114,41,0,116,0,0,106,1,0,12,114,41,0,
- 116,2,0,106,3,0,100,2,0,116,4,0,131,2,0,1,
- 120,59,0,116,0,0,106,1,0,68,93,44,0,125,2,0,
- 121,14,0,124,2,0,124,1,0,131,1,0,83,87,113,51,
- 0,4,116,5,0,107,10,0,114,94,0,1,1,1,119,51,
- 0,89,113,51,0,88,113,51,0,87,100,1,0,83,100,1,
- 0,83,41,3,122,113,83,101,97,114,99,104,32,115,101,113,
- 117,101,110,99,101,32,111,102,32,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,10,10,32,32,32,32,32,32,32,
- 32,73,102,32,39,104,111,111,107,115,39,32,105,115,32,102,
- 97,108,115,101,32,116,104,101,110,32,117,115,101,32,115,121,
- 115,46,112,97,116,104,95,104,111,111,107,115,46,10,10,32,
- 32,32,32,32,32,32,32,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,8,0,0,0,218,10,112,97,116,104,95,104,
- 111,111,107,115,114,62,0,0,0,114,63,0,0,0,114,127,
- 0,0,0,114,109,0,0,0,41,3,114,172,0,0,0,114,
- 37,0,0,0,90,4,104,111,111,107,114,4,0,0,0,114,
- 4,0,0,0,114,6,0,0,0,218,11,95,112,97,116,104,
- 95,104,111,111,107,115,31,4,0,0,115,16,0,0,0,0,
- 7,25,1,16,1,16,1,3,1,14,1,13,1,12,2,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,
- 3,0,0,0,19,0,0,0,67,0,0,0,115,123,0,0,
- 0,124,1,0,100,1,0,107,2,0,114,53,0,121,16,0,
- 116,0,0,106,1,0,131,0,0,125,1,0,87,110,22,0,
- 4,116,2,0,107,10,0,114,52,0,1,1,1,100,2,0,
- 83,89,110,1,0,88,121,17,0,116,3,0,106,4,0,124,
- 1,0,25,125,2,0,87,110,46,0,4,116,5,0,107,10,
- 0,114,118,0,1,1,1,124,0,0,106,6,0,124,1,0,
- 131,1,0,125,2,0,124,2,0,116,3,0,106,4,0,124,
- 1,0,60,89,110,1,0,88,124,2,0,83,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,32,0,0,0,78,41,7,114,3,0,0,0,114,
- 47,0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,
- 110,100,69,114,114,111,114,114,8,0,0,0,114,252,0,0,
- 0,114,139,0,0,0,114,0,1,0,0,41,3,114,172,0,
- 0,0,114,37,0,0,0,114,254,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,6,0,0,0,218,20,95,112,97,
- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
- 101,48,4,0,0,115,22,0,0,0,0,8,12,1,3,1,
- 16,1,13,3,9,1,3,1,17,1,13,1,15,1,18,1,
- 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,6,0,0,0,3,0,
- 0,0,67,0,0,0,115,119,0,0,0,116,0,0,124,2,
- 0,100,1,0,131,2,0,114,39,0,124,2,0,106,1,0,
- 124,1,0,131,1,0,92,2,0,125,3,0,125,4,0,110,
- 21,0,124,2,0,106,2,0,124,1,0,131,1,0,125,3,
- 0,103,0,0,125,4,0,124,3,0,100,0,0,107,9,0,
- 114,88,0,116,3,0,106,4,0,124,1,0,124,3,0,131,
- 2,0,83,116,3,0,106,5,0,124,1,0,100,0,0,131,
- 2,0,125,5,0,124,4,0,124,5,0,95,6,0,124,5,
- 0,83,41,2,78,114,126,0,0,0,41,7,114,117,0,0,
- 0,114,126,0,0,0,114,183,0,0,0,114,123,0,0,0,
- 114,180,0,0,0,114,162,0,0,0,114,158,0,0,0,41,
- 6,114,172,0,0,0,114,128,0,0,0,114,254,0,0,0,
- 114,129,0,0,0,114,130,0,0,0,114,166,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,16,
+ 3,0,0,0,67,0,0,0,115,26,0,0,0,116,0,106,
+ 1,100,1,124,0,106,2,131,2,1,0,116,0,106,3,124,
+ 0,124,1,131,2,83,0,41,2,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,41,4,114,117,0,0,0,114,132,0,0,
+ 0,114,228,0,0,0,114,188,0,0,0,41,2,114,103,0,
+ 0,0,114,122,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,189,0,0,0,6,4,0,0,115,
+ 6,0,0,0,0,7,6,1,8,1,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,108,0,0,0,
+ 114,107,0,0,0,114,109,0,0,0,114,181,0,0,0,114,
+ 179,0,0,0,114,246,0,0,0,114,156,0,0,0,114,198,
+ 0,0,0,114,183,0,0,0,114,182,0,0,0,114,187,0,
+ 0,0,114,189,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,114,245,0,0,0,
+ 234,3,0,0,115,16,0,0,0,8,1,8,3,12,9,8,
+ 3,8,3,8,3,8,3,8,3,114,245,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,
+ 0,0,0,115,106,0,0,0,101,0,90,1,100,0,90,2,
+ 100,1,90,3,101,4,100,2,100,3,132,0,131,1,90,5,
+ 101,4,100,4,100,5,132,0,131,1,90,6,101,4,100,6,
+ 100,7,132,0,131,1,90,7,101,4,100,8,100,9,132,0,
+ 131,1,90,8,101,4,100,17,100,11,100,12,132,1,131,1,
+ 90,9,101,4,100,18,100,13,100,14,132,1,131,1,90,10,
+ 101,4,100,19,100,15,100,16,132,1,131,1,90,11,100,10,
+ 83,0,41,20,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,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
+ 0,67,0,0,0,115,42,0,0,0,120,36,116,0,106,1,
+ 106,2,131,0,68,0,93,22,125,1,116,3,124,1,100,1,
+ 131,2,114,12,124,1,106,4,131,0,1,0,113,12,87,0,
+ 100,2,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,218,17,105,110,118,97,108,105,100,97,116,
+ 101,95,99,97,99,104,101,115,78,41,5,114,8,0,0,0,
+ 218,19,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
+ 99,97,99,104,101,218,6,118,97,108,117,101,115,114,111,0,
+ 0,0,114,248,0,0,0,41,2,114,167,0,0,0,218,6,
+ 102,105,110,100,101,114,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,114,248,0,0,0,24,4,0,0,115,6,
+ 0,0,0,0,4,16,1,10,1,122,28,80,97,116,104,70,
+ 105,110,100,101,114,46,105,110,118,97,108,105,100,97,116,101,
+ 95,99,97,99,104,101,115,99,2,0,0,0,0,0,0,0,
+ 3,0,0,0,12,0,0,0,67,0,0,0,115,86,0,0,
+ 0,116,0,106,1,100,1,107,9,114,30,116,0,106,1,12,
+ 0,114,30,116,2,106,3,100,2,116,4,131,2,1,0,120,
+ 50,116,0,106,1,68,0,93,36,125,2,121,8,124,2,124,
+ 1,131,1,83,0,4,0,116,5,107,10,114,72,1,0,1,
+ 0,1,0,119,38,89,0,113,38,88,0,113,38,87,0,100,
+ 1,83,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,8,0,0,0,218,10,112,97,116,104,
+ 95,104,111,111,107,115,114,63,0,0,0,114,64,0,0,0,
+ 114,121,0,0,0,114,102,0,0,0,41,3,114,167,0,0,
+ 0,114,37,0,0,0,90,4,104,111,111,107,114,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,218,11,95,112,97,
+ 116,104,95,104,111,111,107,115,32,4,0,0,115,16,0,0,
+ 0,0,3,18,1,12,1,12,1,2,1,8,1,14,1,12,
+ 2,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,3,0,0,0,19,0,0,0,67,0,0,0,115,102,
+ 0,0,0,124,1,100,1,107,2,114,42,121,12,116,0,106,
+ 1,131,0,125,1,87,0,110,20,4,0,116,2,107,10,114,
+ 40,1,0,1,0,1,0,100,2,83,0,88,0,121,14,116,
+ 3,106,4,124,1,25,0,125,2,87,0,110,40,4,0,116,
+ 5,107,10,114,96,1,0,1,0,1,0,124,0,106,6,124,
+ 1,131,1,125,2,124,2,116,3,106,4,124,1,60,0,89,
+ 0,110,2,88,0,124,2,83,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,
+ 32,0,0,0,78,41,7,114,3,0,0,0,114,47,0,0,
+ 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,
+ 114,114,111,114,114,8,0,0,0,114,249,0,0,0,114,134,
+ 0,0,0,114,253,0,0,0,41,3,114,167,0,0,0,114,
+ 37,0,0,0,114,251,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,218,20,95,112,97,116,104,95,
+ 105,109,112,111,114,116,101,114,95,99,97,99,104,101,45,4,
+ 0,0,115,22,0,0,0,0,8,8,1,2,1,12,1,14,
+ 3,6,1,2,1,14,1,14,1,10,1,16,1,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,6,0,0,0,3,0,0,0,67,
+ 0,0,0,115,82,0,0,0,116,0,124,2,100,1,131,2,
+ 114,26,124,2,106,1,124,1,131,1,92,2,125,3,125,4,
+ 110,14,124,2,106,2,124,1,131,1,125,3,103,0,125,4,
+ 124,3,100,0,107,9,114,60,116,3,106,4,124,1,124,3,
+ 131,2,83,0,116,3,106,5,124,1,100,0,131,2,125,5,
+ 124,4,124,5,95,6,124,5,83,0,41,2,78,114,120,0,
+ 0,0,41,7,114,111,0,0,0,114,120,0,0,0,114,178,
+ 0,0,0,114,117,0,0,0,114,175,0,0,0,114,157,0,
+ 0,0,114,153,0,0,0,41,6,114,167,0,0,0,114,122,
+ 0,0,0,114,251,0,0,0,114,123,0,0,0,114,124,0,
+ 0,0,114,161,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,218,16,95,108,101,103,97,99,121,95,
+ 103,101,116,95,115,112,101,99,67,4,0,0,115,18,0,0,
+ 0,0,4,10,1,16,2,10,1,4,1,8,1,12,1,12,
+ 1,6,1,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,
- 70,4,0,0,115,18,0,0,0,0,4,15,1,24,2,15,
- 1,6,1,12,1,16,1,18,1,9,1,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,9,0,0,0,5,0,0,0,67,0,0,0,115,243,
- 0,0,0,103,0,0,125,4,0,120,230,0,124,2,0,68,
- 93,191,0,125,5,0,116,0,0,124,5,0,116,1,0,116,
- 2,0,102,2,0,131,2,0,115,43,0,113,13,0,124,0,
- 0,106,3,0,124,5,0,131,1,0,125,6,0,124,6,0,
- 100,1,0,107,9,0,114,13,0,116,4,0,124,6,0,100,
- 2,0,131,2,0,114,106,0,124,6,0,106,5,0,124,1,
- 0,124,3,0,131,2,0,125,7,0,110,18,0,124,0,0,
- 106,6,0,124,1,0,124,6,0,131,2,0,125,7,0,124,
- 7,0,100,1,0,107,8,0,114,139,0,113,13,0,124,7,
- 0,106,7,0,100,1,0,107,9,0,114,158,0,124,7,0,
- 83,124,7,0,106,8,0,125,8,0,124,8,0,100,1,0,
- 107,8,0,114,191,0,116,9,0,100,3,0,131,1,0,130,
- 1,0,124,4,0,106,10,0,124,8,0,131,1,0,1,113,
- 13,0,87,116,11,0,106,12,0,124,1,0,100,1,0,131,
- 2,0,125,7,0,124,4,0,124,7,0,95,8,0,124,7,
- 0,83,100,1,0,83,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,182,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,145,0,0,0,114,71,0,0,0,
- 218,5,98,121,116,101,115,114,2,1,0,0,114,117,0,0,
- 0,114,182,0,0,0,114,3,1,0,0,114,129,0,0,0,
- 114,158,0,0,0,114,109,0,0,0,114,151,0,0,0,114,
- 123,0,0,0,114,162,0,0,0,41,9,114,172,0,0,0,
- 114,128,0,0,0,114,37,0,0,0,114,181,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,254,0,0,0,114,166,0,0,0,
- 114,130,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 6,0,0,0,218,9,95,103,101,116,95,115,112,101,99,85,
- 4,0,0,115,40,0,0,0,0,5,6,1,13,1,21,1,
- 3,1,15,1,12,1,15,1,21,2,18,1,12,1,3,1,
- 15,1,4,1,9,1,12,1,12,5,17,2,18,1,9,1,
- 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,6,
- 0,0,0,4,0,0,0,67,0,0,0,115,140,0,0,0,
- 124,2,0,100,1,0,107,8,0,114,21,0,116,0,0,106,
- 1,0,125,2,0,124,0,0,106,2,0,124,1,0,124,2,
- 0,124,3,0,131,3,0,125,4,0,124,4,0,100,1,0,
- 107,8,0,114,58,0,100,1,0,83,124,4,0,106,3,0,
- 100,1,0,107,8,0,114,132,0,124,4,0,106,4,0,125,
- 5,0,124,5,0,114,125,0,100,2,0,124,4,0,95,5,
- 0,116,6,0,124,1,0,124,5,0,124,0,0,106,2,0,
- 131,3,0,124,4,0,95,4,0,124,4,0,83,100,1,0,
- 83,110,4,0,124,4,0,83,100,1,0,83,41,3,122,98,
- 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,78,90,9,110,97,109,101,115,112,97,99,101,41,7,
- 114,8,0,0,0,114,37,0,0,0,114,6,1,0,0,114,
- 129,0,0,0,114,158,0,0,0,114,160,0,0,0,114,231,
- 0,0,0,41,6,114,172,0,0,0,114,128,0,0,0,114,
- 37,0,0,0,114,181,0,0,0,114,166,0,0,0,114,5,
- 1,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,114,182,0,0,0,117,4,0,0,115,26,0,0,0,
- 0,4,12,1,9,1,21,1,12,1,4,1,15,1,9,1,
- 6,3,9,1,24,1,4,2,7,2,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,4,0,0,0,3,0,0,
- 0,67,0,0,0,115,41,0,0,0,124,0,0,106,0,0,
- 124,1,0,124,2,0,131,2,0,125,3,0,124,3,0,100,
- 1,0,107,8,0,114,34,0,100,1,0,83,124,3,0,106,
- 1,0,83,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,41,2,114,182,0,0,0,114,129,0,0,0,41,4,
- 114,172,0,0,0,114,128,0,0,0,114,37,0,0,0,114,
- 166,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,183,0,0,0,139,4,0,0,115,8,0,0,
- 0,0,8,18,1,12,1,4,1,122,22,80,97,116,104,70,
- 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,
- 101,41,12,114,114,0,0,0,114,113,0,0,0,114,115,0,
- 0,0,114,116,0,0,0,114,184,0,0,0,114,251,0,0,
- 0,114,0,1,0,0,114,2,1,0,0,114,3,1,0,0,
- 114,6,1,0,0,114,182,0,0,0,114,183,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,250,0,0,0,19,4,0,0,115,22,0,0,
- 0,12,2,6,2,18,8,18,17,18,22,18,15,3,1,18,
- 31,3,1,21,21,3,1,114,250,0,0,0,99,0,0,0,
- 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,
- 0,115,133,0,0,0,101,0,0,90,1,0,100,0,0,90,
- 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
- 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
- 101,6,0,90,7,0,100,6,0,100,7,0,132,0,0,90,
- 8,0,100,8,0,100,9,0,132,0,0,90,9,0,100,10,
- 0,100,11,0,100,12,0,132,1,0,90,10,0,100,13,0,
- 100,14,0,132,0,0,90,11,0,101,12,0,100,15,0,100,
- 16,0,132,0,0,131,1,0,90,13,0,100,17,0,100,18,
- 0,132,0,0,90,14,0,100,10,0,83,41,19,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,
- 5,0,0,0,5,0,0,0,7,0,0,0,115,122,0,0,
- 0,103,0,0,125,3,0,120,52,0,124,2,0,68,93,44,
- 0,92,2,0,137,0,0,125,4,0,124,3,0,106,0,0,
- 135,0,0,102,1,0,100,1,0,100,2,0,134,0,0,124,
- 4,0,68,131,1,0,131,1,0,1,113,13,0,87,124,3,
- 0,124,0,0,95,1,0,124,1,0,112,79,0,100,3,0,
- 124,0,0,95,2,0,100,6,0,124,0,0,95,3,0,116,
- 4,0,131,0,0,124,0,0,95,5,0,116,4,0,131,0,
- 0,124,0,0,95,6,0,100,5,0,83,41,7,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,2,0,0,0,3,0,0,0,51,0,0,0,115,27,
- 0,0,0,124,0,0,93,17,0,125,1,0,124,1,0,136,
- 0,0,102,2,0,86,1,113,3,0,100,0,0,83,41,1,
- 78,114,4,0,0,0,41,2,114,24,0,0,0,114,226,0,
- 0,0,41,1,114,129,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,228,0,0,0,168,4,0,0,115,2,0,0,
- 0,6,0,122,38,70,105,108,101,70,105,110,100,101,114,46,
- 95,95,105,110,105,116,95,95,46,60,108,111,99,97,108,115,
- 62,46,60,103,101,110,101,120,112,114,62,114,60,0,0,0,
- 114,31,0,0,0,78,114,89,0,0,0,41,7,114,151,0,
- 0,0,218,8,95,108,111,97,100,101,114,115,114,37,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,110,0,0,0,114,37,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,168,0,0,0,114,
- 4,0,0,0,41,1,114,129,0,0,0,114,6,0,0,0,
- 114,186,0,0,0,162,4,0,0,115,16,0,0,0,0,4,
- 6,1,19,1,36,1,9,2,15,1,9,1,12,1,122,19,
- 70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,
- 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 2,0,0,0,67,0,0,0,115,13,0,0,0,100,3,0,
- 124,0,0,95,0,0,100,2,0,83,41,4,122,31,73,110,
+ 78,99,4,0,0,0,0,0,0,0,9,0,0,0,5,0,
+ 0,0,67,0,0,0,115,170,0,0,0,103,0,125,4,120,
+ 160,124,2,68,0,93,130,125,5,116,0,124,5,116,1,116,
+ 2,102,2,131,2,115,30,113,10,124,0,106,3,124,5,131,
+ 1,125,6,124,6,100,1,107,9,114,10,116,4,124,6,100,
+ 2,131,2,114,72,124,6,106,5,124,1,124,3,131,2,125,
+ 7,110,12,124,0,106,6,124,1,124,6,131,2,125,7,124,
+ 7,100,1,107,8,114,94,113,10,124,7,106,7,100,1,107,
+ 9,114,108,124,7,83,0,124,7,106,8,125,8,124,8,100,
+ 1,107,8,114,130,116,9,100,3,131,1,130,1,124,4,106,
+ 10,124,8,131,1,1,0,113,10,87,0,116,11,106,12,124,
+ 1,100,1,131,2,125,7,124,4,124,7,95,8,124,7,83,
+ 0,100,1,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,177,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,140,0,0,0,114,72,0,0,0,218,
+ 5,98,121,116,101,115,114,255,0,0,0,114,111,0,0,0,
+ 114,177,0,0,0,114,0,1,0,0,114,123,0,0,0,114,
+ 153,0,0,0,114,102,0,0,0,114,146,0,0,0,114,117,
+ 0,0,0,114,157,0,0,0,41,9,114,167,0,0,0,114,
+ 122,0,0,0,114,37,0,0,0,114,176,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,251,0,0,0,114,161,0,0,0,114,
+ 124,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
+ 0,0,0,218,9,95,103,101,116,95,115,112,101,99,82,4,
+ 0,0,115,40,0,0,0,0,5,4,1,10,1,14,1,2,
+ 1,10,1,8,1,10,1,14,2,12,1,8,1,2,1,10,
+ 1,4,1,6,1,8,1,8,5,14,2,12,1,6,1,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,6,0,
+ 0,0,4,0,0,0,67,0,0,0,115,104,0,0,0,124,
+ 2,100,1,107,8,114,14,116,0,106,1,125,2,124,0,106,
+ 2,124,1,124,2,124,3,131,3,125,4,124,4,100,1,107,
+ 8,114,42,100,1,83,0,110,58,124,4,106,3,100,1,107,
+ 8,114,96,124,4,106,4,125,5,124,5,114,90,100,2,124,
+ 4,95,5,116,6,124,1,124,5,124,0,106,2,131,3,124,
+ 4,95,4,124,4,83,0,113,100,100,1,83,0,110,4,124,
+ 4,83,0,100,1,83,0,41,3,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,90,9,110,97,109,101,115,
+ 112,97,99,101,41,7,114,8,0,0,0,114,37,0,0,0,
+ 114,3,1,0,0,114,123,0,0,0,114,153,0,0,0,114,
+ 155,0,0,0,114,226,0,0,0,41,6,114,167,0,0,0,
+ 114,122,0,0,0,114,37,0,0,0,114,176,0,0,0,114,
+ 161,0,0,0,114,2,1,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,114,177,0,0,0,114,4,0,
+ 0,115,26,0,0,0,0,6,8,1,6,1,14,1,8,1,
+ 6,1,10,1,6,1,4,3,6,1,16,1,6,2,6,2,
+ 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,4,
+ 0,0,0,3,0,0,0,67,0,0,0,115,30,0,0,0,
+ 124,0,106,0,124,1,124,2,131,2,125,3,124,3,100,1,
+ 107,8,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,41,2,114,
+ 177,0,0,0,114,123,0,0,0,41,4,114,167,0,0,0,
+ 114,122,0,0,0,114,37,0,0,0,114,161,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,178,
+ 0,0,0,138,4,0,0,115,8,0,0,0,0,8,12,1,
+ 8,1,4,1,122,22,80,97,116,104,70,105,110,100,101,114,
+ 46,102,105,110,100,95,109,111,100,117,108,101,41,1,78,41,
+ 2,78,78,41,1,78,41,12,114,108,0,0,0,114,107,0,
+ 0,0,114,109,0,0,0,114,110,0,0,0,114,179,0,0,
+ 0,114,248,0,0,0,114,253,0,0,0,114,255,0,0,0,
+ 114,0,1,0,0,114,3,1,0,0,114,177,0,0,0,114,
+ 178,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,114,247,0,0,0,20,4,0,
+ 0,115,22,0,0,0,8,2,4,2,12,8,12,13,12,22,
+ 12,15,2,1,12,31,2,1,12,23,2,1,114,247,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,64,0,0,0,115,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,5,0,0,0,5,0,
+ 0,0,7,0,0,0,115,88,0,0,0,103,0,125,3,120,
+ 40,124,2,68,0,93,32,92,2,137,0,125,4,124,3,106,
+ 0,135,0,102,1,100,1,100,2,132,8,124,4,68,0,131,
+ 1,131,1,1,0,113,10,87,0,124,3,124,0,95,1,124,
+ 1,112,58,100,3,124,0,95,2,100,6,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,7,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,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,41,1,78,114,4,0,0,0,41,2,114,24,0,0,0,
+ 114,221,0,0,0,41,1,114,123,0,0,0,114,4,0,0,
+ 0,114,6,0,0,0,114,223,0,0,0,167,4,0,0,115,
+ 2,0,0,0,4,0,122,38,70,105,108,101,70,105,110,100,
+ 101,114,46,95,95,105,110,105,116,95,95,46,60,108,111,99,
+ 97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,61,
+ 0,0,0,114,31,0,0,0,78,114,90,0,0,0,41,7,
+ 114,146,0,0,0,218,8,95,108,111,97,100,101,114,115,114,
+ 37,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,103,0,0,0,114,
+ 37,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,163,0,
+ 0,0,114,4,0,0,0,41,1,114,123,0,0,0,114,6,
+ 0,0,0,114,181,0,0,0,161,4,0,0,115,16,0,0,
+ 0,0,4,4,1,14,1,28,1,6,2,10,1,6,1,8,
+ 1,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,
+ 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,1,
+ 0,0,0,2,0,0,0,67,0,0,0,115,10,0,0,0,
+ 100,3,124,0,95,0,100,2,83,0,41,4,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,31,0,
- 0,0,78,114,89,0,0,0,41,1,114,9,1,0,0,41,
- 1,114,110,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,6,0,0,0,114,251,0,0,0,176,4,0,0,115,2,
+ 0,0,78,114,90,0,0,0,41,1,114,6,1,0,0,41,
+ 1,114,103,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,114,248,0,0,0,175,4,0,0,115,2,
0,0,0,0,2,122,28,70,105,108,101,70,105,110,100,101,
114,46,105,110,118,97,108,105,100,97,116,101,95,99,97,99,
104,101,115,99,2,0,0,0,0,0,0,0,3,0,0,0,
- 2,0,0,0,67,0,0,0,115,59,0,0,0,124,0,0,
- 106,0,0,124,1,0,131,1,0,125,2,0,124,2,0,100,
- 1,0,107,8,0,114,37,0,100,1,0,103,0,0,102,2,
- 0,83,124,2,0,106,1,0,124,2,0,106,2,0,112,55,
- 0,103,0,0,102,2,0,83,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,182,0,0,0,114,129,0,0,0,114,158,
- 0,0,0,41,3,114,110,0,0,0,114,128,0,0,0,114,
- 166,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,114,126,0,0,0,182,4,0,0,115,8,0,0,
- 0,0,7,15,1,12,1,10,1,122,22,70,105,108,101,70,
- 105,110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,
- 114,99,6,0,0,0,0,0,0,0,7,0,0,0,7,0,
- 0,0,67,0,0,0,115,40,0,0,0,124,1,0,124,2,
- 0,124,3,0,131,2,0,125,6,0,116,0,0,124,2,0,
- 124,3,0,100,1,0,124,6,0,100,2,0,124,4,0,131,
- 2,2,83,41,3,78,114,129,0,0,0,114,158,0,0,0,
- 41,1,114,169,0,0,0,41,7,114,110,0,0,0,114,167,
- 0,0,0,114,128,0,0,0,114,37,0,0,0,90,4,115,
- 109,115,108,114,181,0,0,0,114,129,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,6,0,0,0,114,6,1,0,
- 0,194,4,0,0,115,6,0,0,0,0,1,15,1,18,1,
- 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,
- 14,0,0,0,15,0,0,0,67,0,0,0,115,234,1,0,
- 0,100,1,0,125,3,0,124,1,0,106,0,0,100,2,0,
- 131,1,0,100,3,0,25,125,4,0,121,34,0,116,1,0,
- 124,0,0,106,2,0,112,49,0,116,3,0,106,4,0,131,
- 0,0,131,1,0,106,5,0,125,5,0,87,110,24,0,4,
- 116,6,0,107,10,0,114,85,0,1,1,1,100,10,0,125,
- 5,0,89,110,1,0,88,124,5,0,124,0,0,106,7,0,
- 107,3,0,114,120,0,124,0,0,106,8,0,131,0,0,1,
- 124,5,0,124,0,0,95,7,0,116,9,0,131,0,0,114,
- 153,0,124,0,0,106,10,0,125,6,0,124,4,0,106,11,
- 0,131,0,0,125,7,0,110,15,0,124,0,0,106,12,0,
- 125,6,0,124,4,0,125,7,0,124,7,0,124,6,0,107,
- 6,0,114,45,1,116,13,0,124,0,0,106,2,0,124,4,
- 0,131,2,0,125,8,0,120,100,0,124,0,0,106,14,0,
- 68,93,77,0,92,2,0,125,9,0,125,10,0,100,5,0,
- 124,9,0,23,125,11,0,116,13,0,124,8,0,124,11,0,
- 131,2,0,125,12,0,116,15,0,124,12,0,131,1,0,114,
- 208,0,124,0,0,106,16,0,124,10,0,124,1,0,124,12,
- 0,124,8,0,103,1,0,124,2,0,131,5,0,83,113,208,
- 0,87,116,17,0,124,8,0,131,1,0,125,3,0,120,123,
- 0,124,0,0,106,14,0,68,93,112,0,92,2,0,125,9,
- 0,125,10,0,116,13,0,124,0,0,106,2,0,124,4,0,
- 124,9,0,23,131,2,0,125,12,0,116,18,0,100,6,0,
- 106,19,0,124,12,0,131,1,0,100,7,0,100,3,0,131,
- 1,1,1,124,7,0,124,9,0,23,124,6,0,107,6,0,
- 114,55,1,116,15,0,124,12,0,131,1,0,114,55,1,124,
- 0,0,106,16,0,124,10,0,124,1,0,124,12,0,100,8,
- 0,124,2,0,131,5,0,83,113,55,1,87,124,3,0,114,
- 230,1,116,18,0,100,9,0,106,19,0,124,8,0,131,1,
- 0,131,1,0,1,116,20,0,106,21,0,124,1,0,100,8,
- 0,131,2,0,125,13,0,124,8,0,103,1,0,124,13,0,
- 95,22,0,124,13,0,83,100,8,0,83,41,11,122,102,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,32,32,82,101,116,
- 117,114,110,115,32,116,104,101,10,32,32,32,32,32,32,32,
- 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,70,114,60,0,0,0,114,58,0,0,0,
- 114,31,0,0,0,114,186,0,0,0,122,9,116,114,121,105,
- 110,103,32,123,125,114,100,0,0,0,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,114,89,0,0,0,41,23,114,34,0,
- 0,0,114,41,0,0,0,114,37,0,0,0,114,3,0,0,
- 0,114,47,0,0,0,114,220,0,0,0,114,42,0,0,0,
- 114,9,1,0,0,218,11,95,102,105,108,108,95,99,97,99,
- 104,101,114,7,0,0,0,114,12,1,0,0,114,90,0,0,
- 0,114,11,1,0,0,114,30,0,0,0,114,8,1,0,0,
- 114,46,0,0,0,114,6,1,0,0,114,48,0,0,0,114,
- 107,0,0,0,114,49,0,0,0,114,123,0,0,0,114,162,
- 0,0,0,114,158,0,0,0,41,14,114,110,0,0,0,114,
- 128,0,0,0,114,181,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,135,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,226,0,0,0,114,167,
- 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,166,0,
+ 2,0,0,0,67,0,0,0,115,42,0,0,0,124,0,106,
+ 0,124,1,131,1,125,2,124,2,100,1,107,8,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,177,0,0,0,114,123,0,0,0,114,153,0,
+ 0,0,41,3,114,103,0,0,0,114,122,0,0,0,114,161,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
+ 0,0,114,120,0,0,0,181,4,0,0,115,8,0,0,0,
+ 0,7,10,1,8,1,8,1,122,22,70,105,108,101,70,105,
+ 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114,
+ 99,6,0,0,0,0,0,0,0,7,0,0,0,7,0,0,
+ 0,67,0,0,0,115,30,0,0,0,124,1,124,2,124,3,
+ 131,2,125,6,116,0,124,2,124,3,100,1,124,6,100,2,
+ 124,4,144,2,131,2,83,0,41,3,78,114,123,0,0,0,
+ 114,153,0,0,0,41,1,114,164,0,0,0,41,7,114,103,
+ 0,0,0,114,162,0,0,0,114,122,0,0,0,114,37,0,
+ 0,0,90,4,115,109,115,108,114,176,0,0,0,114,123,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
- 0,114,182,0,0,0,199,4,0,0,115,68,0,0,0,0,
- 3,6,1,19,1,3,1,34,1,13,1,11,1,15,1,10,
- 1,9,2,9,1,9,1,15,2,9,1,6,2,12,1,18,
- 1,22,1,10,1,15,1,12,1,32,4,12,2,22,1,22,
- 1,25,1,16,1,12,1,29,1,6,1,19,1,18,1,12,
- 1,4,1,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,9,0,0,0,13,0,0,0,67,0,0,0,115,11,
- 1,0,0,124,0,0,106,0,0,125,1,0,121,31,0,116,
- 1,0,106,2,0,124,1,0,112,33,0,116,1,0,106,3,
- 0,131,0,0,131,1,0,125,2,0,87,110,33,0,4,116,
- 4,0,116,5,0,116,6,0,102,3,0,107,10,0,114,75,
- 0,1,1,1,103,0,0,125,2,0,89,110,1,0,88,116,
- 7,0,106,8,0,106,9,0,100,1,0,131,1,0,115,112,
- 0,116,10,0,124,2,0,131,1,0,124,0,0,95,11,0,
- 110,111,0,116,10,0,131,0,0,125,3,0,120,90,0,124,
- 2,0,68,93,82,0,125,4,0,124,4,0,106,12,0,100,
- 2,0,131,1,0,92,3,0,125,5,0,125,6,0,125,7,
- 0,124,6,0,114,191,0,100,3,0,106,13,0,124,5,0,
- 124,7,0,106,14,0,131,0,0,131,2,0,125,8,0,110,
- 6,0,124,5,0,125,8,0,124,3,0,106,15,0,124,8,
- 0,131,1,0,1,113,128,0,87,124,3,0,124,0,0,95,
- 11,0,116,7,0,106,8,0,106,9,0,116,16,0,131,1,
- 0,114,7,1,100,4,0,100,5,0,132,0,0,124,2,0,
- 68,131,1,0,124,0,0,95,17,0,100,6,0,83,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,0,0,0,0,114,60,0,0,0,
- 122,5,123,125,46,123,125,99,1,0,0,0,0,0,0,0,
- 2,0,0,0,3,0,0,0,83,0,0,0,115,28,0,0,
- 0,104,0,0,124,0,0,93,18,0,125,1,0,124,1,0,
- 106,0,0,131,0,0,146,2,0,113,6,0,83,114,4,0,
- 0,0,41,1,114,90,0,0,0,41,2,114,24,0,0,0,
- 90,2,102,110,114,4,0,0,0,114,4,0,0,0,114,6,
- 0,0,0,250,9,60,115,101,116,99,111,109,112,62,17,5,
- 0,0,115,2,0,0,0,9,0,122,41,70,105,108,101,70,
- 105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104,
- 101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,99,
- 111,109,112,62,78,41,18,114,37,0,0,0,114,3,0,0,
- 0,90,7,108,105,115,116,100,105,114,114,47,0,0,0,114,
- 1,1,0,0,218,15,80,101,114,109,105,115,115,105,111,110,
- 69,114,114,111,114,218,18,78,111,116,65,68,105,114,101,99,
- 116,111,114,121,69,114,114,111,114,114,8,0,0,0,114,9,
- 0,0,0,114,10,0,0,0,114,10,1,0,0,114,11,1,
- 0,0,114,85,0,0,0,114,49,0,0,0,114,90,0,0,
- 0,218,3,97,100,100,114,11,0,0,0,114,12,1,0,0,
- 41,9,114,110,0,0,0,114,37,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,246,0,
- 0,0,114,108,0,0,0,114,238,0,0,0,114,226,0,0,
- 0,90,8,110,101,119,95,110,97,109,101,114,4,0,0,0,
- 114,4,0,0,0,114,6,0,0,0,114,14,1,0,0,244,
- 4,0,0,115,34,0,0,0,0,2,9,1,3,1,31,1,
- 22,3,11,3,18,1,18,7,9,1,13,1,24,1,6,1,
- 27,2,6,1,17,1,9,1,18,1,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,3,0,0,0,3,
- 0,0,0,7,0,0,0,115,25,0,0,0,135,0,0,135,
- 1,0,102,2,0,100,1,0,100,2,0,134,0,0,125,2,
- 0,124,2,0,83,41,3,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,1,0,0,0,4,0,0,
- 0,19,0,0,0,115,43,0,0,0,116,0,0,124,0,0,
- 131,1,0,115,30,0,116,1,0,100,1,0,100,2,0,124,
- 0,0,131,1,1,130,1,0,136,0,0,124,0,0,136,1,
- 0,140,1,0,83,41,3,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,37,0,0,0,41,2,114,48,0,
- 0,0,114,109,0,0,0,41,1,114,37,0,0,0,41,2,
- 114,172,0,0,0,114,13,1,0,0,114,4,0,0,0,114,
- 6,0,0,0,218,24,112,97,116,104,95,104,111,111,107,95,
- 102,111,114,95,70,105,108,101,70,105,110,100,101,114,29,5,
- 0,0,115,6,0,0,0,0,2,12,1,18,1,122,54,70,
- 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,
- 111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,116,
- 104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,70,
- 105,110,100,101,114,114,4,0,0,0,41,3,114,172,0,0,
- 0,114,13,1,0,0,114,19,1,0,0,114,4,0,0,0,
- 41,2,114,172,0,0,0,114,13,1,0,0,114,6,0,0,
- 0,218,9,112,97,116,104,95,104,111,111,107,19,5,0,0,
- 115,4,0,0,0,0,10,21,6,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,1,0,0,0,2,0,0,0,
- 67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,
- 0,0,106,1,0,131,1,0,83,41,2,78,122,16,70,105,
- 108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2,
- 114,49,0,0,0,114,37,0,0,0,41,1,114,110,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
- 114,245,0,0,0,37,5,0,0,115,2,0,0,0,0,1,
- 122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,
- 101,112,114,95,95,41,15,114,114,0,0,0,114,113,0,0,
- 0,114,115,0,0,0,114,116,0,0,0,114,186,0,0,0,
- 114,251,0,0,0,114,132,0,0,0,114,183,0,0,0,114,
- 126,0,0,0,114,6,1,0,0,114,182,0,0,0,114,14,
- 1,0,0,114,184,0,0,0,114,20,1,0,0,114,245,0,
+ 0,114,3,1,0,0,193,4,0,0,115,6,0,0,0,0,
+ 1,10,1,12,1,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,14,0,0,0,15,0,0,0,67,0,0,
+ 0,115,100,1,0,0,100,1,125,3,124,1,106,0,100,2,
+ 131,1,100,3,25,0,125,4,121,24,116,1,124,0,106,2,
+ 112,34,116,3,106,4,131,0,131,1,106,5,125,5,87,0,
+ 110,24,4,0,116,6,107,10,114,66,1,0,1,0,1,0,
+ 100,10,125,5,89,0,110,2,88,0,124,5,124,0,106,7,
+ 107,3,114,92,124,0,106,8,131,0,1,0,124,5,124,0,
+ 95,7,116,9,131,0,114,114,124,0,106,10,125,6,124,4,
+ 106,11,131,0,125,7,110,10,124,0,106,12,125,6,124,4,
+ 125,7,124,7,124,6,107,6,114,218,116,13,124,0,106,2,
+ 124,4,131,2,125,8,120,72,124,0,106,14,68,0,93,54,
+ 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,152,
+ 124,0,106,16,124,10,124,1,124,12,124,8,103,1,124,2,
+ 131,5,83,0,113,152,87,0,116,17,124,8,131,1,125,3,
+ 120,90,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,7,100,3,144,1,131,2,
+ 1,0,124,7,124,9,23,0,124,6,107,6,114,226,116,15,
+ 124,12,131,1,114,226,124,0,106,16,124,10,124,1,124,12,
+ 100,8,124,2,131,5,83,0,113,226,87,0,124,3,144,1,
+ 114,96,116,18,106,19,100,9,124,8,131,2,1,0,116,18,
+ 106,20,124,1,100,8,131,2,125,13,124,8,103,1,124,13,
+ 95,21,124,13,83,0,100,8,83,0,41,11,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,61,
+ 0,0,0,114,59,0,0,0,114,31,0,0,0,114,181,0,
+ 0,0,122,9,116,114,121,105,110,103,32,123,125,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,114,90,0,0,0,41,22,114,34,0,0,0,
+ 114,41,0,0,0,114,37,0,0,0,114,3,0,0,0,114,
+ 47,0,0,0,114,215,0,0,0,114,42,0,0,0,114,6,
+ 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,
+ 114,7,0,0,0,114,9,1,0,0,114,91,0,0,0,114,
+ 8,1,0,0,114,30,0,0,0,114,5,1,0,0,114,46,
+ 0,0,0,114,3,1,0,0,114,48,0,0,0,114,117,0,
+ 0,0,114,132,0,0,0,114,157,0,0,0,114,153,0,0,
+ 0,41,14,114,103,0,0,0,114,122,0,0,0,114,176,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,129,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,221,0,0,0,114,162,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,161,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,6,0,0,0,114,177,0,0,0,198,
+ 4,0,0,115,70,0,0,0,0,5,4,1,14,1,2,1,
+ 24,1,14,1,10,1,10,1,8,1,6,2,6,1,6,1,
+ 10,2,6,1,4,2,8,1,12,1,16,1,8,1,10,1,
+ 8,1,24,4,8,2,16,1,16,1,18,1,12,1,8,1,
+ 10,1,12,1,6,1,12,1,12,1,8,1,4,1,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,9,0,0,
+ 0,13,0,0,0,67,0,0,0,115,194,0,0,0,124,0,
+ 106,0,125,1,121,22,116,1,106,2,124,1,112,22,116,1,
+ 106,3,131,0,131,1,125,2,87,0,110,30,4,0,116,4,
+ 116,5,116,6,102,3,107,10,114,58,1,0,1,0,1,0,
+ 103,0,125,2,89,0,110,2,88,0,116,7,106,8,106,9,
+ 100,1,131,1,115,84,116,10,124,2,131,1,124,0,95,11,
+ 110,78,116,10,131,0,125,3,120,64,124,2,68,0,93,56,
+ 125,4,124,4,106,12,100,2,131,1,92,3,125,5,125,6,
+ 125,7,124,6,114,138,100,3,106,13,124,5,124,7,106,14,
+ 131,0,131,2,125,8,110,4,124,5,125,8,124,3,106,15,
+ 124,8,131,1,1,0,113,96,87,0,124,3,124,0,95,11,
+ 116,7,106,8,106,9,116,16,131,1,114,190,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,0,0,0,0,114,61,0,
+ 0,0,122,5,123,125,46,123,125,99,1,0,0,0,0,0,
+ 0,0,2,0,0,0,3,0,0,0,83,0,0,0,115,20,
+ 0,0,0,104,0,124,0,93,12,125,1,124,1,106,0,131,
+ 0,146,2,113,4,83,0,114,4,0,0,0,41,1,114,91,
+ 0,0,0,41,2,114,24,0,0,0,90,2,102,110,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,250,9,60,
+ 115,101,116,99,111,109,112,62,19,5,0,0,115,2,0,0,
+ 0,6,0,122,41,70,105,108,101,70,105,110,100,101,114,46,
+ 95,102,105,108,108,95,99,97,99,104,101,46,60,108,111,99,
+ 97,108,115,62,46,60,115,101,116,99,111,109,112,62,78,41,
+ 18,114,37,0,0,0,114,3,0,0,0,90,7,108,105,115,
+ 116,100,105,114,114,47,0,0,0,114,254,0,0,0,218,15,
+ 80,101,114,109,105,115,115,105,111,110,69,114,114,111,114,218,
+ 18,78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,
+ 114,111,114,114,8,0,0,0,114,9,0,0,0,114,10,0,
+ 0,0,114,7,1,0,0,114,8,1,0,0,114,86,0,0,
+ 0,114,50,0,0,0,114,91,0,0,0,218,3,97,100,100,
+ 114,11,0,0,0,114,9,1,0,0,41,9,114,103,0,0,
+ 0,114,37,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,243,0,0,0,114,101,0,0,
+ 0,114,233,0,0,0,114,221,0,0,0,90,8,110,101,119,
+ 95,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,114,11,1,0,0,246,4,0,0,115,34,0,
+ 0,0,0,2,6,1,2,1,22,1,20,3,10,3,12,1,
+ 12,7,6,1,10,1,16,1,4,1,18,2,4,1,14,1,
+ 6,1,12,1,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,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,3,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,1,0,0,0,
+ 4,0,0,0,19,0,0,0,115,32,0,0,0,116,0,124,
+ 0,131,1,115,22,116,1,100,1,100,2,124,0,144,1,131,
+ 1,130,1,136,0,124,0,136,1,140,1,83,0,41,3,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,37,
+ 0,0,0,41,2,114,48,0,0,0,114,102,0,0,0,41,
+ 1,114,37,0,0,0,41,2,114,167,0,0,0,114,10,1,
+ 0,0,114,4,0,0,0,114,6,0,0,0,218,24,112,97,
+ 116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,
+ 70,105,110,100,101,114,31,5,0,0,115,6,0,0,0,0,
+ 2,8,1,14,1,122,54,70,105,108,101,70,105,110,100,101,
+ 114,46,112,97,116,104,95,104,111,111,107,46,60,108,111,99,
+ 97,108,115,62,46,112,97,116,104,95,104,111,111,107,95,102,
+ 111,114,95,70,105,108,101,70,105,110,100,101,114,114,4,0,
+ 0,0,41,3,114,167,0,0,0,114,10,1,0,0,114,16,
+ 1,0,0,114,4,0,0,0,41,2,114,167,0,0,0,114,
+ 10,1,0,0,114,6,0,0,0,218,9,112,97,116,104,95,
+ 104,111,111,107,21,5,0,0,115,4,0,0,0,0,10,14,
+ 6,122,20,70,105,108,101,70,105,110,100,101,114,46,112,97,
+ 116,104,95,104,111,111,107,99,1,0,0,0,0,0,0,0,
+ 1,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0,
+ 0,100,1,106,0,124,0,106,1,131,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,50,0,0,0,114,37,0,0,0,41,1,
+ 114,103,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 6,0,0,0,114,242,0,0,0,39,5,0,0,115,2,0,
+ 0,0,0,1,122,19,70,105,108,101,70,105,110,100,101,114,
+ 46,95,95,114,101,112,114,95,95,41,1,78,41,15,114,108,
+ 0,0,0,114,107,0,0,0,114,109,0,0,0,114,110,0,
+ 0,0,114,181,0,0,0,114,248,0,0,0,114,126,0,0,
+ 0,114,178,0,0,0,114,120,0,0,0,114,3,1,0,0,
+ 114,177,0,0,0,114,11,1,0,0,114,179,0,0,0,114,
+ 17,1,0,0,114,242,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,6,0,0,0,114,4,1,
+ 0,0,152,4,0,0,115,20,0,0,0,8,7,4,2,8,
+ 14,8,4,4,2,8,12,8,5,10,48,8,31,12,18,114,
+ 4,1,0,0,99,4,0,0,0,0,0,0,0,6,0,0,
+ 0,11,0,0,0,67,0,0,0,115,148,0,0,0,124,0,
+ 106,0,100,1,131,1,125,4,124,0,106,0,100,2,131,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,86,116,4,124,1,124,2,100,3,124,4,144,1,
+ 131,2,125,5,121,36,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,110,20,4,0,116,5,107,10,
+ 114,142,1,0,1,0,1,0,89,0,110,2,88,0,100,0,
+ 83,0,41,6,78,218,10,95,95,108,111,97,100,101,114,95,
+ 95,218,8,95,95,115,112,101,99,95,95,114,123,0,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,123,0,
+ 0,0,114,219,0,0,0,114,214,0,0,0,114,164,0,0,
+ 0,218,9,69,120,99,101,112,116,105,111,110,41,6,90,2,
+ 110,115,114,101,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,123,0,0,
+ 0,114,161,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,218,14,95,102,105,120,95,117,112,95,109,
+ 111,100,117,108,101,45,5,0,0,115,34,0,0,0,0,2,
+ 10,1,10,1,4,1,4,1,8,1,8,1,12,2,10,1,
+ 4,1,16,1,2,1,8,1,8,1,8,1,12,1,14,2,
+ 114,22,1,0,0,99,0,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,116,
+ 0,116,1,106,2,131,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,1,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,41,7,114,220,0,0,0,114,
+ 142,0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,
+ 115,117,102,102,105,120,101,115,114,214,0,0,0,114,87,0,
+ 0,0,114,219,0,0,0,114,77,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,4,0,0,
+ 0,114,4,0,0,0,114,6,0,0,0,114,158,0,0,0,
+ 68,5,0,0,115,8,0,0,0,0,5,12,1,8,1,8,
+ 1,114,158,0,0,0,99,1,0,0,0,0,0,0,0,12,
+ 0,0,0,12,0,0,0,67,0,0,0,115,188,1,0,0,
+ 124,0,97,0,116,0,106,1,97,1,116,0,106,2,97,2,
+ 116,1,106,3,116,4,25,0,125,1,120,56,100,26,68,0,
+ 93,48,125,2,124,2,116,1,106,3,107,7,114,58,116,0,
+ 106,5,124,2,131,1,125,3,110,10,116,1,106,3,124,2,
+ 25,0,125,3,116,6,124,1,124,2,124,3,131,3,1,0,
+ 113,32,87,0,100,5,100,6,103,1,102,2,100,7,100,8,
+ 100,6,103,2,102,2,102,2,125,4,120,118,124,4,68,0,
+ 93,102,92,2,125,5,125,6,116,7,100,9,100,10,132,0,
+ 124,6,68,0,131,1,131,1,115,142,116,8,130,1,124,6,
+ 100,11,25,0,125,7,124,5,116,1,106,3,107,6,114,174,
+ 116,1,106,3,124,5,25,0,125,8,80,0,113,112,121,16,
+ 116,0,106,5,124,5,131,1,125,8,80,0,87,0,113,112,
+ 4,0,116,9,107,10,114,212,1,0,1,0,1,0,119,112,
+ 89,0,113,112,88,0,113,112,87,0,116,9,100,12,131,1,
+ 130,1,116,6,124,1,100,13,124,8,131,3,1,0,116,6,
+ 124,1,100,14,124,7,131,3,1,0,116,6,124,1,100,15,
+ 100,16,106,10,124,6,131,1,131,3,1,0,121,14,116,0,
+ 106,5,100,17,131,1,125,9,87,0,110,26,4,0,116,9,
+ 107,10,144,1,114,52,1,0,1,0,1,0,100,18,125,9,
+ 89,0,110,2,88,0,116,6,124,1,100,17,124,9,131,3,
+ 1,0,116,0,106,5,100,19,131,1,125,10,116,6,124,1,
+ 100,19,124,10,131,3,1,0,124,5,100,7,107,2,144,1,
+ 114,120,116,0,106,5,100,20,131,1,125,11,116,6,124,1,
+ 100,21,124,11,131,3,1,0,116,6,124,1,100,22,116,11,
+ 131,0,131,3,1,0,116,12,106,13,116,2,106,14,131,0,
+ 131,1,1,0,124,5,100,7,107,2,144,1,114,184,116,15,
+ 106,16,100,23,131,1,1,0,100,24,116,12,107,6,144,1,
+ 114,184,100,25,116,17,95,18,100,18,83,0,41,27,122,205,
+ 83,101,116,117,112,32,116,104,101,32,112,97,116,104,45,98,
+ 97,115,101,100,32,105,109,112,111,114,116,101,114,115,32,102,
+ 111,114,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,
+ 10,32,32,32,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,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,79,116,104,101,114,32,99,
+ 111,109,112,111,110,101,110,116,115,32,97,114,101,32,101,120,
+ 116,114,97,99,116,101,100,32,102,114,111,109,32,116,104,101,
+ 32,99,111,114,101,32,98,111,111,116,115,116,114,97,112,32,
+ 109,111,100,117,108,101,46,10,10,32,32,32,32,114,52,0,
+ 0,0,114,63,0,0,0,218,8,98,117,105,108,116,105,110,
+ 115,114,139,0,0,0,90,5,112,111,115,105,120,250,1,47,
+ 218,2,110,116,250,1,92,99,1,0,0,0,0,0,0,0,
+ 2,0,0,0,3,0,0,0,115,0,0,0,115,26,0,0,
+ 0,124,0,93,18,125,1,116,0,124,1,131,1,100,0,107,
+ 2,86,0,1,0,113,2,100,1,83,0,41,2,114,31,0,
+ 0,0,78,41,1,114,33,0,0,0,41,2,114,24,0,0,
+ 0,114,80,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,6,0,0,0,114,223,0,0,0,104,5,0,0,115,2,
+ 0,0,0,4,0,122,25,95,115,101,116,117,112,46,60,108,
+ 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,
+ 114,62,0,0,0,122,30,105,109,112,111,114,116,108,105,98,
+ 32,114,101,113,117,105,114,101,115,32,112,111,115,105,120,32,
+ 111,114,32,110,116,114,3,0,0,0,114,27,0,0,0,114,
+ 23,0,0,0,114,32,0,0,0,90,7,95,116,104,114,101,
+ 97,100,78,90,8,95,119,101,97,107,114,101,102,90,6,119,
+ 105,110,114,101,103,114,166,0,0,0,114,7,0,0,0,122,
+ 4,46,112,121,119,122,6,95,100,46,112,121,100,84,41,4,
+ 122,3,95,105,111,122,9,95,119,97,114,110,105,110,103,115,
+ 122,8,98,117,105,108,116,105,110,115,122,7,109,97,114,115,
+ 104,97,108,41,19,114,117,0,0,0,114,8,0,0,0,114,
+ 142,0,0,0,114,235,0,0,0,114,108,0,0,0,90,18,
+ 95,98,117,105,108,116,105,110,95,102,114,111,109,95,110,97,
+ 109,101,114,112,0,0,0,218,3,97,108,108,218,14,65,115,
+ 115,101,114,116,105,111,110,69,114,114,111,114,114,102,0,0,
+ 0,114,28,0,0,0,114,13,0,0,0,114,225,0,0,0,
+ 114,146,0,0,0,114,23,1,0,0,114,87,0,0,0,114,
+ 160,0,0,0,114,165,0,0,0,114,169,0,0,0,41,12,
+ 218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,
+ 117,108,101,90,11,115,101,108,102,95,109,111,100,117,108,101,
+ 90,12,98,117,105,108,116,105,110,95,110,97,109,101,90,14,
+ 98,117,105,108,116,105,110,95,109,111,100,117,108,101,90,10,
+ 111,115,95,100,101,116,97,105,108,115,90,10,98,117,105,108,
+ 116,105,110,95,111,115,114,23,0,0,0,114,27,0,0,0,
+ 90,9,111,115,95,109,111,100,117,108,101,90,13,116,104,114,
+ 101,97,100,95,109,111,100,117,108,101,90,14,119,101,97,107,
+ 114,101,102,95,109,111,100,117,108,101,90,13,119,105,110,114,
+ 101,103,95,109,111,100,117,108,101,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,218,6,95,115,101,116,117,112,
+ 79,5,0,0,115,82,0,0,0,0,8,4,1,6,1,6,
+ 3,10,1,10,1,10,1,12,2,10,1,16,3,22,1,14,
+ 2,22,1,8,1,10,1,10,1,4,2,2,1,10,1,6,
+ 1,14,1,12,2,8,1,12,1,12,1,18,3,2,1,14,
+ 1,16,2,10,1,12,3,10,1,12,3,10,1,10,1,12,
+ 3,14,1,14,1,10,1,10,1,10,1,114,31,1,0,0,
+ 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
+ 0,67,0,0,0,115,84,0,0,0,116,0,124,0,131,1,
+ 1,0,116,1,131,0,125,1,116,2,106,3,106,4,116,5,
+ 106,6,124,1,140,0,103,1,131,1,1,0,116,7,106,8,
+ 100,1,107,2,114,56,116,2,106,9,106,10,116,11,131,1,
+ 1,0,116,2,106,9,106,10,116,12,131,1,1,0,116,5,
+ 124,0,95,5,116,13,124,0,95,13,100,2,83,0,41,3,
+ 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,114,26,1,0,0,
+ 78,41,14,114,31,1,0,0,114,158,0,0,0,114,8,0,
+ 0,0,114,252,0,0,0,114,146,0,0,0,114,4,1,0,
+ 0,114,17,1,0,0,114,3,0,0,0,114,108,0,0,0,
+ 218,9,109,101,116,97,95,112,97,116,104,114,160,0,0,0,
+ 114,165,0,0,0,114,247,0,0,0,114,214,0,0,0,41,
+ 2,114,30,1,0,0,90,17,115,117,112,112,111,114,116,101,
+ 100,95,108,111,97,100,101,114,115,114,4,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,218,8,95,105,110,115,116,97,
+ 108,108,147,5,0,0,115,16,0,0,0,0,2,8,1,6,
+ 1,20,1,10,1,12,1,12,4,6,1,114,33,1,0,0,
+ 41,1,122,3,119,105,110,41,2,114,1,0,0,0,114,2,
+ 0,0,0,41,1,114,49,0,0,0,41,1,78,41,3,78,
+ 78,78,41,3,78,78,78,41,2,114,62,0,0,0,114,62,
+ 0,0,0,41,1,78,41,1,78,41,58,114,110,0,0,0,
+ 114,12,0,0,0,90,37,95,67,65,83,69,95,73,78,83,
+ 69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,82,
+ 77,83,95,66,89,84,69,83,95,75,69,89,114,11,0,0,
+ 0,114,13,0,0,0,114,19,0,0,0,114,21,0,0,0,
+ 114,30,0,0,0,114,40,0,0,0,114,41,0,0,0,114,
+ 45,0,0,0,114,46,0,0,0,114,48,0,0,0,114,58,
+ 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,
+ 101,95,95,114,141,0,0,0,114,17,0,0,0,114,131,0,
+ 0,0,114,16,0,0,0,114,20,0,0,0,90,17,95,82,
+ 65,87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,
+ 76,0,0,0,114,75,0,0,0,114,87,0,0,0,114,77,
+ 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,82,0,0,0,114,88,
+ 0,0,0,114,94,0,0,0,114,98,0,0,0,114,100,0,
+ 0,0,114,119,0,0,0,114,126,0,0,0,114,138,0,0,
+ 0,114,144,0,0,0,114,147,0,0,0,114,152,0,0,0,
+ 218,6,111,98,106,101,99,116,114,159,0,0,0,114,164,0,
+ 0,0,114,165,0,0,0,114,180,0,0,0,114,190,0,0,
+ 0,114,206,0,0,0,114,214,0,0,0,114,219,0,0,0,
+ 114,225,0,0,0,114,220,0,0,0,114,226,0,0,0,114,
+ 245,0,0,0,114,247,0,0,0,114,4,1,0,0,114,22,
+ 1,0,0,114,158,0,0,0,114,31,1,0,0,114,33,1,
0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,6,0,0,0,114,7,1,0,0,153,4,0,0,115,
- 20,0,0,0,12,7,6,2,12,14,12,4,6,2,12,12,
- 12,5,15,45,12,31,18,18,114,7,1,0,0,99,4,0,
- 0,0,0,0,0,0,6,0,0,0,11,0,0,0,67,0,
- 0,0,115,195,0,0,0,124,0,0,106,0,0,100,1,0,
- 131,1,0,125,4,0,124,0,0,106,0,0,100,2,0,131,
- 1,0,125,5,0,124,4,0,115,99,0,124,5,0,114,54,
- 0,124,5,0,106,1,0,125,4,0,110,45,0,124,2,0,
- 124,3,0,107,2,0,114,84,0,116,2,0,124,1,0,124,
- 2,0,131,2,0,125,4,0,110,15,0,116,3,0,124,1,
- 0,124,2,0,131,2,0,125,4,0,124,5,0,115,126,0,
- 116,4,0,124,1,0,124,2,0,100,3,0,124,4,0,131,
- 2,1,125,5,0,121,44,0,124,5,0,124,0,0,100,2,
- 0,60,124,4,0,124,0,0,100,1,0,60,124,2,0,124,
- 0,0,100,4,0,60,124,3,0,124,0,0,100,5,0,60,
- 87,110,18,0,4,116,5,0,107,10,0,114,190,0,1,1,
- 1,89,110,1,0,88,100,0,0,83,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,129,0,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,129,0,0,0,114,224,0,0,0,114,
- 219,0,0,0,114,169,0,0,0,218,9,69,120,99,101,112,
- 116,105,111,110,41,6,90,2,110,115,114,108,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,129,0,0,0,114,166,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,6,0,0,0,218,14,95,
- 102,105,120,95,117,112,95,109,111,100,117,108,101,43,5,0,
- 0,115,34,0,0,0,0,2,15,1,15,1,6,1,6,1,
- 12,1,12,1,18,2,15,1,6,1,21,1,3,1,10,1,
- 10,1,10,1,14,1,13,2,114,25,1,0,0,99,0,0,
- 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,
- 0,0,115,55,0,0,0,116,0,0,116,1,0,106,2,0,
- 131,0,0,102,2,0,125,0,0,116,3,0,116,4,0,102,
- 2,0,125,1,0,116,5,0,116,6,0,102,2,0,125,2,
- 0,124,0,0,124,1,0,124,2,0,103,3,0,83,41,1,
- 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,41,7,114,225,0,0,0,114,147,0,0,0,218,18,101,
- 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101,
- 115,114,219,0,0,0,114,86,0,0,0,114,224,0,0,0,
- 114,76,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,4,0,0,0,114,4,0,0,0,114,
- 6,0,0,0,114,163,0,0,0,66,5,0,0,115,8,0,
- 0,0,0,5,18,1,12,1,12,1,114,163,0,0,0,99,
- 1,0,0,0,0,0,0,0,12,0,0,0,12,0,0,0,
- 67,0,0,0,115,70,2,0,0,124,0,0,97,0,0,116,
- 0,0,106,1,0,97,1,0,116,0,0,106,2,0,97,2,
- 0,116,1,0,106,3,0,116,4,0,25,125,1,0,120,76,
- 0,100,26,0,68,93,68,0,125,2,0,124,2,0,116,1,
- 0,106,3,0,107,7,0,114,83,0,116,0,0,106,5,0,
- 124,2,0,131,1,0,125,3,0,110,13,0,116,1,0,106,
- 3,0,124,2,0,25,125,3,0,116,6,0,124,1,0,124,
- 2,0,124,3,0,131,3,0,1,113,44,0,87,100,5,0,
- 100,6,0,103,1,0,102,2,0,100,7,0,100,8,0,100,
- 6,0,103,2,0,102,2,0,102,2,0,125,4,0,120,149,
- 0,124,4,0,68,93,129,0,92,2,0,125,5,0,125,6,
- 0,116,7,0,100,9,0,100,10,0,132,0,0,124,6,0,
- 68,131,1,0,131,1,0,115,199,0,116,8,0,130,1,0,
- 124,6,0,100,11,0,25,125,7,0,124,5,0,116,1,0,
- 106,3,0,107,6,0,114,241,0,116,1,0,106,3,0,124,
- 5,0,25,125,8,0,80,113,156,0,121,20,0,116,0,0,
- 106,5,0,124,5,0,131,1,0,125,8,0,80,87,113,156,
- 0,4,116,9,0,107,10,0,114,28,1,1,1,1,119,156,
- 0,89,113,156,0,88,113,156,0,87,116,9,0,100,12,0,
- 131,1,0,130,1,0,116,6,0,124,1,0,100,13,0,124,
- 8,0,131,3,0,1,116,6,0,124,1,0,100,14,0,124,
- 7,0,131,3,0,1,116,6,0,124,1,0,100,15,0,100,
- 16,0,106,10,0,124,6,0,131,1,0,131,3,0,1,121,
- 19,0,116,0,0,106,5,0,100,17,0,131,1,0,125,9,
- 0,87,110,24,0,4,116,9,0,107,10,0,114,147,1,1,
- 1,1,100,18,0,125,9,0,89,110,1,0,88,116,6,0,
- 124,1,0,100,17,0,124,9,0,131,3,0,1,116,0,0,
- 106,5,0,100,19,0,131,1,0,125,10,0,116,6,0,124,
- 1,0,100,19,0,124,10,0,131,3,0,1,124,5,0,100,
- 7,0,107,2,0,114,238,1,116,0,0,106,5,0,100,20,
- 0,131,1,0,125,11,0,116,6,0,124,1,0,100,21,0,
- 124,11,0,131,3,0,1,116,6,0,124,1,0,100,22,0,
- 116,11,0,131,0,0,131,3,0,1,116,12,0,106,13,0,
- 116,2,0,106,14,0,131,0,0,131,1,0,1,124,5,0,
- 100,7,0,107,2,0,114,66,2,116,15,0,106,16,0,100,
- 23,0,131,1,0,1,100,24,0,116,12,0,107,6,0,114,
- 66,2,100,25,0,116,17,0,95,18,0,100,18,0,83,41,
- 27,122,205,83,101,116,117,112,32,116,104,101,32,112,97,116,
- 104,45,98,97,115,101,100,32,105,109,112,111,114,116,101,114,
- 115,32,102,111,114,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,10,32,32,32,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,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,79,116,104,101,
- 114,32,99,111,109,112,111,110,101,110,116,115,32,97,114,101,
- 32,101,120,116,114,97,99,116,101,100,32,102,114,111,109,32,
- 116,104,101,32,99,111,114,101,32,98,111,111,116,115,116,114,
- 97,112,32,109,111,100,117,108,101,46,10,10,32,32,32,32,
- 114,51,0,0,0,114,62,0,0,0,218,8,98,117,105,108,
- 116,105,110,115,114,144,0,0,0,90,5,112,111,115,105,120,
- 250,1,47,218,2,110,116,250,1,92,99,1,0,0,0,0,
- 0,0,0,2,0,0,0,3,0,0,0,115,0,0,0,115,
- 33,0,0,0,124,0,0,93,23,0,125,1,0,116,0,0,
- 124,1,0,131,1,0,100,0,0,107,2,0,86,1,113,3,
- 0,100,1,0,83,41,2,114,31,0,0,0,78,41,1,114,
- 33,0,0,0,41,2,114,24,0,0,0,114,79,0,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,
- 228,0,0,0,102,5,0,0,115,2,0,0,0,6,0,122,
- 25,95,115,101,116,117,112,46,60,108,111,99,97,108,115,62,
- 46,60,103,101,110,101,120,112,114,62,114,61,0,0,0,122,
- 30,105,109,112,111,114,116,108,105,98,32,114,101,113,117,105,
- 114,101,115,32,112,111,115,105,120,32,111,114,32,110,116,114,
- 3,0,0,0,114,27,0,0,0,114,23,0,0,0,114,32,
- 0,0,0,90,7,95,116,104,114,101,97,100,78,90,8,95,
- 119,101,97,107,114,101,102,90,6,119,105,110,114,101,103,114,
- 171,0,0,0,114,7,0,0,0,122,4,46,112,121,119,122,
- 6,95,100,46,112,121,100,84,41,4,122,3,95,105,111,122,
- 9,95,119,97,114,110,105,110,103,115,122,8,98,117,105,108,
- 116,105,110,115,122,7,109,97,114,115,104,97,108,41,19,114,
- 123,0,0,0,114,8,0,0,0,114,147,0,0,0,114,240,
- 0,0,0,114,114,0,0,0,90,18,95,98,117,105,108,116,
- 105,110,95,102,114,111,109,95,110,97,109,101,114,118,0,0,
- 0,218,3,97,108,108,218,14,65,115,115,101,114,116,105,111,
- 110,69,114,114,111,114,114,109,0,0,0,114,28,0,0,0,
- 114,13,0,0,0,114,230,0,0,0,114,151,0,0,0,114,
- 26,1,0,0,114,86,0,0,0,114,165,0,0,0,114,170,
- 0,0,0,114,174,0,0,0,41,12,218,17,95,98,111,111,
- 116,115,116,114,97,112,95,109,111,100,117,108,101,90,11,115,
- 101,108,102,95,109,111,100,117,108,101,90,12,98,117,105,108,
- 116,105,110,95,110,97,109,101,90,14,98,117,105,108,116,105,
- 110,95,109,111,100,117,108,101,90,10,111,115,95,100,101,116,
- 97,105,108,115,90,10,98,117,105,108,116,105,110,95,111,115,
- 114,23,0,0,0,114,27,0,0,0,90,9,111,115,95,109,
- 111,100,117,108,101,90,13,116,104,114,101,97,100,95,109,111,
- 100,117,108,101,90,14,119,101,97,107,114,101,102,95,109,111,
- 100,117,108,101,90,13,119,105,110,114,101,103,95,109,111,100,
- 117,108,101,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,6,95,115,101,116,117,112,77,5,0,0,115,82,
- 0,0,0,0,8,6,1,9,1,9,3,13,1,13,1,15,
- 1,18,2,13,1,20,3,33,1,19,2,31,1,10,1,15,
- 1,13,1,4,2,3,1,15,1,5,1,13,1,12,2,12,
- 1,16,1,16,1,25,3,3,1,19,1,13,2,11,1,16,
- 3,15,1,16,3,12,1,15,1,16,3,19,1,19,1,12,
- 1,13,1,12,1,114,34,1,0,0,99,1,0,0,0,0,
- 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
- 116,0,0,0,116,0,0,124,0,0,131,1,0,1,116,1,
- 0,131,0,0,125,1,0,116,2,0,106,3,0,106,4,0,
- 116,5,0,106,6,0,124,1,0,140,0,0,103,1,0,131,
- 1,0,1,116,7,0,106,8,0,100,1,0,107,2,0,114,
- 78,0,116,2,0,106,9,0,106,10,0,116,11,0,131,1,
- 0,1,116,2,0,106,9,0,106,10,0,116,12,0,131,1,
- 0,1,116,5,0,124,0,0,95,5,0,116,13,0,124,0,
- 0,95,13,0,100,2,0,83,41,3,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,114,29,1,0,0,78,41,14,114,34,1,
- 0,0,114,163,0,0,0,114,8,0,0,0,114,255,0,0,
- 0,114,151,0,0,0,114,7,1,0,0,114,20,1,0,0,
- 114,3,0,0,0,114,114,0,0,0,218,9,109,101,116,97,
- 95,112,97,116,104,114,165,0,0,0,114,170,0,0,0,114,
- 250,0,0,0,114,219,0,0,0,41,2,114,33,1,0,0,
- 90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,
- 101,114,115,114,4,0,0,0,114,4,0,0,0,114,6,0,
- 0,0,218,8,95,105,110,115,116,97,108,108,145,5,0,0,
- 115,16,0,0,0,0,2,10,1,9,1,28,1,15,1,16,
- 1,16,4,9,1,114,36,1,0,0,41,1,122,3,119,105,
- 110,41,2,114,1,0,0,0,114,2,0,0,0,41,59,114,
- 116,0,0,0,114,12,0,0,0,90,37,95,67,65,83,69,
- 95,73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,
- 84,70,79,82,77,83,95,66,89,84,69,83,95,75,69,89,
- 114,11,0,0,0,114,13,0,0,0,114,19,0,0,0,114,
- 21,0,0,0,114,30,0,0,0,114,40,0,0,0,114,41,
- 0,0,0,114,45,0,0,0,114,46,0,0,0,114,48,0,
- 0,0,114,57,0,0,0,218,4,116,121,112,101,218,8,95,
- 95,99,111,100,101,95,95,114,146,0,0,0,114,17,0,0,
- 0,114,137,0,0,0,114,16,0,0,0,114,20,0,0,0,
- 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,
- 66,69,82,114,75,0,0,0,114,74,0,0,0,114,86,0,
- 0,0,114,76,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,81,0,
- 0,0,114,87,0,0,0,114,93,0,0,0,114,97,0,0,
- 0,114,99,0,0,0,114,107,0,0,0,114,125,0,0,0,
- 114,132,0,0,0,114,143,0,0,0,114,149,0,0,0,114,
- 152,0,0,0,114,157,0,0,0,218,6,111,98,106,101,99,
- 116,114,164,0,0,0,114,169,0,0,0,114,170,0,0,0,
- 114,185,0,0,0,114,195,0,0,0,114,211,0,0,0,114,
- 219,0,0,0,114,224,0,0,0,114,230,0,0,0,114,225,
- 0,0,0,114,231,0,0,0,114,248,0,0,0,114,250,0,
- 0,0,114,7,1,0,0,114,25,1,0,0,114,163,0,0,
- 0,114,34,1,0,0,114,36,1,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,
- 8,60,109,111,100,117,108,101,62,8,0,0,0,115,106,0,
- 0,0,6,16,6,1,6,1,3,1,7,3,12,17,12,5,
- 12,5,12,6,12,12,12,10,12,9,12,5,12,7,15,22,
- 15,114,22,1,18,2,6,1,6,2,9,2,9,2,10,2,
- 21,44,12,33,12,19,12,12,12,12,18,8,12,28,12,17,
- 21,55,21,12,18,10,12,14,9,3,12,1,15,65,19,64,
- 19,28,22,110,19,41,25,43,25,16,6,3,25,53,19,57,
- 19,41,19,134,19,146,15,23,12,11,12,68,
+ 0,114,6,0,0,0,218,8,60,109,111,100,117,108,101,62,
+ 8,0,0,0,115,108,0,0,0,4,16,4,1,4,1,2,
+ 1,6,3,8,17,8,5,8,5,8,6,8,12,8,10,8,
+ 9,8,5,8,7,10,22,10,116,16,1,12,2,4,1,4,
+ 2,6,2,6,2,8,2,16,44,8,33,8,19,8,12,8,
+ 12,8,28,8,17,10,55,10,12,10,10,8,14,6,3,4,
+ 1,14,65,14,64,14,29,16,110,14,41,18,45,18,16,4,
+ 3,18,53,14,60,14,42,14,127,0,5,14,127,0,22,10,
+ 23,8,11,8,68,
};
diff --git a/Python/makeopcodetargets.py b/Python/makeopcodetargets.py
index d9a0855..023c9e6 100755
--- a/Python/makeopcodetargets.py
+++ b/Python/makeopcodetargets.py
@@ -3,24 +3,34 @@
(for compilers supporting computed gotos or "labels-as-values", such as gcc).
"""
-# This code should stay compatible with Python 2.3, at least while
-# some of the buildbots have Python 2.3 as their system Python.
-
-import imp
import os
+import sys
-def find_module(modname):
- """Finds and returns a module in the local dist/checkout.
- """
- modpath = os.path.join(
- os.path.dirname(os.path.dirname(__file__)), "Lib")
- return imp.load_module(modname, *imp.find_module(modname, [modpath]))
+try:
+ from importlib.machinery import SourceFileLoader
+except ImportError:
+ import imp
+
+ def find_module(modname):
+ """Finds and returns a module in the local dist/checkout.
+ """
+ modpath = os.path.join(
+ os.path.dirname(os.path.dirname(__file__)), "Lib")
+ return imp.load_module(modname, *imp.find_module(modname, [modpath]))
+else:
+ def find_module(modname):
+ """Finds and returns a module in the local dist/checkout.
+ """
+ modpath = os.path.join(
+ os.path.dirname(os.path.dirname(__file__)), "Lib", modname + ".py")
+ return SourceFileLoader(modname, modpath).load_module()
+
def write_contents(f):
"""Write C code contents to the target file object.
"""
- opcode = find_module("opcode")
+ opcode = find_module('opcode')
targets = ['_unknown_opcode'] * 256
for opname, op in opcode.opmap.items():
targets[op] = "TARGET_%s" % opname
@@ -29,15 +39,17 @@ def write_contents(f):
f.write("\n};\n")
-if __name__ == "__main__":
- import sys
- assert len(sys.argv) < 3, "Too many arguments"
+def main():
+ if len(sys.argv) >= 3:
+ sys.exit("Too many arguments")
if len(sys.argv) == 2:
target = sys.argv[1]
else:
target = "Python/opcode_targets.h"
- f = open(target, "w")
- try:
+ with open(target, "w") as f:
write_contents(f)
- finally:
- f.close()
+ print("Jump table written into %s" % target)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Python/marshal.c b/Python/marshal.c
index 5b8de99..627a842 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -263,10 +263,10 @@ w_ref(PyObject *v, char *flag, WFILE *p)
if (Py_REFCNT(v) == 1)
return 0;
- entry = _Py_hashtable_get_entry(p->hashtable, v);
+ entry = _Py_HASHTABLE_GET_ENTRY(p->hashtable, v);
if (entry != NULL) {
/* write the reference index to the stream */
- _Py_HASHTABLE_ENTRY_READ_DATA(p->hashtable, &w, sizeof(w), entry);
+ _Py_HASHTABLE_ENTRY_READ_DATA(p->hashtable, entry, w);
/* we don't store "long" indices in the dict */
assert(0 <= w && w <= 0x7fffffff);
w_byte(TYPE_REF, p);
@@ -571,7 +571,8 @@ static int
w_init_refs(WFILE *wf, int version)
{
if (version >= 3) {
- wf->hashtable = _Py_hashtable_new(sizeof(int), _Py_hashtable_hash_ptr,
+ wf->hashtable = _Py_hashtable_new(sizeof(PyObject *), sizeof(int),
+ _Py_hashtable_hash_ptr,
_Py_hashtable_compare_direct);
if (wf->hashtable == NULL) {
PyErr_NoMemory();
@@ -582,9 +583,13 @@ w_init_refs(WFILE *wf, int version)
}
static int
-w_decref_entry(_Py_hashtable_entry_t *entry, void *Py_UNUSED(data))
+w_decref_entry(_Py_hashtable_t *ht, _Py_hashtable_entry_t *entry,
+ void *Py_UNUSED(data))
{
- Py_XDECREF(entry->key);
+ PyObject *entry_key;
+
+ _Py_HASHTABLE_ENTRY_READ_KEY(ht, entry, entry_key);
+ Py_XDECREF(entry_key);
return 0;
}
@@ -643,7 +648,7 @@ typedef struct {
PyObject *refs; /* a list */
} RFILE;
-static char *
+static const char *
r_string(Py_ssize_t n, RFILE *p)
{
Py_ssize_t read = -1;
@@ -729,7 +734,7 @@ r_byte(RFILE *p)
c = getc(p->fp);
}
else {
- char *ptr = r_string(1, p);
+ const char *ptr = r_string(1, p);
if (ptr != NULL)
c = *(unsigned char *) ptr;
}
@@ -740,9 +745,9 @@ static int
r_short(RFILE *p)
{
short x = -1;
- unsigned char *buffer;
+ const unsigned char *buffer;
- buffer = (unsigned char *) r_string(2, p);
+ buffer = (const unsigned char *) r_string(2, p);
if (buffer != NULL) {
x = buffer[0];
x |= buffer[1] << 8;
@@ -756,9 +761,9 @@ static long
r_long(RFILE *p)
{
long x = -1;
- unsigned char *buffer;
+ const unsigned char *buffer;
- buffer = (unsigned char *) r_string(4, p);
+ buffer = (const unsigned char *) r_string(4, p);
if (buffer != NULL) {
x = buffer[0];
x |= (long)buffer[1] << 8;
@@ -978,7 +983,8 @@ r_object(RFILE *p)
case TYPE_FLOAT:
{
- char buf[256], *ptr;
+ char buf[256];
+ const char *ptr;
double dx;
n = r_byte(p);
if (n == EOF) {
@@ -1001,9 +1007,9 @@ r_object(RFILE *p)
case TYPE_BINARY_FLOAT:
{
- unsigned char *buf;
+ const unsigned char *buf;
double x;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
x = _PyFloat_Unpack8(buf, 1);
@@ -1016,7 +1022,8 @@ r_object(RFILE *p)
case TYPE_COMPLEX:
{
- char buf[256], *ptr;
+ char buf[256];
+ const char *ptr;
Py_complex c;
n = r_byte(p);
if (n == EOF) {
@@ -1053,15 +1060,15 @@ r_object(RFILE *p)
case TYPE_BINARY_COMPLEX:
{
- unsigned char *buf;
+ const unsigned char *buf;
Py_complex c;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
c.real = _PyFloat_Unpack8(buf, 1);
if (c.real == -1.0 && PyErr_Occurred())
break;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
c.imag = _PyFloat_Unpack8(buf, 1);
@@ -1074,7 +1081,7 @@ r_object(RFILE *p)
case TYPE_STRING:
{
- char *ptr;
+ const char *ptr;
n = r_long(p);
if (PyErr_Occurred())
break;
@@ -1119,7 +1126,7 @@ r_object(RFILE *p)
}
_read_ascii:
{
- char *ptr;
+ const char *ptr;
ptr = r_string(n, p);
if (ptr == NULL)
break;
@@ -1137,7 +1144,7 @@ r_object(RFILE *p)
is_interned = 1;
case TYPE_UNICODE:
{
- char *buffer;
+ const char *buffer;
n = r_long(p);
if (PyErr_Occurred())
@@ -1264,41 +1271,52 @@ r_object(RFILE *p)
PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
break;
}
- v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
- if (type == TYPE_SET) {
- R_REF(v);
- } else {
- /* must use delayed registration of frozensets because they must
- * be init with a refcount of 1
- */
- idx = r_ref_reserve(flag, p);
- if (idx < 0)
- Py_CLEAR(v); /* signal error */
- }
- if (v == NULL)
- break;
- for (i = 0; i < n; i++) {
- v2 = r_object(p);
- if ( v2 == NULL ) {
- if (!PyErr_Occurred())
- PyErr_SetString(PyExc_TypeError,
- "NULL object in marshal data for set");
- Py_DECREF(v);
- v = NULL;
+ if (n == 0 && type == TYPE_FROZENSET) {
+ /* call frozenset() to get the empty frozenset singleton */
+ v = PyObject_CallFunction((PyObject*)&PyFrozenSet_Type, NULL);
+ if (v == NULL)
break;
+ R_REF(v);
+ retval = v;
+ }
+ else {
+ v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
+ if (type == TYPE_SET) {
+ R_REF(v);
+ } else {
+ /* must use delayed registration of frozensets because they must
+ * be init with a refcount of 1
+ */
+ idx = r_ref_reserve(flag, p);
+ if (idx < 0)
+ Py_CLEAR(v); /* signal error */
}
- if (PySet_Add(v, v2) == -1) {
- Py_DECREF(v);
- Py_DECREF(v2);
- v = NULL;
+ if (v == NULL)
break;
+
+ for (i = 0; i < n; i++) {
+ v2 = r_object(p);
+ if ( v2 == NULL ) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for set");
+ Py_DECREF(v);
+ v = NULL;
+ break;
+ }
+ if (PySet_Add(v, v2) == -1) {
+ Py_DECREF(v);
+ Py_DECREF(v2);
+ v = NULL;
+ break;
+ }
+ Py_DECREF(v2);
}
- Py_DECREF(v2);
+ if (type != TYPE_SET)
+ v = r_ref_insert(v, idx, flag, p);
+ retval = v;
}
- if (type != TYPE_SET)
- v = r_ref_insert(v, idx, flag, p);
- retval = v;
break;
case TYPE_CODE:
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 0d09371..dac18be 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -318,7 +318,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
case 'U': /* XXX deprecated alias */
{
PyObject *v;
- char *str = va_arg(*p_va, char *);
+ const char *str = va_arg(*p_va, const char *);
Py_ssize_t n;
if (**p_format == '#') {
++*p_format;
@@ -351,7 +351,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
case 'y':
{
PyObject *v;
- char *str = va_arg(*p_va, char *);
+ const char *str = va_arg(*p_va, const char *);
Py_ssize_t n;
if (**p_format == '#') {
++*p_format;
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
index 98429d4..a85790e 100644
--- a/Python/mystrtoul.c
+++ b/Python/mystrtoul.c
@@ -17,7 +17,7 @@
* smallmax[base] is the largest unsigned long i such that
* i * base doesn't overflow unsigned long.
*/
-static unsigned long smallmax[] = {
+static const unsigned long smallmax[] = {
0, /* bases 0 and 1 are invalid */
0,
ULONG_MAX / 2,
@@ -62,14 +62,14 @@ static unsigned long smallmax[] = {
* Note that this is pessimistic if sizeof(long) > 4.
*/
#if SIZEOF_LONG == 4
-static int digitlimit[] = {
+static const int digitlimit[] = {
0, 0, 32, 20, 16, 13, 12, 11, 10, 10, /* 0 - 9 */
9, 9, 8, 8, 8, 8, 8, 7, 7, 7, /* 10 - 19 */
7, 7, 7, 7, 6, 6, 6, 6, 6, 6, /* 20 - 29 */
6, 6, 6, 6, 6, 6, 6}; /* 30 - 36 */
#elif SIZEOF_LONG == 8
/* [int(math.floor(math.log(2**64, i))) for i in range(2, 37)] */
-static int digitlimit[] = {
+static const int digitlimit[] = {
0, 0, 64, 40, 32, 27, 24, 22, 21, 20, /* 0 - 9 */
19, 18, 17, 17, 16, 16, 16, 15, 15, 15, /* 10 - 19 */
14, 14, 14, 14, 13, 13, 13, 13, 13, 13, /* 20 - 29 */
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 19259e1..6182e80 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -133,7 +133,7 @@ static void *opcode_targets[256] = {
&&TARGET_CALL_FUNCTION,
&&TARGET_MAKE_FUNCTION,
&&TARGET_BUILD_SLICE,
- &&TARGET_MAKE_CLOSURE,
+ &&_unknown_opcode,
&&TARGET_LOAD_CLOSURE,
&&TARGET_LOAD_DEREF,
&&TARGET_STORE_DEREF,
@@ -154,8 +154,8 @@ static void *opcode_targets[256] = {
&&TARGET_BUILD_TUPLE_UNPACK,
&&TARGET_BUILD_SET_UNPACK,
&&TARGET_SETUP_ASYNC_WITH,
- &&_unknown_opcode,
- &&_unknown_opcode,
+ &&TARGET_FORMAT_VALUE,
+ &&TARGET_BUILD_CONST_KEY_MAP,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
diff --git a/Python/peephole.c b/Python/peephole.c
index 4e657fa..b2c0279 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -8,8 +8,8 @@
#include "code.h"
#include "symtable.h"
#include "opcode.h"
+#include "wordcode_helpers.h"
-#define GETARG(arr, i) ((int)((arr[i+2]<<8) + arr[i+1]))
#define UNCONDITIONAL_JUMP(op) (op==JUMP_ABSOLUTE || op==JUMP_FORWARD)
#define CONDITIONAL_JUMP(op) (op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
|| op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
@@ -17,22 +17,15 @@
|| op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
|| op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
#define JUMPS_ON_TRUE(op) (op==POP_JUMP_IF_TRUE || op==JUMP_IF_TRUE_OR_POP)
-#define GETJUMPTGT(arr, i) (GETARG(arr,i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+3))
-#define SETARG(arr, i, val) do { \
- assert(0 <= val && val <= 0xffff); \
- arr[i+2] = (unsigned char)(((unsigned int)val)>>8); \
- arr[i+1] = (unsigned char)(((unsigned int)val) & 255); \
-} while(0)
-#define CODESIZE(op) (HAS_ARG(op) ? 3 : 1)
-#define ISBASICBLOCK(blocks, start, bytes) \
- (blocks[start]==blocks[start+bytes-1])
+#define GETJUMPTGT(arr, i) (get_arg(arr, i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+2))
+#define ISBASICBLOCK(blocks, start, end) \
+ (blocks[start]==blocks[end])
#define CONST_STACK_CREATE() { \
const_stack_size = 256; \
const_stack = PyMem_New(PyObject *, const_stack_size); \
- load_const_stack = PyMem_New(Py_ssize_t, const_stack_size); \
- if (!const_stack || !load_const_stack) { \
+ if (!const_stack) { \
PyErr_NoMemory(); \
goto exitError; \
} \
@@ -41,27 +34,23 @@
#define CONST_STACK_DELETE() do { \
if (const_stack) \
PyMem_Free(const_stack); \
- if (load_const_stack) \
- PyMem_Free(load_const_stack); \
} while(0)
-#define CONST_STACK_LEN() (const_stack_top + 1)
+#define CONST_STACK_LEN() ((unsigned)(const_stack_top + 1))
#define CONST_STACK_PUSH_OP(i) do { \
PyObject *_x; \
assert(codestr[i] == LOAD_CONST); \
- assert(PyList_GET_SIZE(consts) > GETARG(codestr, i)); \
- _x = PyList_GET_ITEM(consts, GETARG(codestr, i)); \
+ assert(PyList_GET_SIZE(consts) > (Py_ssize_t)get_arg(codestr, i)); \
+ _x = PyList_GET_ITEM(consts, get_arg(codestr, i)); \
if (++const_stack_top >= const_stack_size) { \
const_stack_size *= 2; \
PyMem_Resize(const_stack, PyObject *, const_stack_size); \
- PyMem_Resize(load_const_stack, Py_ssize_t, const_stack_size); \
- if (!const_stack || !load_const_stack) { \
+ if (!const_stack) { \
PyErr_NoMemory(); \
goto exitError; \
} \
} \
- load_const_stack[const_stack_top] = i; \
const_stack[const_stack_top] = _x; \
in_consts = 1; \
} while(0)
@@ -70,22 +59,108 @@
const_stack_top = -1; \
} while(0)
-#define CONST_STACK_TOP() \
- const_stack[const_stack_top]
-
#define CONST_STACK_LASTN(i) \
- &const_stack[const_stack_top - i + 1]
+ &const_stack[CONST_STACK_LEN() - i]
#define CONST_STACK_POP(i) do { \
- assert(const_stack_top + 1 >= i); \
+ assert(CONST_STACK_LEN() >= i); \
const_stack_top -= i; \
} while(0)
-#define CONST_STACK_OP_LASTN(i) \
- ((const_stack_top >= i - 1) ? load_const_stack[const_stack_top - i + 1] : -1)
+/* Scans back N consecutive LOAD_CONST instructions, skipping NOPs,
+ returns index of the Nth last's LOAD_CONST's EXTENDED_ARG prefix.
+ Callers are responsible to check CONST_STACK_LEN beforehand.
+*/
+static Py_ssize_t
+lastn_const_start(unsigned char *codestr, Py_ssize_t i, Py_ssize_t n)
+{
+ assert(n > 0 && (i&1) == 0);
+ for (;;) {
+ i -= 2;
+ assert(i >= 0);
+ if (codestr[i] == LOAD_CONST) {
+ if (!--n) {
+ while (i > 0 && codestr[i-2] == EXTENDED_ARG) {
+ i -= 2;
+ }
+ return i;
+ }
+ }
+ else {
+ assert(codestr[i] == NOP || codestr[i] == EXTENDED_ARG);
+ }
+ }
+}
+
+/* Scans through EXTENDED ARGs, seeking the index of the effective opcode */
+static Py_ssize_t
+find_op(unsigned char *codestr, Py_ssize_t i)
+{
+ assert((i&1) == 0);
+ while (codestr[i] == EXTENDED_ARG) {
+ i += 2;
+ }
+ return i;
+}
+
+/* Given the index of the effective opcode,
+ scan back to construct the oparg with EXTENDED_ARG */
+static unsigned int
+get_arg(unsigned char *codestr, Py_ssize_t i)
+{
+ unsigned int oparg = codestr[i+1];
+ assert((i&1) == 0);
+ if (i >= 2 && codestr[i-2] == EXTENDED_ARG) {
+ oparg |= codestr[i-1] << 8;
+ if (i >= 4 && codestr[i-4] == EXTENDED_ARG) {
+ oparg |= codestr[i-3] << 16;
+ if (i >= 6 && codestr[i-6] == EXTENDED_ARG) {
+ oparg |= codestr[i-5] << 24;
+ }
+ }
+ }
+ return oparg;
+}
+
+/* Given the index of the effective opcode,
+ attempt to replace the argument, taking into account EXTENDED_ARG.
+ Returns -1 on failure, or the new op index on success */
+static Py_ssize_t
+set_arg(unsigned char *codestr, Py_ssize_t i, unsigned int oparg)
+{
+ unsigned int curarg = get_arg(codestr, i);
+ int curilen, newilen;
+ if (curarg == oparg)
+ return i;
+ curilen = instrsize(curarg);
+ newilen = instrsize(oparg);
+ if (curilen < newilen) {
+ return -1;
+ }
+
+ write_op_arg(codestr + i + 2 - curilen, codestr[i], oparg, newilen);
+ memset(codestr + i + 2 - curilen + newilen, NOP, curilen - newilen);
+ return i-curilen+newilen;
+}
+/* Attempt to write op/arg at end of specified region of memory.
+ Preceding memory in the region is overwritten with NOPs.
+ Returns -1 on failure, op index on success */
+static Py_ssize_t
+copy_op_arg(unsigned char *codestr, Py_ssize_t i, unsigned char op,
+ unsigned int oparg, Py_ssize_t maxi)
+{
+ int ilen = instrsize(oparg);
+ assert((i&1) == 0);
+ if (i + ilen > maxi) {
+ return -1;
+ }
+ write_op_arg(codestr + maxi - ilen, op, oparg, ilen);
+ memset(codestr + i, NOP, maxi - i - ilen);
+ return maxi - 2;
+}
-/* Replace LOAD_CONST c1. LOAD_CONST c2 ... LOAD_CONST cn BUILD_TUPLE n
+/* Replace LOAD_CONST c1, LOAD_CONST c2 ... LOAD_CONST cn, BUILD_TUPLE n
with LOAD_CONST (c1, c2, ... cn).
The consts table must still be in list form so that the
new constant (c1, c2, ... cn) can be appended.
@@ -94,9 +169,10 @@
Also works for BUILD_LIST and BUILT_SET when followed by an "in" or "not in"
test; for BUILD_SET it assembles a frozenset rather than a tuple.
*/
-static int
-tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
- PyObject *consts, PyObject **objs)
+static Py_ssize_t
+fold_tuple_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject **objs, int n)
{
PyObject *newconst, *constant;
Py_ssize_t i, len_consts;
@@ -106,9 +182,9 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
/* Buildup new tuple of constants */
newconst = PyTuple_New(n);
- if (newconst == NULL)
- return 0;
- len_consts = PyList_GET_SIZE(consts);
+ if (newconst == NULL) {
+ return -1;
+ }
for (i=0 ; i<n ; i++) {
constant = objs[i];
Py_INCREF(constant);
@@ -116,30 +192,26 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
}
/* If it's a BUILD_SET, use the PyTuple we just built to create a
- PyFrozenSet, and use that as the constant instead: */
- if (codestr[0] == BUILD_SET) {
- PyObject *tuple = newconst;
- newconst = PyFrozenSet_New(tuple);
- Py_DECREF(tuple);
- if (newconst == NULL)
- return 0;
+ PyFrozenSet, and use that as the constant instead: */
+ if (opcode == BUILD_SET) {
+ Py_SETREF(newconst, PyFrozenSet_New(newconst));
+ if (newconst == NULL) {
+ return -1;
+ }
}
/* Append folded constant onto consts */
+ len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOPs over old LOAD_CONSTS and
- add a new LOAD_CONST newconst on top of the BUILD_TUPLE n */
- codestr[0] = LOAD_CONST;
- SETARG(codestr, 0, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
-/* Replace LOAD_CONST c1. LOAD_CONST c2 BINOP
+/* Replace LOAD_CONST c1, LOAD_CONST c2, BINOP
with LOAD_CONST binop(c1,c2)
The consts table must still be in list form so that the
new constant can be appended.
@@ -149,20 +221,21 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
is below a threshold value. That keeps pyc files from
becoming large in the presence of code like: (None,)*1000.
*/
-static int
-fold_binops_on_constants(unsigned char *codestr, PyObject *consts, PyObject **objs)
+static Py_ssize_t
+fold_binops_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject **objs)
{
PyObject *newconst, *v, *w;
Py_ssize_t len_consts, size;
- int opcode;
/* Pre-conditions */
assert(PyList_CheckExact(consts));
+ len_consts = PyList_GET_SIZE(consts);
/* Create new constant */
v = objs[0];
w = objs[1];
- opcode = codestr[0];
switch (opcode) {
case BINARY_POWER:
newconst = PyNumber_Power(v, w, Py_None);
@@ -208,50 +281,48 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts, PyObject **ob
PyErr_Format(PyExc_SystemError,
"unexpected binary operation %d on a constant",
opcode);
- return 0;
+ return -1;
}
if (newconst == NULL) {
- if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
+ if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
PyErr_Clear();
- return 0;
+ }
+ return -1;
}
size = PyObject_Size(newconst);
if (size == -1) {
- if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
- return 0;
+ if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
+ return -1;
+ }
PyErr_Clear();
} else if (size > 20) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
/* Append folded constant into consts table */
- len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOP NOP NOP NOP LOAD_CONST newconst */
- codestr[-2] = LOAD_CONST;
- SETARG(codestr, -2, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
-static int
-fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts, PyObject *v)
+static Py_ssize_t
+fold_unaryops_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject *v)
{
PyObject *newconst;
Py_ssize_t len_consts;
- int opcode;
/* Pre-conditions */
assert(PyList_CheckExact(consts));
- assert(codestr[0] == LOAD_CONST);
+ len_consts = PyList_GET_SIZE(consts);
/* Create new constant */
- opcode = codestr[3];
switch (opcode) {
case UNARY_NEGATIVE:
newconst = PyNumber_Negative(v);
@@ -267,35 +338,31 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts, PyObject *v
PyErr_Format(PyExc_SystemError,
"unexpected unary operation %d on a constant",
opcode);
- return 0;
+ return -1;
}
if (newconst == NULL) {
- if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
+ if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
PyErr_Clear();
- return 0;
+ }
+ return -1;
}
/* Append folded constant into consts table */
- len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
PyErr_Clear();
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOP LOAD_CONST newconst */
- codestr[0] = NOP;
- codestr[1] = LOAD_CONST;
- SETARG(codestr, 1, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
static unsigned int *
markblocks(unsigned char *code, Py_ssize_t len)
{
unsigned int *blocks = PyMem_New(unsigned int, len);
- int i,j, opcode, blockcnt = 0;
+ int i, j, opcode, blockcnt = 0;
if (blocks == NULL) {
PyErr_NoMemory();
@@ -304,7 +371,7 @@ markblocks(unsigned char *code, Py_ssize_t len)
memset(blocks, 0, len*sizeof(int));
/* Mark labels in the first pass */
- for (i=0 ; i<len ; i+=CODESIZE(opcode)) {
+ for (i=0 ; i<len ; i+=2) {
opcode = code[i];
switch (opcode) {
case FOR_ITER:
@@ -326,7 +393,7 @@ markblocks(unsigned char *code, Py_ssize_t len)
}
}
/* Build block numbers in the second pass */
- for (i=0 ; i<len ; i++) {
+ for (i=0 ; i<len ; i+=2) {
blockcnt += blocks[i]; /* increment blockcnt over labels */
blocks[i] = blockcnt;
}
@@ -337,33 +404,27 @@ markblocks(unsigned char *code, Py_ssize_t len)
The consts object should still be in list form to allow new constants
to be appended.
- To keep the optimizer simple, it bails out (does nothing) for code that
- has a length over 32,700, and does not calculate extended arguments.
- That allows us to avoid overflow and sign issues. Likewise, it bails when
- the lineno table has complex encoding for gaps >= 255. EXTENDED_ARG can
- appear before MAKE_FUNCTION; in this case both opcodes are skipped.
- EXTENDED_ARG preceding any other opcode causes the optimizer to bail.
+ To keep the optimizer simple, it bails when the lineno table has complex
+ encoding for gaps >= 255.
Optimizations are restricted to simple transformations occurring within a
single basic block. All transformations keep the code size the same or
smaller. For those that reduce size, the gaps are initially filled with
NOPs. Later those NOPs are removed and the jump addresses retargeted in
- a single pass. Line numbering is adjusted accordingly. */
+ a single pass. */
PyObject *
PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- PyObject *lineno_obj)
+ PyObject *lnotab_obj)
{
- Py_ssize_t i, j, codelen;
- int nops, h, adj;
- int tgt, tgttgt, opcode;
+ Py_ssize_t h, i, nexti, op_start, codelen, tgt;
+ unsigned int j, nops;
+ unsigned char opcode, nextop;
unsigned char *codestr = NULL;
- unsigned char *lineno;
- int *addrmap = NULL;
- int new_line, cum_orig_line, last_line;
+ unsigned char *lnotab;
+ unsigned int cum_orig_offset, last_offset;
Py_ssize_t tabsiz;
PyObject **const_stack = NULL;
- Py_ssize_t *load_const_stack = NULL;
Py_ssize_t const_stack_top = -1;
Py_ssize_t const_stack_size = 0;
int in_consts = 0; /* whether we are in a LOAD_CONST sequence */
@@ -373,18 +434,21 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
if (PyErr_Occurred())
goto exitError;
- /* Bypass optimization when the lineno table is too complex */
- assert(PyBytes_Check(lineno_obj));
- lineno = (unsigned char*)PyBytes_AS_STRING(lineno_obj);
- tabsiz = PyBytes_GET_SIZE(lineno_obj);
- if (memchr(lineno, 255, tabsiz) != NULL)
+ /* Bypass optimization when the lnotab table is too complex */
+ assert(PyBytes_Check(lnotab_obj));
+ lnotab = (unsigned char*)PyBytes_AS_STRING(lnotab_obj);
+ tabsiz = PyBytes_GET_SIZE(lnotab_obj);
+ assert(tabsiz == 0 || Py_REFCNT(lnotab_obj) == 1);
+ if (memchr(lnotab, 255, tabsiz) != NULL) {
+ /* 255 value are used for multibyte bytecode instructions */
goto exitUnchanged;
+ }
+ /* Note: -128 and 127 special values for line number delta are ok,
+ the peephole optimizer doesn't modify line numbers. */
- /* Avoid situations where jump retargeting could overflow */
assert(PyBytes_Check(code));
codelen = PyBytes_GET_SIZE(code);
- if (codelen > 32700)
- goto exitUnchanged;
+ assert(codelen % 2 == 0);
/* Make a modifiable copy of the code string */
codestr = (unsigned char *)PyMem_Malloc(codelen);
@@ -395,21 +459,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
codestr = (unsigned char *)memcpy(codestr,
PyBytes_AS_STRING(code), codelen);
- /* Verify that RETURN_VALUE terminates the codestring. This allows
- the various transformation patterns to look ahead several
- instructions without additional checks to make sure they are not
- looking beyond the end of the code string.
- */
- if (codestr[codelen-1] != RETURN_VALUE)
- goto exitUnchanged;
-
- /* Mapping to new jump targets after NOPs are removed */
- addrmap = PyMem_New(int, codelen);
- if (addrmap == NULL) {
- PyErr_NoMemory();
- goto exitError;
- }
-
blocks = markblocks(codestr, codelen);
if (blocks == NULL)
goto exitError;
@@ -417,9 +466,17 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
CONST_STACK_CREATE();
- for (i=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
- reoptimize_current:
+ for (i=find_op(codestr, 0) ; i<codelen ; i=nexti) {
opcode = codestr[i];
+ op_start = i;
+ while (op_start >= 2 && codestr[op_start-2] == EXTENDED_ARG) {
+ op_start -= 2;
+ }
+
+ nexti = i + 2;
+ while (nexti < codelen && codestr[nexti] == EXTENDED_ARG)
+ nexti += 2;
+ nextop = nexti < codelen ? codestr[nexti] : 0;
if (!in_consts) {
CONST_STACK_RESET();
@@ -430,14 +487,12 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
/* Replace UNARY_NOT POP_JUMP_IF_FALSE
with POP_JUMP_IF_TRUE */
case UNARY_NOT:
- if (codestr[i+1] != POP_JUMP_IF_FALSE
- || !ISBASICBLOCK(blocks,i,4))
- continue;
- j = GETARG(codestr, i+1);
- codestr[i] = POP_JUMP_IF_TRUE;
- SETARG(codestr, i, j);
- codestr[i+3] = NOP;
- goto reoptimize_current;
+ if (nextop != POP_JUMP_IF_FALSE
+ || !ISBASICBLOCK(blocks, op_start, i+2))
+ break;
+ memset(codestr + op_start, NOP, i - op_start + 2);
+ codestr[nexti] = POP_JUMP_IF_TRUE;
+ break;
/* not a is b --> a is not b
not a in b --> a not in b
@@ -445,78 +500,79 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
not a not in b --> a in b
*/
case COMPARE_OP:
- j = GETARG(codestr, i);
- if (j < 6 || j > 9 ||
- codestr[i+3] != UNARY_NOT ||
- !ISBASICBLOCK(blocks,i,4))
- continue;
- SETARG(codestr, i, (j^1));
- codestr[i+3] = NOP;
+ j = get_arg(codestr, i);
+ if (j < 6 || j > 9 ||
+ nextop != UNARY_NOT ||
+ !ISBASICBLOCK(blocks, op_start, i + 2))
+ break;
+ codestr[i+1] = (j^1);
+ memset(codestr + i + 2, NOP, nexti - i);
break;
/* Skip over LOAD_CONST trueconst
- POP_JUMP_IF_FALSE xx. This improves
- "while 1" performance. */
+ POP_JUMP_IF_FALSE xx. This improves
+ "while 1" performance. */
case LOAD_CONST:
CONST_STACK_PUSH_OP(i);
- j = GETARG(codestr, i);
- if (codestr[i+3] != POP_JUMP_IF_FALSE ||
- !ISBASICBLOCK(blocks,i,6) ||
- !PyObject_IsTrue(PyList_GET_ITEM(consts, j)))
- continue;
- memset(codestr+i, NOP, 6);
- CONST_STACK_RESET();
+ if (nextop != POP_JUMP_IF_FALSE ||
+ !ISBASICBLOCK(blocks, op_start, i + 2) ||
+ !PyObject_IsTrue(PyList_GET_ITEM(consts, get_arg(codestr, i))))
+ break;
+ memset(codestr + op_start, NOP, nexti - op_start + 2);
+ CONST_STACK_POP(1);
break;
- /* Try to fold tuples of constants (includes a case for lists and sets
- which are only used for "in" and "not in" tests).
+ /* Try to fold tuples of constants (includes a case for lists
+ and sets which are only used for "in" and "not in" tests).
Skip over BUILD_SEQN 1 UNPACK_SEQN 1.
Replace BUILD_SEQN 2 UNPACK_SEQN 2 with ROT2.
Replace BUILD_SEQN 3 UNPACK_SEQN 3 with ROT3 ROT2. */
case BUILD_TUPLE:
case BUILD_LIST:
case BUILD_SET:
- j = GETARG(codestr, i);
- if (j == 0)
- break;
- h = CONST_STACK_OP_LASTN(j);
- assert((h >= 0 || CONST_STACK_LEN() < j));
- if (h >= 0 && j > 0 && j <= CONST_STACK_LEN() &&
- ((opcode == BUILD_TUPLE &&
- ISBASICBLOCK(blocks, h, i-h+3)) ||
- ((opcode == BUILD_LIST || opcode == BUILD_SET) &&
- codestr[i+3]==COMPARE_OP &&
- ISBASICBLOCK(blocks, h, i-h+6) &&
- (GETARG(codestr,i+3)==6 ||
- GETARG(codestr,i+3)==7))) &&
- tuple_of_constants(&codestr[i], j, consts, CONST_STACK_LASTN(j))) {
- assert(codestr[i] == LOAD_CONST);
- memset(&codestr[h], NOP, i - h);
- CONST_STACK_POP(j);
- CONST_STACK_PUSH_OP(i);
- break;
+ j = get_arg(codestr, i);
+ if (j > 0 && CONST_STACK_LEN() >= j) {
+ h = lastn_const_start(codestr, op_start, j);
+ if ((opcode == BUILD_TUPLE &&
+ ISBASICBLOCK(blocks, h, op_start)) ||
+ ((opcode == BUILD_LIST || opcode == BUILD_SET) &&
+ ((nextop==COMPARE_OP &&
+ (codestr[nexti+1]==6 ||
+ codestr[nexti+1]==7)) ||
+ nextop == GET_ITER) && ISBASICBLOCK(blocks, h, i + 2))) {
+ h = fold_tuple_on_constants(codestr, h, i+2, opcode,
+ consts, CONST_STACK_LASTN(j), j);
+ if (h >= 0) {
+ CONST_STACK_POP(j);
+ CONST_STACK_PUSH_OP(h);
+ }
+ break;
+ }
}
- if (codestr[i+3] != UNPACK_SEQUENCE ||
- !ISBASICBLOCK(blocks,i,6) ||
- j != GETARG(codestr, i+3) ||
+ if (nextop != UNPACK_SEQUENCE ||
+ !ISBASICBLOCK(blocks, op_start, i + 2) ||
+ j != get_arg(codestr, nexti) ||
opcode == BUILD_SET)
- continue;
- if (j == 1) {
- memset(codestr+i, NOP, 6);
+ break;
+ if (j < 2) {
+ memset(codestr+op_start, NOP, nexti - op_start + 2);
} else if (j == 2) {
- codestr[i] = ROT_TWO;
- memset(codestr+i+1, NOP, 5);
+ codestr[op_start] = ROT_TWO;
+ codestr[op_start + 1] = 0;
+ memset(codestr + op_start + 2, NOP, nexti - op_start);
CONST_STACK_RESET();
} else if (j == 3) {
- codestr[i] = ROT_THREE;
- codestr[i+1] = ROT_TWO;
- memset(codestr+i+2, NOP, 4);
+ codestr[op_start] = ROT_THREE;
+ codestr[op_start + 1] = 0;
+ codestr[op_start + 2] = ROT_TWO;
+ codestr[op_start + 3] = 0;
+ memset(codestr + op_start + 4, NOP, nexti - op_start - 2);
CONST_STACK_RESET();
}
break;
/* Fold binary ops on constants.
- LOAD_CONST c1 LOAD_CONST c2 BINOP --> LOAD_CONST binop(c1,c2) */
+ LOAD_CONST c1 LOAD_CONST c2 BINOP --> LOAD_CONST binop(c1,c2) */
case BINARY_POWER:
case BINARY_MULTIPLY:
case BINARY_TRUE_DIVIDE:
@@ -530,35 +586,34 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case BINARY_AND:
case BINARY_XOR:
case BINARY_OR:
- /* NOTE: LOAD_CONST is saved at `i-2` since it has an arg
- while BINOP hasn't */
- h = CONST_STACK_OP_LASTN(2);
- assert((h >= 0 || CONST_STACK_LEN() < 2));
- if (h >= 0 &&
- ISBASICBLOCK(blocks, h, i-h+1) &&
- fold_binops_on_constants(&codestr[i], consts, CONST_STACK_LASTN(2))) {
- i -= 2;
- memset(&codestr[h], NOP, i - h);
- assert(codestr[i] == LOAD_CONST);
- CONST_STACK_POP(2);
- CONST_STACK_PUSH_OP(i);
+ if (CONST_STACK_LEN() < 2)
+ break;
+ h = lastn_const_start(codestr, op_start, 2);
+ if (ISBASICBLOCK(blocks, h, op_start)) {
+ h = fold_binops_on_constants(codestr, h, i+2, opcode,
+ consts, CONST_STACK_LASTN(2));
+ if (h >= 0) {
+ CONST_STACK_POP(2);
+ CONST_STACK_PUSH_OP(h);
+ }
}
break;
/* Fold unary ops on constants.
- LOAD_CONST c1 UNARY_OP --> LOAD_CONST unary_op(c) */
+ LOAD_CONST c1 UNARY_OP --> LOAD_CONST unary_op(c) */
case UNARY_NEGATIVE:
case UNARY_INVERT:
case UNARY_POSITIVE:
- h = CONST_STACK_OP_LASTN(1);
- assert((h >= 0 || CONST_STACK_LEN() < 1));
- if (h >= 0 &&
- ISBASICBLOCK(blocks, h, i-h+1) &&
- fold_unaryops_on_constants(&codestr[i-3], consts, CONST_STACK_TOP())) {
- i -= 2;
- assert(codestr[i] == LOAD_CONST);
- CONST_STACK_POP(1);
- CONST_STACK_PUSH_OP(i);
+ if (CONST_STACK_LEN() < 1)
+ break;
+ h = lastn_const_start(codestr, op_start, 1);
+ if (ISBASICBLOCK(blocks, h, op_start)) {
+ h = fold_unaryops_on_constants(codestr, h, i+2, opcode,
+ consts, *CONST_STACK_LASTN(1));
+ if (h >= 0) {
+ CONST_STACK_POP(1);
+ CONST_STACK_PUSH_OP(h);
+ }
}
break;
@@ -573,39 +628,36 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_FALSE_OR_POP z
--> x:JUMP_IF_FALSE_OR_POP z
x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_TRUE_OR_POP z
- --> x:POP_JUMP_IF_FALSE y+3
- where y+3 is the instruction following the second test.
+ --> x:POP_JUMP_IF_FALSE y+2
+ where y+2 is the instruction following the second test.
*/
case JUMP_IF_FALSE_OR_POP:
case JUMP_IF_TRUE_OR_POP:
- tgt = GETJUMPTGT(codestr, i);
+ h = get_arg(codestr, i);
+ tgt = find_op(codestr, h);
+
j = codestr[tgt];
if (CONDITIONAL_JUMP(j)) {
- /* NOTE: all possible jumps here are
- absolute! */
+ /* NOTE: all possible jumps here are absolute. */
if (JUMPS_ON_TRUE(j) == JUMPS_ON_TRUE(opcode)) {
- /* The second jump will be
- taken iff the first is. */
- tgttgt = GETJUMPTGT(codestr, tgt);
- /* The current opcode inherits
- its target's stack behaviour */
- codestr[i] = j;
- SETARG(codestr, i, tgttgt);
- goto reoptimize_current;
+ /* The second jump will be taken iff the first is.
+ The current opcode inherits its target's
+ stack effect */
+ h = set_arg(codestr, i, get_arg(codestr, tgt));
} else {
- /* The second jump is not taken
- if the first is (so jump past
- it), and all conditional
- jumps pop their argument when
- they're not taken (so change
- the first jump to pop its
- argument when it's taken). */
- if (JUMPS_ON_TRUE(opcode))
- codestr[i] = POP_JUMP_IF_TRUE;
- else
- codestr[i] = POP_JUMP_IF_FALSE;
- SETARG(codestr, i, (tgt + 3));
- goto reoptimize_current;
+ /* The second jump is not taken if the first is (so
+ jump past it), and all conditional jumps pop their
+ argument when they're not taken (so change the
+ first jump to pop its argument when it's taken). */
+ h = set_arg(codestr, i, tgt + 2);
+ j = opcode == JUMP_IF_TRUE_OR_POP ?
+ POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE;
+ }
+
+ if (h >= 0) {
+ nexti = h;
+ codestr[nexti] = j;
+ break;
}
}
/* Intentional fallthrough */
@@ -622,73 +674,73 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case SETUP_FINALLY:
case SETUP_WITH:
case SETUP_ASYNC_WITH:
- tgt = GETJUMPTGT(codestr, i);
+ h = GETJUMPTGT(codestr, i);
+ tgt = find_op(codestr, h);
/* Replace JUMP_* to a RETURN into just a RETURN */
if (UNCONDITIONAL_JUMP(opcode) &&
codestr[tgt] == RETURN_VALUE) {
- codestr[i] = RETURN_VALUE;
- memset(codestr+i+1, NOP, 2);
- continue;
+ codestr[op_start] = RETURN_VALUE;
+ codestr[op_start + 1] = 0;
+ memset(codestr + op_start + 2, NOP, i - op_start);
+ } else if (UNCONDITIONAL_JUMP(codestr[tgt])) {
+ j = GETJUMPTGT(codestr, tgt);
+ if (opcode == JUMP_FORWARD) { /* JMP_ABS can go backwards */
+ opcode = JUMP_ABSOLUTE;
+ } else if (!ABSOLUTE_JUMP(opcode)) {
+ if ((Py_ssize_t)j < i + 2) {
+ break; /* No backward relative jumps */
+ }
+ j -= i + 2; /* Calc relative jump addr */
+ }
+ copy_op_arg(codestr, op_start, opcode, j, i+2);
}
- if (!UNCONDITIONAL_JUMP(codestr[tgt]))
- continue;
- tgttgt = GETJUMPTGT(codestr, tgt);
- if (opcode == JUMP_FORWARD) /* JMP_ABS can go backwards */
- opcode = JUMP_ABSOLUTE;
- if (!ABSOLUTE_JUMP(opcode))
- tgttgt -= i + 3; /* Calc relative jump addr */
- if (tgttgt < 0) /* No backward relative jumps */
- continue;
- codestr[i] = opcode;
- SETARG(codestr, i, tgttgt);
- break;
-
- case EXTENDED_ARG:
- if (codestr[i+3] != MAKE_FUNCTION)
- goto exitUnchanged;
- /* don't visit MAKE_FUNCTION as GETARG will be wrong */
- i += 3;
break;
- /* Replace RETURN LOAD_CONST None RETURN with just RETURN */
- /* Remove unreachable JUMPs after RETURN */
+ /* Remove unreachable ops after RETURN */
case RETURN_VALUE:
- if (i+4 >= codelen)
- continue;
- if (codestr[i+4] == RETURN_VALUE &&
- ISBASICBLOCK(blocks,i,5))
- memset(codestr+i+1, NOP, 4);
- else if (UNCONDITIONAL_JUMP(codestr[i+1]) &&
- ISBASICBLOCK(blocks,i,4))
- memset(codestr+i+1, NOP, 3);
+ h = i + 2;
+ while (h + 2 < codelen && ISBASICBLOCK(blocks, i, h + 2)) {
+ h += 2;
+ }
+ if (h > i + 2) {
+ memset(codestr + i + 2, NOP, h - i);
+ nexti = find_op(codestr, h);
+ }
break;
}
}
- /* Fixup linenotab */
- for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
+ /* Fixup lnotab */
+ for (i=0, nops=0 ; i<codelen ; i += 2) {
assert(i - nops <= INT_MAX);
- addrmap[i] = (int)(i - nops);
+ /* original code offset => new code offset */
+ blocks[i] = i - nops;
if (codestr[i] == NOP)
- nops++;
+ nops += 2;
}
- cum_orig_line = 0;
- last_line = 0;
+ cum_orig_offset = 0;
+ last_offset = 0;
for (i=0 ; i < tabsiz ; i+=2) {
- cum_orig_line += lineno[i];
- new_line = addrmap[cum_orig_line];
- assert (new_line - last_line < 255);
- lineno[i] =((unsigned char)(new_line - last_line));
- last_line = new_line;
+ unsigned int offset_delta, new_offset;
+ cum_orig_offset += lnotab[i];
+ assert((cum_orig_offset & 1) == 0);
+ new_offset = blocks[cum_orig_offset];
+ offset_delta = new_offset - last_offset;
+ assert(offset_delta <= 255);
+ lnotab[i] = (unsigned char)offset_delta;
+ last_offset = new_offset;
}
/* Remove NOPs and fixup jump targets */
- for (i=0, h=0 ; i<codelen ; ) {
+ for (op_start=0, i=0, h=0 ; i<codelen ; i+=2, op_start=i) {
+ j = codestr[i+1];
+ while (codestr[i] == EXTENDED_ARG) {
+ i += 2;
+ j = j<<8 | codestr[i+1];
+ }
opcode = codestr[i];
switch (opcode) {
- case NOP:
- i++;
- continue;
+ case NOP:continue;
case JUMP_ABSOLUTE:
case CONTINUE_LOOP:
@@ -696,8 +748,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case POP_JUMP_IF_TRUE:
case JUMP_IF_FALSE_OR_POP:
case JUMP_IF_TRUE_OR_POP:
- j = addrmap[GETARG(codestr, i)];
- SETARG(codestr, i, j);
+ j = blocks[j];
break;
case FOR_ITER:
@@ -707,34 +758,31 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case SETUP_FINALLY:
case SETUP_WITH:
case SETUP_ASYNC_WITH:
- j = addrmap[GETARG(codestr, i) + i + 3] - addrmap[i] - 3;
- SETARG(codestr, i, j);
+ j = blocks[j + i + 2] - blocks[i] - 2;
break;
}
- adj = CODESIZE(opcode);
- while (adj--)
- codestr[h++] = codestr[i++];
+ nexti = i - op_start + 2;
+ if (instrsize(j) > nexti)
+ goto exitUnchanged;
+ /* If instrsize(j) < nexti, we'll emit EXTENDED_ARG 0 */
+ write_op_arg(codestr + h, opcode, j, nexti);
+ h += nexti;
}
- assert(h + nops == codelen);
+ assert(h + (Py_ssize_t)nops == codelen);
- code = PyBytes_FromStringAndSize((char *)codestr, h);
CONST_STACK_DELETE();
- PyMem_Free(addrmap);
- PyMem_Free(codestr);
PyMem_Free(blocks);
+ code = PyBytes_FromStringAndSize((char *)codestr, h);
+ PyMem_Free(codestr);
return code;
exitError:
code = NULL;
exitUnchanged:
- CONST_STACK_DELETE();
- if (blocks != NULL)
- PyMem_Free(blocks);
- if (addrmap != NULL)
- PyMem_Free(addrmap);
- if (codestr != NULL)
- PyMem_Free(codestr);
Py_XINCREF(code);
+ CONST_STACK_DELETE();
+ PyMem_Free(blocks);
+ PyMem_Free(codestr);
return code;
}
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ce52990..004feae 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -154,8 +154,8 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
return 0;
}
-/* Global initializations. Can be undone by Py_Finalize(). Don't
- call this twice without an intervening Py_Finalize() call. When
+/* Global initializations. Can be undone by Py_FinalizeEx(). Don't
+ call this twice without an intervening Py_FinalizeEx() call. When
initializations fail, a fatal error is issued and the function does
not return. On return, the first thread and interpreter state have
been created.
@@ -223,6 +223,8 @@ get_locale_encoding(void)
return NULL;
}
return get_codec_name(codeset);
+#elif defined(__ANDROID__)
+ return get_codec_name("UTF-8");
#else
PyErr_SetNone(PyExc_NotImplementedError);
return NULL;
@@ -252,6 +254,11 @@ import_init(PyInterpreterState *interp, PyObject *sysmod)
interp->importlib = importlib;
Py_INCREF(interp->importlib);
+ interp->import_func = PyDict_GetItemString(interp->builtins, "__import__");
+ if (interp->import_func == NULL)
+ Py_FatalError("Py_Initialize: __import__ not found");
+ Py_INCREF(interp->import_func);
+
/* Import the _imp module */
impmod = PyInit_imp();
if (impmod == NULL) {
@@ -327,11 +334,11 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
(void) PyThreadState_Swap(tstate);
#ifdef WITH_THREAD
- /* We can't call _PyEval_FiniThreads() in Py_Finalize because
+ /* We can't call _PyEval_FiniThreads() in Py_FinalizeEx because
destroying the GIL might fail when it is being referenced from
another running thread (see issue #9901).
Instead we destroy the previously created GIL here, which ensures
- that we can call Py_Initialize / Py_Finalize multiple times. */
+ that we can call Py_Initialize / Py_FinalizeEx multiple times. */
_PyEval_FiniThreads();
/* Auto-thread-state API */
@@ -477,28 +484,35 @@ file_is_closed(PyObject *fobj)
return r > 0;
}
-static void
+static int
flush_std_files(void)
{
PyObject *fout = _PySys_GetObjectId(&PyId_stdout);
PyObject *ferr = _PySys_GetObjectId(&PyId_stderr);
PyObject *tmp;
+ int status = 0;
if (fout != NULL && fout != Py_None && !file_is_closed(fout)) {
tmp = _PyObject_CallMethodId(fout, &PyId_flush, "");
- if (tmp == NULL)
+ if (tmp == NULL) {
PyErr_WriteUnraisable(fout);
+ status = -1;
+ }
else
Py_DECREF(tmp);
}
if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) {
tmp = _PyObject_CallMethodId(ferr, &PyId_flush, "");
- if (tmp == NULL)
+ if (tmp == NULL) {
PyErr_Clear();
+ status = -1;
+ }
else
Py_DECREF(tmp);
}
+
+ return status;
}
/* Undo the effect of Py_Initialize().
@@ -515,14 +529,15 @@ flush_std_files(void)
*/
-void
-Py_Finalize(void)
+int
+Py_FinalizeEx(void)
{
PyInterpreterState *interp;
PyThreadState *tstate;
+ int status = 0;
if (!initialized)
- return;
+ return status;
wait_for_thread_shutdown();
@@ -547,7 +562,9 @@ Py_Finalize(void)
initialized = 0;
/* Flush sys.stdout and sys.stderr */
- flush_std_files();
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
/* Disable signal handling */
PyOS_FiniInterrupts();
@@ -576,7 +593,9 @@ Py_Finalize(void)
PyImport_Cleanup();
/* Flush sys.stdout and sys.stderr (again, in case more was printed) */
- flush_std_files();
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
/* Collect final garbage. This disposes of cycles created by
* class definitions, for example.
@@ -612,7 +631,7 @@ Py_Finalize(void)
/* Debugging stuff */
#ifdef COUNT_ALLOCS
- dump_counts(stdout);
+ dump_counts(stderr);
#endif
/* dump hash stats */
_PyHash_Fini();
@@ -655,6 +674,7 @@ Py_Finalize(void)
PySlice_Fini();
_PyGC_Fini();
_PyRandom_Fini();
+ _PyArg_Fini();
/* Cleanup Unicode implementation */
_PyUnicode_Fini();
@@ -680,6 +700,7 @@ Py_Finalize(void)
/* Delete current thread. After this, many C API calls become crashy. */
PyThreadState_Swap(NULL);
+
PyInterpreterState_Delete(interp);
#ifdef Py_TRACE_REFS
@@ -690,12 +711,22 @@ Py_Finalize(void)
if (Py_GETENV("PYTHONDUMPREFS"))
_Py_PrintReferenceAddresses(stderr);
#endif /* Py_TRACE_REFS */
-#ifdef PYMALLOC_DEBUG
- if (Py_GETENV("PYTHONMALLOCSTATS"))
- _PyObject_DebugMallocStats(stderr);
+#ifdef WITH_PYMALLOC
+ if (_PyMem_PymallocEnabled()) {
+ char *opt = Py_GETENV("PYTHONMALLOCSTATS");
+ if (opt != NULL && *opt != '\0')
+ _PyObject_DebugMallocStats(stderr);
+ }
#endif
call_ll_exitfuncs();
+ return status;
+}
+
+void
+Py_Finalize(void)
+{
+ Py_FinalizeEx();
}
/* Create and initialize a new interpreter and thread, and return the
@@ -721,6 +752,12 @@ Py_NewInterpreter(void)
if (!initialized)
Py_FatalError("Py_NewInterpreter: call Py_Initialize first");
+#ifdef WITH_THREAD
+ /* Issue #10915, #15751: The GIL API doesn't work with multiple
+ interpreters: disable PyGILState_Check(). */
+ _PyGILState_check_enabled = 0;
+#endif
+
interp = PyInterpreterState_New();
if (interp == NULL)
return NULL;
@@ -777,7 +814,7 @@ Py_NewInterpreter(void)
if (initstdio() < 0)
Py_FatalError(
- "Py_Initialize: can't initialize sys standard streams");
+ "Py_Initialize: can't initialize sys standard streams");
initmain(interp);
if (!Py_NoSiteFlag)
initsite();
@@ -803,7 +840,7 @@ handle_error:
frames, and that it is its interpreter's only remaining thread.
It is a fatal error to violate these constraints.
- (Py_Finalize() doesn't have these constraints -- it zaps
+ (Py_FinalizeEx() doesn't have these constraints -- it zaps
everything, regardless.)
Locking: as above.
@@ -972,6 +1009,9 @@ is_valid_fd(int fd)
if (fd < 0 || !_PyVerify_fd(fd))
return 0;
_Py_BEGIN_SUPPRESS_IPH
+ /* Prefer dup() over fstat(). fstat() can require input/output whereas
+ dup() doesn't, there is a low risk of EMFILE/ENFILE at Python
+ startup. */
fd2 = dup(fd);
if (fd2 >= 0)
close(fd2);
@@ -982,8 +1022,8 @@ is_valid_fd(int fd)
/* returns Py_None if the fd is not valid */
static PyObject*
create_stdio(PyObject* io,
- int fd, int write_mode, char* name,
- char* encoding, char* errors)
+ int fd, int write_mode, const char* name,
+ const char* encoding, const char* errors)
{
PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res;
const char* mode;
@@ -1013,7 +1053,8 @@ create_stdio(PyObject* io,
mode = "rb";
buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi",
fd, mode, buffering,
- Py_None, Py_None, Py_None, 0);
+ Py_None, Py_None, /* encoding, errors */
+ Py_None, 0); /* newline, closefd */
if (buf == NULL)
goto error;
@@ -1243,25 +1284,11 @@ initstdio(void)
static void
_Py_FatalError_DumpTracebacks(int fd)
{
- PyThreadState *tstate;
-
-#ifdef WITH_THREAD
- /* PyGILState_GetThisThreadState() works even if the GIL was released */
- tstate = PyGILState_GetThisThreadState();
-#else
- tstate = PyThreadState_GET();
-#endif
- if (tstate == NULL) {
- /* _Py_DumpTracebackThreads() requires the thread state to display
- * frames */
- return;
- }
-
fputc('\n', stderr);
fflush(stderr);
/* display the current Python stack */
- _Py_DumpTracebackThreads(fd, tstate->interp, tstate);
+ _Py_DumpTracebackThreads(fd, NULL, NULL);
}
/* Print the current exception (if an exception is set) with its traceback,
@@ -1388,7 +1415,7 @@ exit:
/* Clean up and exit */
#ifdef WITH_THREAD
-#include "pythread.h"
+# include "pythread.h"
#endif
static void (*pyexitfunc)(void) = NULL;
@@ -1462,7 +1489,9 @@ call_ll_exitfuncs(void)
void
Py_Exit(int sts)
{
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ sts = 120;
+ }
exit(sts);
}
diff --git a/Python/pystate.c b/Python/pystate.c
index 24e20c3..25110b2 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -25,7 +25,7 @@ to avoid the expense of doing their own locking).
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
#endif
-#ifndef RTLD_LAZY
+#if !HAVE_DECL_RTLD_LAZY
#define RTLD_LAZY 1
#endif
#endif
@@ -34,6 +34,8 @@ to avoid the expense of doing their own locking).
extern "C" {
#endif
+int _PyGILState_check_enabled = 1;
+
#ifdef WITH_THREAD
#include "pythread.h"
static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
@@ -45,7 +47,7 @@ static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
GILState implementation
*/
static PyInterpreterState *autoInterpreterState = NULL;
-static int autoTLSkey = 0;
+static int autoTLSkey = -1;
#else
#define HEAD_INIT() /* Nothing */
#define HEAD_LOCK() /* Nothing */
@@ -88,8 +90,9 @@ PyInterpreterState_New(void)
interp->codecs_initialized = 0;
interp->fscodec_initialized = 0;
interp->importlib = NULL;
+ interp->import_func = NULL;
#ifdef HAVE_DLOPEN
-#ifdef RTLD_NOW
+#if HAVE_DECL_RTLD_NOW
interp->dlopenflags = RTLD_NOW;
#else
interp->dlopenflags = RTLD_LAZY;
@@ -126,6 +129,7 @@ PyInterpreterState_Clear(PyInterpreterState *interp)
Py_CLEAR(interp->builtins);
Py_CLEAR(interp->builtins_copy);
Py_CLEAR(interp->importlib);
+ Py_CLEAR(interp->import_func);
}
@@ -451,10 +455,10 @@ PyThreadState_DeleteCurrent()
if (tstate == NULL)
Py_FatalError(
"PyThreadState_DeleteCurrent: no current tstate");
- SET_TSTATE(NULL);
+ tstate_delete_common(tstate);
if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate)
PyThread_delete_key_value(autoTLSkey);
- tstate_delete_common(tstate);
+ SET_TSTATE(NULL);
PyEval_ReleaseLock();
}
#endif /* WITH_THREAD */
@@ -698,7 +702,7 @@ PyThreadState_IsCurrent(PyThreadState *tstate)
}
/* Internal initialization/finalization functions called by
- Py_Initialize/Py_Finalize
+ Py_Initialize/Py_FinalizeEx
*/
void
_PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
@@ -714,10 +718,17 @@ _PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
_PyGILState_NoteThreadState(t);
}
+PyInterpreterState *
+_PyGILState_GetInterpreterStateUnsafe(void)
+{
+ return autoInterpreterState;
+}
+
void
_PyGILState_Fini(void)
{
PyThread_delete_key(autoTLSkey);
+ autoTLSkey = -1;
autoInterpreterState = NULL;
}
@@ -786,8 +797,19 @@ PyGILState_GetThisThreadState(void)
int
PyGILState_Check(void)
{
- PyThreadState *tstate = GET_TSTATE();
- return tstate && (tstate == PyGILState_GetThisThreadState());
+ PyThreadState *tstate;
+
+ if (!_PyGILState_check_enabled)
+ return 1;
+
+ if (autoTLSkey == -1)
+ return 1;
+
+ tstate = GET_TSTATE();
+ if (tstate == NULL)
+ return 0;
+
+ return (tstate == PyGILState_GetThisThreadState());
}
PyGILState_STATE
diff --git a/Python/pystrtod.c b/Python/pystrtod.c
index 209c908..5f3af92 100644
--- a/Python/pystrtod.c
+++ b/Python/pystrtod.c
@@ -881,12 +881,12 @@ PyAPI_FUNC(char *) PyOS_double_to_string(double val,
#define OFS_E 2
/* The lengths of these are known to the code below, so don't change them */
-static char *lc_float_strings[] = {
+static const char * const lc_float_strings[] = {
"inf",
"nan",
"e",
};
-static char *uc_float_strings[] = {
+static const char * const uc_float_strings[] = {
"INF",
"NAN",
"E",
@@ -925,7 +925,8 @@ static char *
format_float_short(double d, char format_code,
int mode, int precision,
int always_add_sign, int add_dot_0_if_integer,
- int use_alt_formatting, char **float_strings, int *type)
+ int use_alt_formatting, const char * const *float_strings,
+ int *type)
{
char *buf = NULL;
char *p = NULL;
@@ -1176,7 +1177,7 @@ PyAPI_FUNC(char *) PyOS_double_to_string(double val,
int flags,
int *type)
{
- char **float_strings = lc_float_strings;
+ const char * const *float_strings = lc_float_strings;
int mode;
/* Validate format_code, and map upper and lower case. Compute the
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 7fbf06e..2968b34 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -431,7 +431,7 @@ static int
parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
int *lineno, int *offset, PyObject **text)
{
- long hold;
+ int hold;
PyObject *v;
_Py_IDENTIFIER(msg);
_Py_IDENTIFIER(filename);
@@ -464,11 +464,11 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
v = _PyObject_GetAttrId(err, &PyId_lineno);
if (!v)
goto finally;
- hold = PyLong_AsLong(v);
+ hold = _PyLong_AsInt(v);
Py_DECREF(v);
if (hold < 0 && PyErr_Occurred())
goto finally;
- *lineno = (int)hold;
+ *lineno = hold;
v = _PyObject_GetAttrId(err, &PyId_offset);
if (!v)
@@ -477,11 +477,11 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
*offset = -1;
Py_DECREF(v);
} else {
- hold = PyLong_AsLong(v);
+ hold = _PyLong_AsInt(v);
Py_DECREF(v);
if (hold < 0 && PyErr_Occurred())
goto finally;
- *offset = (int)hold;
+ *offset = hold;
}
v = _PyObject_GetAttrId(err, &PyId_text);
@@ -630,8 +630,13 @@ PyErr_PrintEx(int set_sys_last_vars)
}
hook = _PySys_GetObjectId(&PyId_excepthook);
if (hook) {
- PyObject *args = PyTuple_Pack(3, exception, v, tb);
- PyObject *result = PyEval_CallObject(hook, args);
+ PyObject* stack[3];
+ PyObject *result;
+
+ stack[0] = exception;
+ stack[1] = v;
+ stack[2] = tb;
+ result = _PyObject_FastCall(hook, stack, 3, NULL);
if (result == NULL) {
PyObject *exception2, *v2, *tb2;
if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
@@ -660,7 +665,6 @@ PyErr_PrintEx(int set_sys_last_vars)
Py_XDECREF(tb2);
}
Py_XDECREF(result);
- Py_XDECREF(args);
} else {
PySys_WriteStderr("sys.excepthook is missing\n");
PyErr_Display(exception, v, tb);
@@ -791,11 +795,11 @@ print_exception(PyObject *f, PyObject *value)
PyErr_Clear();
}
-static const char *cause_message =
+static const char cause_message[] =
"\nThe above exception was the direct cause "
"of the following exception:\n\n";
-static const char *context_message =
+static const char context_message[] =
"\nDuring handling of the above exception, "
"another exception occurred:\n\n";
@@ -1144,8 +1148,8 @@ PyParser_ASTFromString(const char *s, const char *filename_str, int start,
mod_ty
PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
- int start, char *ps1,
- char *ps2, PyCompilerFlags *flags, int *errcode,
+ int start, const char *ps1,
+ const char *ps2, PyCompilerFlags *flags, int *errcode,
PyArena *arena)
{
mod_ty mod;
@@ -1177,8 +1181,8 @@ PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
mod_ty
PyParser_ASTFromFile(FILE *fp, const char *filename_str, const char* enc,
- int start, char *ps1,
- char *ps2, PyCompilerFlags *flags, int *errcode,
+ int start, const char *ps1,
+ const char *ps2, PyCompilerFlags *flags, int *errcode,
PyArena *arena)
{
mod_ty mod;
diff --git a/Python/pytime.c b/Python/pytime.c
index 7f65824..81682ca 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -7,6 +7,11 @@
#include <mach/mach_time.h> /* mach_absolute_time(), mach_timebase_info() */
#endif
+#define _PyTime_check_mul_overflow(a, b) \
+ (assert(b > 0), \
+ (_PyTime_t)(a) < _PyTime_MIN / (_PyTime_t)(b) \
+ || _PyTime_MAX / (_PyTime_t)(b) < (_PyTime_t)(a))
+
/* To millisecond (10^-3) */
#define SEC_TO_MS 1000
@@ -38,7 +43,7 @@ _PyLong_AsTime_t(PyObject *obj)
val = PyLong_AsLongLong(obj);
#else
long val;
- assert(sizeof(time_t) <= sizeof(long));
+ Py_BUILD_ASSERT(sizeof(time_t) <= sizeof(long));
val = PyLong_AsLong(obj);
#endif
if (val == -1 && PyErr_Occurred()) {
@@ -55,55 +60,88 @@ _PyLong_FromTime_t(time_t t)
#if defined(HAVE_LONG_LONG) && SIZEOF_TIME_T == SIZEOF_LONG_LONG
return PyLong_FromLongLong((PY_LONG_LONG)t);
#else
- assert(sizeof(time_t) <= sizeof(long));
+ Py_BUILD_ASSERT(sizeof(time_t) <= sizeof(long));
return PyLong_FromLong((long)t);
#endif
}
+/* Round to nearest with ties going to nearest even integer
+ (_PyTime_ROUND_HALF_EVEN) */
+static double
+_PyTime_RoundHalfEven(double x)
+{
+ double rounded = round(x);
+ if (fabs(x-rounded) == 0.5)
+ /* halfway case: round to even */
+ rounded = 2.0*round(x/2.0);
+ return rounded;
+}
+
+static double
+_PyTime_Round(double x, _PyTime_round_t round)
+{
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ d = x;
+ if (round == _PyTime_ROUND_HALF_EVEN)
+ d = _PyTime_RoundHalfEven(d);
+ else if (round == _PyTime_ROUND_CEILING)
+ d = ceil(d);
+ else
+ d = floor(d);
+ return d;
+}
+
static int
-_PyTime_ObjectToDenominator(PyObject *obj, time_t *sec, long *numerator,
+_PyTime_DoubleToDenominator(double d, time_t *sec, long *numerator,
double denominator, _PyTime_round_t round)
{
- assert(denominator <= LONG_MAX);
- if (PyFloat_Check(obj)) {
- double d, intpart, err;
- /* volatile avoids unsafe optimization on float enabled by gcc -O3 */
- volatile double floatpart;
+ double intpart, err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double floatpart;
- d = PyFloat_AsDouble(obj);
- floatpart = modf(d, &intpart);
- if (floatpart < 0) {
- floatpart = 1.0 + floatpart;
- intpart -= 1.0;
- }
+ floatpart = modf(d, &intpart);
- floatpart *= denominator;
- if (round == _PyTime_ROUND_CEILING) {
- floatpart = ceil(floatpart);
- if (floatpart >= denominator) {
- floatpart = 0.0;
- intpart += 1.0;
- }
- }
- else {
- floatpart = floor(floatpart);
- }
+ floatpart *= denominator;
+ floatpart = _PyTime_Round(floatpart, round);
+ if (floatpart >= denominator) {
+ floatpart -= denominator;
+ intpart += 1.0;
+ }
+ else if (floatpart < 0) {
+ floatpart += denominator;
+ intpart -= 1.0;
+ }
+ assert(0.0 <= floatpart && floatpart < denominator);
- *sec = (time_t)intpart;
- err = intpart - (double)*sec;
- if (err <= -1.0 || err >= 1.0) {
- error_time_t_overflow();
- return -1;
- }
+ *sec = (time_t)intpart;
+ *numerator = (long)floatpart;
- *numerator = (long)floatpart;
- return 0;
+ err = intpart - (double)*sec;
+ if (err <= -1.0 || err >= 1.0) {
+ error_time_t_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+static int
+_PyTime_ObjectToDenominator(PyObject *obj, time_t *sec, long *numerator,
+ double denominator, _PyTime_round_t round)
+{
+ assert(denominator <= (double)LONG_MAX);
+
+ if (PyFloat_Check(obj)) {
+ double d = PyFloat_AsDouble(obj);
+ return _PyTime_DoubleToDenominator(d, sec, numerator,
+ denominator, round);
}
else {
*sec = _PyLong_AsTime_t(obj);
+ *numerator = 0;
if (*sec == (time_t)-1 && PyErr_Occurred())
return -1;
- *numerator = 0;
return 0;
}
}
@@ -112,13 +150,12 @@ int
_PyTime_ObjectToTime_t(PyObject *obj, time_t *sec, _PyTime_round_t round)
{
if (PyFloat_Check(obj)) {
- double d, intpart, err;
+ double intpart, err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
d = PyFloat_AsDouble(obj);
- if (round == _PyTime_ROUND_CEILING)
- d = ceil(d);
- else
- d = floor(d);
+ d = _PyTime_Round(d, round);
(void)modf(d, &intpart);
*sec = (time_t)intpart;
@@ -141,14 +178,20 @@ int
_PyTime_ObjectToTimespec(PyObject *obj, time_t *sec, long *nsec,
_PyTime_round_t round)
{
- return _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
+ int res;
+ res = _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
+ assert(0 <= *nsec && *nsec < SEC_TO_NS);
+ return res;
}
int
_PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec,
_PyTime_round_t round)
{
- return _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
+ int res;
+ res = _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
+ assert(0 <= *usec && *usec < SEC_TO_US);
+ return res;
}
static void
@@ -162,12 +205,15 @@ _PyTime_t
_PyTime_FromSeconds(int seconds)
{
_PyTime_t t;
+ t = (_PyTime_t)seconds;
/* ensure that integer overflow cannot happen, int type should have 32
bits, whereas _PyTime_t type has at least 64 bits (SEC_TO_MS takes 30
bits). */
- assert((seconds >= 0 && seconds <= _PyTime_MAX / SEC_TO_NS)
- || (seconds < 0 && seconds >= _PyTime_MIN / SEC_TO_NS));
- t = (_PyTime_t)seconds * SEC_TO_NS;
+ Py_BUILD_ASSERT(INT_MAX <= _PyTime_MAX / SEC_TO_NS);
+ Py_BUILD_ASSERT(INT_MIN >= _PyTime_MIN / SEC_TO_NS);
+ assert((t >= 0 && t <= _PyTime_MAX / SEC_TO_NS)
+ || (t < 0 && t >= _PyTime_MIN / SEC_TO_NS));
+ t *= SEC_TO_NS;
return t;
}
@@ -175,7 +221,7 @@ _PyTime_t
_PyTime_FromNanoseconds(PY_LONG_LONG ns)
{
_PyTime_t t;
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
t = Py_SAFE_DOWNCAST(ns, PY_LONG_LONG, _PyTime_t);
return t;
}
@@ -187,12 +233,15 @@ _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts, int raise)
_PyTime_t t;
int res = 0;
- t = (_PyTime_t)ts->tv_sec * SEC_TO_NS;
- if (t / SEC_TO_NS != ts->tv_sec) {
+ Py_BUILD_ASSERT(sizeof(ts->tv_sec) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)ts->tv_sec;
+
+ if (_PyTime_check_mul_overflow(t, SEC_TO_NS)) {
if (raise)
_PyTime_overflow();
res = -1;
}
+ t = t * SEC_TO_NS;
t += ts->tv_nsec;
@@ -206,12 +255,15 @@ _PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv, int raise)
_PyTime_t t;
int res = 0;
- t = (_PyTime_t)tv->tv_sec * SEC_TO_NS;
- if (t / SEC_TO_NS != tv->tv_sec) {
+ Py_BUILD_ASSERT(sizeof(tv->tv_sec) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)tv->tv_sec;
+
+ if (_PyTime_check_mul_overflow(t, SEC_TO_NS)) {
if (raise)
_PyTime_overflow();
res = -1;
}
+ t = t * SEC_TO_NS;
t += (_PyTime_t)tv->tv_usec * US_TO_NS;
@@ -221,50 +273,59 @@ _PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv, int raise)
#endif
static int
-_PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round,
- long to_nanoseconds)
+_PyTime_FromFloatObject(_PyTime_t *t, double value, _PyTime_round_t round,
+ long unit_to_ns)
{
- if (PyFloat_Check(obj)) {
- /* volatile avoids unsafe optimization on float enabled by gcc -O3 */
- volatile double d, err;
+ double err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
- /* convert to a number of nanoseconds */
- d = PyFloat_AsDouble(obj);
- d *= to_nanoseconds;
+ /* convert to a number of nanoseconds */
+ d = value;
+ d *= (double)unit_to_ns;
+ d = _PyTime_Round(d, round);
- if (round == _PyTime_ROUND_CEILING)
- d = ceil(d);
- else
- d = floor(d);
+ *t = (_PyTime_t)d;
+ err = d - (double)*t;
+ if (fabs(err) >= 1.0) {
+ _PyTime_overflow();
+ return -1;
+ }
+ return 0;
+}
- *t = (_PyTime_t)d;
- err = d - (double)*t;
- if (fabs(err) >= 1.0) {
- _PyTime_overflow();
- return -1;
- }
- return 0;
+static int
+_PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round,
+ long unit_to_ns)
+{
+ if (PyFloat_Check(obj)) {
+ double d;
+ d = PyFloat_AsDouble(obj);
+ return _PyTime_FromFloatObject(t, d, round, unit_to_ns);
}
else {
#ifdef HAVE_LONG_LONG
PY_LONG_LONG sec;
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+
sec = PyLong_AsLongLong(obj);
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
#else
long sec;
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+
sec = PyLong_AsLong(obj);
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
#endif
if (sec == -1 && PyErr_Occurred()) {
if (PyErr_ExceptionMatches(PyExc_OverflowError))
_PyTime_overflow();
return -1;
}
- *t = sec * to_nanoseconds;
- if (*t / to_nanoseconds != sec) {
+
+ if (_PyTime_check_mul_overflow(sec, unit_to_ns)) {
_PyTime_overflow();
return -1;
}
+ *t = sec * unit_to_ns;
return 0;
}
}
@@ -284,22 +345,31 @@ _PyTime_FromMillisecondsObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t roun
double
_PyTime_AsSecondsDouble(_PyTime_t t)
{
- _PyTime_t sec, ns;
- /* Divide using integers to avoid rounding issues on the integer part.
- 1e-9 cannot be stored exactly in IEEE 64-bit. */
- sec = t / SEC_TO_NS;
- ns = t % SEC_TO_NS;
- return (double)sec + (double)ns * 1e-9;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ if (t % SEC_TO_NS == 0) {
+ _PyTime_t secs;
+ /* Divide using integers to avoid rounding issues on the integer part.
+ 1e-9 cannot be stored exactly in IEEE 64-bit. */
+ secs = t / SEC_TO_NS;
+ d = (double)secs;
+ }
+ else {
+ d = (double)t;
+ d /= 1e9;
+ }
+ return d;
}
PyObject *
_PyTime_AsNanosecondsObject(_PyTime_t t)
{
#ifdef HAVE_LONG_LONG
- assert(sizeof(PY_LONG_LONG) >= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) >= sizeof(_PyTime_t));
return PyLong_FromLongLong((PY_LONG_LONG)t);
#else
- assert(sizeof(long) >= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(long) >= sizeof(_PyTime_t));
return PyLong_FromLong((long)t);
#endif
}
@@ -309,7 +379,20 @@ _PyTime_Divide(const _PyTime_t t, const _PyTime_t k,
const _PyTime_round_t round)
{
assert(k > 1);
- if (round == _PyTime_ROUND_CEILING) {
+ if (round == _PyTime_ROUND_HALF_EVEN) {
+ _PyTime_t x, r, abs_r;
+ x = t / k;
+ r = t % k;
+ abs_r = Py_ABS(r);
+ if (abs_r > k / 2 || (abs_r == k / 2 && (Py_ABS(x) & 1))) {
+ if (t >= 0)
+ x++;
+ else
+ x--;
+ }
+ return x;
+ }
+ else if (round == _PyTime_ROUND_CEILING) {
if (t >= 0)
return (t + k - 1) / k;
else
@@ -373,7 +456,7 @@ static int
_PyTime_AsTimevalStruct_impl(_PyTime_t t, struct timeval *tv,
_PyTime_round_t round, int raise)
{
- _PyTime_t secs;
+ _PyTime_t secs, secs2;
int us;
int res;
@@ -386,7 +469,8 @@ _PyTime_AsTimevalStruct_impl(_PyTime_t t, struct timeval *tv,
#endif
tv->tv_usec = us;
- if (res < 0 || (_PyTime_t)tv->tv_sec != secs) {
+ secs2 = (_PyTime_t)tv->tv_sec;
+ if (res < 0 || secs2 != secs) {
if (raise)
error_time_t_overflow();
return -1;
@@ -424,6 +508,7 @@ _PyTime_AsTimevalTime_t(_PyTime_t t, time_t *p_secs, int *us,
return 0;
}
+
#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_KQUEUE)
int
_PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)
@@ -437,13 +522,13 @@ _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)
secs -= 1;
}
ts->tv_sec = (time_t)secs;
+ assert(0 <= nsec && nsec < SEC_TO_NS);
+ ts->tv_nsec = nsec;
+
if ((_PyTime_t)ts->tv_sec != secs) {
- _PyTime_overflow();
+ error_time_t_overflow();
return -1;
}
- ts->tv_nsec = nsec;
-
- assert(0 <= ts->tv_nsec && ts->tv_nsec <= 999999999);
return 0;
}
#endif
@@ -557,19 +642,20 @@ _PyTime_GetSystemClockWithInfo(_PyTime_t *t, _Py_clock_info_t *info)
return pygettimeofday(t, info, 1);
}
-
static int
pymonotonic(_PyTime_t *tp, _Py_clock_info_t *info, int raise)
{
#if defined(MS_WINDOWS)
- ULONGLONG result;
+ ULONGLONG ticks;
+ _PyTime_t t;
assert(info == NULL || raise);
- result = GetTickCount64();
+ ticks = GetTickCount64();
+ Py_BUILD_ASSERT(sizeof(ticks) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)ticks;
- *tp = result * MS_TO_NS;
- if (*tp / MS_TO_NS != result) {
+ if (_PyTime_check_mul_overflow(t, MS_TO_NS)) {
if (raise) {
_PyTime_overflow();
return -1;
@@ -577,6 +663,7 @@ pymonotonic(_PyTime_t *tp, _Py_clock_info_t *info, int raise)
/* Hello, time traveler! */
assert(0);
}
+ *tp = t * MS_TO_NS;
if (info) {
DWORD timeAdjustment, timeIncrement;
@@ -689,8 +776,5 @@ _PyTime_Init(void)
if (_PyTime_GetMonotonicClockWithInfo(&t, NULL) < 0)
return -1;
- /* check that _PyTime_FromSeconds() cannot overflow */
- assert(INT_MAX <= _PyTime_MAX / SEC_TO_NS);
- assert(INT_MIN >= _PyTime_MIN / SEC_TO_NS);
return 0;
}
diff --git a/Python/random.c b/Python/random.c
index 3119872..6fdce64 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -1,6 +1,9 @@
#include "Python.h"
#ifdef MS_WINDOWS
# include <windows.h>
+/* All sample MSDN wincrypt programs include the header below. It is at least
+ * required with Min GW. */
+# include <wincrypt.h>
#else
# include <fcntl.h>
# ifdef HAVE_SYS_STAT_H
@@ -36,10 +39,9 @@ win32_urandom_init(int raise)
return 0;
error:
- if (raise)
+ if (raise) {
PyErr_SetFromWindowsErr(0);
- else
- Py_FatalError("Failed to initialize Windows random API (CryptoGen)");
+ }
return -1;
}
@@ -52,8 +54,9 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
if (hCryptProv == 0)
{
- if (win32_urandom_init(raise) == -1)
+ if (win32_urandom_init(raise) == -1) {
return -1;
+ }
}
while (size > 0)
@@ -62,11 +65,9 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
if (!CryptGenRandom(hCryptProv, (DWORD)chunk, buffer))
{
/* CryptGenRandom() failed */
- if (raise)
+ if (raise) {
PyErr_SetFromWindowsErr(0);
- else
- Py_FatalError("Failed to initialized the randomized hash "
- "secret using CryptoGen)");
+ }
return -1;
}
buffer += chunk;
@@ -76,36 +77,35 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
}
/* Issue #25003: Don't use getentropy() on Solaris (available since
- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */
+ Solaris 11.3), it is blocking whereas os.urandom() should not block. */
#elif defined(HAVE_GETENTROPY) && !defined(sun)
#define PY_GETENTROPY 1
/* Fill buffer with size pseudo-random bytes generated by getentropy().
Return 0 on success, or raise an exception and return -1 on error.
- If fatal is nonzero, call Py_FatalError() instead of raising an exception
- on error. */
+ If raise is zero, don't raise an exception on error. */
static int
-py_getentropy(unsigned char *buffer, Py_ssize_t size, int fatal)
+py_getentropy(char *buffer, Py_ssize_t size, int raise)
{
while (size > 0) {
Py_ssize_t len = Py_MIN(size, 256);
int res;
- if (!fatal) {
+ if (raise) {
Py_BEGIN_ALLOW_THREADS
res = getentropy(buffer, len);
Py_END_ALLOW_THREADS
-
- if (res < 0) {
- PyErr_SetFromErrno(PyExc_OSError);
- return -1;
- }
}
else {
res = getentropy(buffer, len);
- if (res < 0)
- Py_FatalError("getentropy() failed");
+ }
+
+ if (res < 0) {
+ if (raise) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
}
buffer += len;
@@ -119,24 +119,34 @@ py_getentropy(unsigned char *buffer, Py_ssize_t size, int fatal)
#if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL)
#define PY_GETRANDOM 1
+/* Call getrandom()
+ - Return 1 on success
+ - Return 0 if getrandom() syscall is not available (fails with ENOSYS).
+ - Raise an exception (if raise is non-zero) and return -1 on error:
+ getrandom() failed with EINTR and the Python signal handler raised an
+ exception, or getrandom() failed with a different error. */
static int
py_getrandom(void *buffer, Py_ssize_t size, int raise)
{
/* Is getrandom() supported by the running kernel?
- * Need Linux kernel 3.17 or newer, or Solaris 11.3 or newer */
+ Need Linux kernel 3.17 or newer, or Solaris 11.3 or newer */
static int getrandom_works = 1;
/* getrandom() on Linux will block if called before the kernel has
- * initialized the urandom entropy pool. This will cause Python
- * to hang on startup if called very early in the boot process -
- * see https://bugs.python.org/issue26839. To avoid this, use the
- * GRND_NONBLOCK flag. */
+ initialized the urandom entropy pool. This will cause Python
+ to hang on startup if called very early in the boot process -
+ see https://bugs.python.org/issue26839. To avoid this, use the
+ GRND_NONBLOCK flag. */
const int flags = GRND_NONBLOCK;
+
+ char *dest;
long n;
- if (!getrandom_works)
+ if (!getrandom_works) {
return 0;
+ }
+ dest = buffer;
while (0 < size) {
#ifdef sun
/* Issue #26735: On Solaris, getrandom() is limited to returning up
@@ -150,23 +160,23 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
#ifdef HAVE_GETRANDOM
if (raise) {
Py_BEGIN_ALLOW_THREADS
- n = getrandom(buffer, n, flags);
+ n = getrandom(dest, n, flags);
Py_END_ALLOW_THREADS
}
else {
- n = getrandom(buffer, n, flags);
+ n = getrandom(dest, n, flags);
}
#else
/* On Linux, use the syscall() function because the GNU libc doesn't
- * expose the Linux getrandom() syscall yet. See:
- * https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
+ expose the Linux getrandom() syscall yet. See:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
if (raise) {
Py_BEGIN_ALLOW_THREADS
- n = syscall(SYS_getrandom, buffer, n, flags);
+ n = syscall(SYS_getrandom, dest, n, flags);
Py_END_ALLOW_THREADS
}
else {
- n = syscall(SYS_getrandom, buffer, n, flags);
+ n = syscall(SYS_getrandom, dest, n, flags);
}
#endif
@@ -177,34 +187,34 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
}
if (errno == EAGAIN) {
/* If we failed with EAGAIN, the entropy pool was
- * uninitialized. In this case, we return failure to fall
- * back to reading from /dev/urandom.
- *
- * Note: In this case the data read will not be random so
- * should not be used for cryptographic purposes. Retaining
- * the existing semantics for practical purposes. */
+ uninitialized. In this case, we return failure to fall
+ back to reading from /dev/urandom.
+
+ Note: In this case the data read will not be random so
+ should not be used for cryptographic purposes. Retaining
+ the existing semantics for practical purposes. */
getrandom_works = 0;
return 0;
}
if (errno == EINTR) {
- if (PyErr_CheckSignals()) {
- if (!raise)
- Py_FatalError("getrandom() interrupted by a signal");
- return -1;
+ if (raise) {
+ if (PyErr_CheckSignals()) {
+ return -1;
+ }
}
- /* retry getrandom() */
+
+ /* retry getrandom() if it was interrupted by a signal */
continue;
}
- if (raise)
+ if (raise) {
PyErr_SetFromErrno(PyExc_OSError);
- else
- Py_FatalError("getrandom() failed");
+ }
return -1;
}
- buffer += n;
+ dest += n;
size -= n;
}
return 1;
@@ -218,126 +228,118 @@ static struct {
} urandom_cache = { -1 };
-/* Read size bytes from /dev/urandom into buffer.
- Call Py_FatalError() on error. */
-static void
-dev_urandom_noraise(unsigned char *buffer, Py_ssize_t size)
-{
- int fd;
- Py_ssize_t n;
-
- assert (0 < size);
+/* Read 'size' random bytes from getrandom(). Fall back on reading from
+ /dev/urandom if getrandom() is not available.
-#ifdef PY_GETRANDOM
- if (py_getrandom(buffer, size, 0) == 1)
- return;
- /* getrandom() is not supported by the running kernel, fall back
- * on reading /dev/urandom */
-#endif
-
- fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
- if (fd < 0)
- Py_FatalError("Failed to open /dev/urandom");
-
- while (0 < size)
- {
- do {
- n = read(fd, buffer, (size_t)size);
- } while (n < 0 && errno == EINTR);
- if (n <= 0)
- {
- /* stop on error or if read(size) returned 0 */
- Py_FatalError("Failed to read bytes from /dev/urandom");
- break;
- }
- buffer += n;
- size -= n;
- }
- close(fd);
-}
-
-/* Read size bytes from /dev/urandom into buffer.
- Return 0 on success, raise an exception and return -1 on error. */
+ Return 0 on success. Raise an exception (if raise is non-zero) and return -1
+ on error. */
static int
-dev_urandom_python(char *buffer, Py_ssize_t size)
+dev_urandom(char *buffer, Py_ssize_t size, int raise)
{
int fd;
Py_ssize_t n;
- struct _Py_stat_struct st;
#ifdef PY_GETRANDOM
int res;
#endif
- if (size <= 0)
- return 0;
+ assert(size > 0);
#ifdef PY_GETRANDOM
- res = py_getrandom(buffer, size, 1);
- if (res < 0)
+ res = py_getrandom(buffer, size, raise);
+ if (res < 0) {
return -1;
- if (res == 1)
+ }
+ if (res == 1) {
return 0;
+ }
/* getrandom() is not supported by the running kernel, fall back
- * on reading /dev/urandom */
+ on reading /dev/urandom */
#endif
- if (urandom_cache.fd >= 0) {
- /* Does the fd point to the same thing as before? (issue #21207) */
- if (_Py_fstat_noraise(urandom_cache.fd, &st)
- || st.st_dev != urandom_cache.st_dev
- || st.st_ino != urandom_cache.st_ino) {
- /* Something changed: forget the cached fd (but don't close it,
- since it probably points to something important for some
- third-party code). */
- urandom_cache.fd = -1;
- }
- }
- if (urandom_cache.fd >= 0)
- fd = urandom_cache.fd;
- else {
- fd = _Py_open("/dev/urandom", O_RDONLY);
- if (fd < 0) {
- if (errno == ENOENT || errno == ENXIO ||
- errno == ENODEV || errno == EACCES)
- PyErr_SetString(PyExc_NotImplementedError,
- "/dev/urandom (or equivalent) not found");
- /* otherwise, keep the OSError exception raised by _Py_open() */
- return -1;
- }
+
+ if (raise) {
+ struct _Py_stat_struct st;
+
if (urandom_cache.fd >= 0) {
- /* urandom_fd was initialized by another thread while we were
- not holding the GIL, keep it. */
- close(fd);
- fd = urandom_cache.fd;
+ /* Does the fd point to the same thing as before? (issue #21207) */
+ if (_Py_fstat_noraise(urandom_cache.fd, &st)
+ || st.st_dev != urandom_cache.st_dev
+ || st.st_ino != urandom_cache.st_ino) {
+ /* Something changed: forget the cached fd (but don't close it,
+ since it probably points to something important for some
+ third-party code). */
+ urandom_cache.fd = -1;
+ }
}
+ if (urandom_cache.fd >= 0)
+ fd = urandom_cache.fd;
else {
- if (_Py_fstat(fd, &st)) {
- close(fd);
+ fd = _Py_open("/dev/urandom", O_RDONLY);
+ if (fd < 0) {
+ if (errno == ENOENT || errno == ENXIO ||
+ errno == ENODEV || errno == EACCES)
+ PyErr_SetString(PyExc_NotImplementedError,
+ "/dev/urandom (or equivalent) not found");
+ /* otherwise, keep the OSError exception raised by _Py_open() */
return -1;
}
+ if (urandom_cache.fd >= 0) {
+ /* urandom_fd was initialized by another thread while we were
+ not holding the GIL, keep it. */
+ close(fd);
+ fd = urandom_cache.fd;
+ }
else {
- urandom_cache.fd = fd;
- urandom_cache.st_dev = st.st_dev;
- urandom_cache.st_ino = st.st_ino;
+ if (_Py_fstat(fd, &st)) {
+ close(fd);
+ return -1;
+ }
+ else {
+ urandom_cache.fd = fd;
+ urandom_cache.st_dev = st.st_dev;
+ urandom_cache.st_ino = st.st_ino;
+ }
}
}
- }
- do {
- n = _Py_read(fd, buffer, (size_t)size);
- if (n == -1)
- return -1;
- if (n == 0) {
- PyErr_Format(PyExc_RuntimeError,
- "Failed to read %zi bytes from /dev/urandom",
- size);
+ do {
+ n = _Py_read(fd, buffer, (size_t)size);
+ if (n == -1)
+ return -1;
+ if (n == 0) {
+ PyErr_Format(PyExc_RuntimeError,
+ "Failed to read %zi bytes from /dev/urandom",
+ size);
+ return -1;
+ }
+
+ buffer += n;
+ size -= n;
+ } while (0 < size);
+ }
+ else {
+ fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
+ if (fd < 0) {
return -1;
}
- buffer += n;
- size -= n;
- } while (0 < size);
+ while (0 < size)
+ {
+ do {
+ n = read(fd, buffer, (size_t)size);
+ } while (n < 0 && errno == EINTR);
+ if (n <= 0) {
+ /* stop on error or if read(size) returned 0 */
+ close(fd);
+ return -1;
+ }
+
+ buffer += n;
+ size -= n;
+ }
+ close(fd);
+ }
return 0;
}
@@ -373,38 +375,53 @@ lcg_urandom(unsigned int x0, unsigned char *buffer, size_t size)
}
}
-/* Fill buffer with size pseudo-random bytes from the operating system random
- number generator (RNG). It is suitable for most cryptographic purposes
- except long living private keys for asymmetric encryption.
-
- Return 0 on success, raise an exception and return -1 on error. */
-int
-_PyOS_URandom(void *buffer, Py_ssize_t size)
+/* If raise is zero:
+ - Don't raise exceptions on error
+ - Don't call PyErr_CheckSignals() on EINTR (retry directly the interrupted
+ syscall)
+ - Don't release the GIL to call syscalls. */
+static int
+pyurandom(void *buffer, Py_ssize_t size, int raise)
{
if (size < 0) {
- PyErr_Format(PyExc_ValueError,
- "negative argument not allowed");
+ if (raise) {
+ PyErr_Format(PyExc_ValueError,
+ "negative argument not allowed");
+ }
return -1;
}
- if (size == 0)
+
+ if (size == 0) {
return 0;
+ }
#ifdef MS_WINDOWS
- return win32_urandom((unsigned char *)buffer, size, 1);
+ return win32_urandom((unsigned char *)buffer, size, raise);
#elif defined(PY_GETENTROPY)
- return py_getentropy(buffer, size, 0);
+ return py_getentropy(buffer, size, raise);
#else
- return dev_urandom_python((char*)buffer, size);
+ return dev_urandom(buffer, size, raise);
#endif
}
+/* Fill buffer with size pseudo-random bytes from the operating system random
+ number generator (RNG). It is suitable for most cryptographic purposes
+ except long living private keys for asymmetric encryption.
+
+ Return 0 on success, raise an exception and return -1 on error. */
+int
+_PyOS_URandom(void *buffer, Py_ssize_t size)
+{
+ return pyurandom(buffer, size, 1);
+}
+
void
_PyRandom_Init(void)
{
char *env;
unsigned char *secret = (unsigned char *)&_Py_HashSecret.uc;
Py_ssize_t secret_size = sizeof(_Py_HashSecret_t);
- assert(secret_size == sizeof(_Py_HashSecret.uc));
+ Py_BUILD_ASSERT(sizeof(_Py_HashSecret_t) == sizeof(_Py_HashSecret.uc));
if (_Py_HashSecret_Initialized)
return;
@@ -436,13 +453,14 @@ _PyRandom_Init(void)
}
}
else {
-#ifdef MS_WINDOWS
- (void)win32_urandom(secret, secret_size, 0);
-#elif defined(PY_GETENTROPY)
- (void)py_getentropy(secret, secret_size, 1);
-#else
- dev_urandom_noraise(secret, secret_size);
-#endif
+ int res;
+
+ /* _PyRandom_Init() is called very early in the Python initialization
+ and so exceptions cannot be used (use raise=0). */
+ res = pyurandom(secret, secret_size, 0);
+ if (res < 0) {
+ Py_FatalError("failed to get random numbers to initialize Python");
+ }
}
}
diff --git a/Python/symtable.c b/Python/symtable.c
index 1591a20..3f03184 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -160,7 +160,7 @@ PyTypeObject PySTEntry_Type = {
};
static int symtable_analyze(struct symtable *st);
-static int symtable_warn(struct symtable *st, char *msg, int lineno);
+static int symtable_warn(struct symtable *st, const char *msg, int lineno);
static int symtable_enter_block(struct symtable *st, identifier name,
_Py_block_ty block, void *ast, int lineno,
int col_offset);
@@ -908,7 +908,7 @@ symtable_analyze(struct symtable *st)
static int
-symtable_warn(struct symtable *st, char *msg, int lineno)
+symtable_warn(struct symtable *st, const char *msg, int lineno)
{
PyObject *message = PyUnicode_FromString(msg);
if (message == NULL)
@@ -1447,6 +1447,15 @@ symtable_visit_expr(struct symtable *st, expr_ty e)
VISIT_SEQ(st, expr, e->v.Call.args);
VISIT_SEQ_WITH_NULL(st, keyword, e->v.Call.keywords);
break;
+ case FormattedValue_kind:
+ VISIT(st, expr, e->v.FormattedValue.value);
+ if (e->v.FormattedValue.format_spec)
+ VISIT(st, expr, e->v.FormattedValue.format_spec);
+ break;
+ case JoinedStr_kind:
+ VISIT_SEQ(st, expr, e->v.JoinedStr.values);
+ break;
+ case Constant_kind:
case Num_kind:
case Str_kind:
case Bytes_kind:
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 8d7e05a..be8e164 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -20,6 +20,7 @@ Data members:
#include "pythread.h"
#include "osdefs.h"
+#include <locale.h>
#ifdef MS_WINDOWS
#define WIN32_LEAN_AND_MEAN
@@ -33,7 +34,6 @@ extern const char *PyWin_DLLVersionString;
#endif
#ifdef HAVE_LANGINFO_H
-#include <locale.h>
#include <langinfo.h>
#endif
@@ -346,8 +346,10 @@ static PyObject *whatstrings[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
static int
trace_init(void)
{
- static char *whatnames[7] = {"call", "exception", "line", "return",
- "c_call", "c_exception", "c_return"};
+ static const char * const whatnames[7] = {
+ "call", "exception", "line", "return",
+ "c_call", "c_exception", "c_return"
+ };
PyObject *name;
int i;
for (i = 0; i < 7; ++i) {
@@ -366,34 +368,25 @@ static PyObject *
call_trampoline(PyObject* callback,
PyFrameObject *frame, int what, PyObject *arg)
{
- PyObject *args;
- PyObject *whatstr;
PyObject *result;
+ PyObject *stack[3];
- args = PyTuple_New(3);
- if (args == NULL)
- return NULL;
- if (PyFrame_FastToLocalsWithError(frame) < 0)
+ if (PyFrame_FastToLocalsWithError(frame) < 0) {
return NULL;
+ }
- Py_INCREF(frame);
- whatstr = whatstrings[what];
- Py_INCREF(whatstr);
- if (arg == NULL)
- arg = Py_None;
- Py_INCREF(arg);
- PyTuple_SET_ITEM(args, 0, (PyObject *)frame);
- PyTuple_SET_ITEM(args, 1, whatstr);
- PyTuple_SET_ITEM(args, 2, arg);
+ stack[0] = (PyObject *)frame;
+ stack[1] = whatstrings[what];
+ stack[2] = (arg != NULL) ? arg : Py_None;
/* call the Python-level function */
- result = PyEval_CallObject(callback, args);
+ result = _PyObject_FastCall(callback, stack, 3, NULL);
+
PyFrame_LocalsToFast(frame, 1);
- if (result == NULL)
+ if (result == NULL) {
PyTraceBack_Here(frame);
+ }
- /* cleanup */
- Py_DECREF(args);
return result;
}
@@ -434,10 +427,7 @@ trace_trampoline(PyObject *self, PyFrameObject *frame,
return -1;
}
if (result != Py_None) {
- PyObject *temp = frame->f_trace;
- frame->f_trace = NULL;
- Py_XDECREF(temp);
- frame->f_trace = result;
+ Py_XSETREF(frame->f_trace, result);
}
else {
Py_DECREF(result);
@@ -1152,8 +1142,10 @@ static PyObject *
sys_debugmallocstats(PyObject *self, PyObject *args)
{
#ifdef WITH_PYMALLOC
- _PyObject_DebugMallocStats(stderr);
- fputc('\n', stderr);
+ if (_PyMem_PymallocEnabled()) {
+ _PyObject_DebugMallocStats(stderr);
+ fputc('\n', stderr);
+ }
#endif
_PyObject_DebugTypeStats(stderr);
@@ -1643,15 +1635,11 @@ make_version_info(void)
/* sys.implementation values */
#define NAME "cpython"
const char *_PySys_ImplName = NAME;
-#define QUOTE(arg) #arg
-#define STRIFY(name) QUOTE(name)
-#define MAJOR STRIFY(PY_MAJOR_VERSION)
-#define MINOR STRIFY(PY_MINOR_VERSION)
+#define MAJOR Py_STRINGIFY(PY_MAJOR_VERSION)
+#define MINOR Py_STRINGIFY(PY_MINOR_VERSION)
#define TAG NAME "-" MAJOR MINOR
const char *_PySys_ImplCacheTag = TAG;
#undef NAME
-#undef QUOTE
-#undef STRIFY
#undef MAJOR
#undef MINOR
#undef TAG
@@ -1696,6 +1684,16 @@ make_impl_info(PyObject *version_info)
if (res < 0)
goto error;
+#ifdef MULTIARCH
+ value = PyUnicode_FromString(MULTIARCH);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "_multiarch", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+#endif
+
/* dict ready */
ns = _PyNamespace_New(impl_info);
@@ -2114,7 +2112,7 @@ PySys_SetArgv(int argc, wchar_t **argv)
static int
sys_pyfile_write_unicode(PyObject *unicode, PyObject *file)
{
- PyObject *writer = NULL, *args = NULL, *result = NULL;
+ PyObject *writer = NULL, *result = NULL;
int err;
if (file == NULL)
@@ -2124,11 +2122,7 @@ sys_pyfile_write_unicode(PyObject *unicode, PyObject *file)
if (writer == NULL)
goto error;
- args = PyTuple_Pack(1, unicode);
- if (args == NULL)
- goto error;
-
- result = PyEval_CallObject(writer, args);
+ result = _PyObject_FastCall(writer, &unicode, 1, NULL);
if (result == NULL) {
goto error;
} else {
@@ -2140,7 +2134,6 @@ error:
err = -1;
finally:
Py_XDECREF(writer);
- Py_XDECREF(args);
Py_XDECREF(result);
return err;
}
diff --git a/Python/traceback.c b/Python/traceback.c
index 941d1cb..b33156e 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -412,6 +412,11 @@ tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit)
{
int err = 0;
long depth = 0;
+ PyObject *last_file = NULL;
+ int last_line = -1;
+ PyObject *last_name = NULL;
+ long cnt = 0;
+ PyObject *line;
PyTracebackObject *tb1 = tb;
while (tb1 != NULL) {
depth++;
@@ -419,16 +424,41 @@ tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit)
}
while (tb != NULL && err == 0) {
if (depth <= limit) {
- err = tb_displayline(f,
- tb->tb_frame->f_code->co_filename,
- tb->tb_lineno,
- tb->tb_frame->f_code->co_name);
+ if (last_file != NULL &&
+ tb->tb_frame->f_code->co_filename == last_file &&
+ last_line != -1 && tb->tb_lineno == last_line &&
+ last_name != NULL &&
+ tb->tb_frame->f_code->co_name == last_name) {
+ cnt++;
+ } else {
+ if (cnt > 3) {
+ line = PyUnicode_FromFormat(
+ " [Previous line repeated %d more times]\n", cnt-3);
+ err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ }
+ last_file = tb->tb_frame->f_code->co_filename;
+ last_line = tb->tb_lineno;
+ last_name = tb->tb_frame->f_code->co_name;
+ cnt = 0;
+ }
+ if (cnt < 3)
+ err = tb_displayline(f,
+ tb->tb_frame->f_code->co_filename,
+ tb->tb_lineno,
+ tb->tb_frame->f_code->co_name);
}
depth--;
tb = tb->tb_next;
if (err == 0)
err = PyErr_CheckSignals();
}
+ if (cnt > 3) {
+ line = PyUnicode_FromFormat(
+ " [Previous line repeated %d more times]\n", cnt-3);
+ err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ }
return err;
}
@@ -479,40 +509,26 @@ PyTraceBack_Print(PyObject *v, PyObject *f)
This function is signal safe. */
-static void
-reverse_string(char *text, const size_t len)
-{
- char tmp;
- size_t i, j;
- if (len == 0)
- return;
- for (i=0, j=len-1; i < j; i++, j--) {
- tmp = text[i];
- text[i] = text[j];
- text[j] = tmp;
- }
-}
-
-/* Format an integer in range [0; 999999] to decimal,
- and write it into the file fd.
-
- This function is signal safe. */
-
-static void
-dump_decimal(int fd, int value)
+void
+_Py_DumpDecimal(int fd, unsigned long value)
{
- char buffer[7];
- int len;
- if (value < 0 || 999999 < value)
- return;
- len = 0;
+ /* maximum number of characters required for output of %lld or %p.
+ We need at most ceil(log10(256)*SIZEOF_LONG_LONG) digits,
+ plus 1 for the null byte. 53/22 is an upper bound for log10(256). */
+ char buffer[1 + (sizeof(unsigned long)*53-1) / 22 + 1];
+ char *ptr, *end;
+
+ end = &buffer[Py_ARRAY_LENGTH(buffer) - 1];
+ ptr = end;
+ *ptr = '\0';
do {
- buffer[len] = '0' + (value % 10);
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = '0' + (value % 10);
value /= 10;
- len++;
} while (value);
- reverse_string(buffer, len);
- _Py_write_noraise(fd, buffer, len);
+
+ _Py_write_noraise(fd, ptr, end - ptr);
}
/* Format an integer in range [0; 0xffffffff] to hexadecimal of 'width' digits,
@@ -520,27 +536,31 @@ dump_decimal(int fd, int value)
This function is signal safe. */
-static void
-dump_hexadecimal(int fd, unsigned long value, int width)
+void
+_Py_DumpHexadecimal(int fd, unsigned long value, Py_ssize_t width)
{
- int len;
- char buffer[sizeof(unsigned long) * 2 + 1];
- len = 0;
+ char buffer[sizeof(unsigned long) * 2 + 1], *ptr, *end;
+ const Py_ssize_t size = Py_ARRAY_LENGTH(buffer) - 1;
+
+ if (width > size)
+ width = size;
+ /* it's ok if width is negative */
+
+ end = &buffer[size];
+ ptr = end;
+ *ptr = '\0';
do {
- buffer[len] = Py_hexdigits[value & 15];
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = Py_hexdigits[value & 15];
value >>= 4;
- len++;
- } while (len < width || value);
- reverse_string(buffer, len);
- _Py_write_noraise(fd, buffer, len);
-}
-
-/* Write an unicode object into the file fd using ascii+backslashreplace.
+ } while ((end - ptr) < width || value);
- This function is signal safe. */
+ _Py_write_noraise(fd, ptr, end - ptr);
+}
-static void
-dump_ascii(int fd, PyObject *text)
+void
+_Py_DumpASCII(int fd, PyObject *text)
{
PyASCIIObject *ascii = (PyASCIIObject *)text;
Py_ssize_t i, size;
@@ -550,32 +570,36 @@ dump_ascii(int fd, PyObject *text)
wchar_t *wstr = NULL;
Py_UCS4 ch;
+ if (!PyUnicode_Check(text))
+ return;
+
size = ascii->length;
kind = ascii->state.kind;
- if (ascii->state.compact) {
+ if (kind == PyUnicode_WCHAR_KIND) {
+ wstr = ((PyASCIIObject *)text)->wstr;
+ if (wstr == NULL)
+ return;
+ size = ((PyCompactUnicodeObject *)text)->wstr_length;
+ }
+ else if (ascii->state.compact) {
if (ascii->state.ascii)
data = ((PyASCIIObject*)text) + 1;
else
data = ((PyCompactUnicodeObject*)text) + 1;
}
- else if (kind != PyUnicode_WCHAR_KIND) {
+ else {
data = ((PyUnicodeObject *)text)->data.any;
if (data == NULL)
return;
}
- else {
- wstr = ((PyASCIIObject *)text)->wstr;
- if (wstr == NULL)
- return;
- size = ((PyCompactUnicodeObject *)text)->wstr_length;
- }
if (MAX_STRING_LENGTH < size) {
size = MAX_STRING_LENGTH;
truncated = 1;
}
- else
+ else {
truncated = 0;
+ }
for (i=0; i < size; i++) {
if (kind != PyUnicode_WCHAR_KIND)
@@ -589,19 +613,20 @@ dump_ascii(int fd, PyObject *text)
}
else if (ch <= 0xff) {
PUTS(fd, "\\x");
- dump_hexadecimal(fd, ch, 2);
+ _Py_DumpHexadecimal(fd, ch, 2);
}
else if (ch <= 0xffff) {
PUTS(fd, "\\u");
- dump_hexadecimal(fd, ch, 4);
+ _Py_DumpHexadecimal(fd, ch, 4);
}
else {
PUTS(fd, "\\U");
- dump_hexadecimal(fd, ch, 8);
+ _Py_DumpHexadecimal(fd, ch, 8);
}
}
- if (truncated)
+ if (truncated) {
PUTS(fd, "...");
+ }
}
/* Write a frame into the file fd: "File "xxx", line xxx in xxx".
@@ -620,7 +645,7 @@ dump_frame(int fd, PyFrameObject *frame)
&& PyUnicode_Check(code->co_filename))
{
PUTS(fd, "\"");
- dump_ascii(fd, code->co_filename);
+ _Py_DumpASCII(fd, code->co_filename);
PUTS(fd, "\"");
} else {
PUTS(fd, "???");
@@ -629,14 +654,21 @@ dump_frame(int fd, PyFrameObject *frame)
/* PyFrame_GetLineNumber() was introduced in Python 2.7.0 and 3.2.0 */
lineno = PyCode_Addr2Line(code, frame->f_lasti);
PUTS(fd, ", line ");
- dump_decimal(fd, lineno);
+ if (lineno >= 0) {
+ _Py_DumpDecimal(fd, (unsigned long)lineno);
+ }
+ else {
+ PUTS(fd, "???");
+ }
PUTS(fd, " in ");
if (code != NULL && code->co_name != NULL
- && PyUnicode_Check(code->co_name))
- dump_ascii(fd, code->co_name);
- else
+ && PyUnicode_Check(code->co_name)) {
+ _Py_DumpASCII(fd, code->co_name);
+ }
+ else {
PUTS(fd, "???");
+ }
PUTS(fd, "\n");
}
@@ -692,7 +724,9 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
PUTS(fd, "Current thread 0x");
else
PUTS(fd, "Thread 0x");
- dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(unsigned long)*2);
+ _Py_DumpHexadecimal(fd,
+ (unsigned long)tstate->thread_id,
+ sizeof(unsigned long) * 2);
PUTS(fd, " (most recent call first):\n");
}
@@ -704,11 +738,56 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
handlers if signals were received. */
const char*
_Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
- PyThreadState *current_thread)
+ PyThreadState *current_tstate)
{
PyThreadState *tstate;
unsigned int nthreads;
+#ifdef WITH_THREAD
+ if (current_tstate == NULL) {
+ /* _Py_DumpTracebackThreads() is called from signal handlers by
+ faulthandler.
+
+ SIGSEGV, SIGFPE, SIGABRT, SIGBUS and SIGILL are synchronous signals
+ and are thus delivered to the thread that caused the fault. Get the
+ Python thread state of the current thread.
+
+ PyThreadState_Get() doesn't give the state of the thread that caused
+ the fault if the thread released the GIL, and so this function
+ cannot be used. Read the thread local storage (TLS) instead: call
+ PyGILState_GetThisThreadState(). */
+ current_tstate = PyGILState_GetThisThreadState();
+ }
+
+ if (interp == NULL) {
+ if (current_tstate == NULL) {
+ interp = _PyGILState_GetInterpreterStateUnsafe();
+ if (interp == NULL) {
+ /* We need the interpreter state to get Python threads */
+ return "unable to get the interpreter state";
+ }
+ }
+ else {
+ interp = current_tstate->interp;
+ }
+ }
+#else
+ if (current_tstate == NULL) {
+ /* Call _PyThreadState_UncheckedGet() instead of PyThreadState_Get()
+ to not fail with a fatal error if the thread state is NULL. */
+ current_tstate = _PyThreadState_UncheckedGet();
+ }
+
+ if (interp == NULL) {
+ if (current_tstate == NULL) {
+ /* We need the interpreter state to get Python threads */
+ return "unable to get the interpreter state";
+ }
+ interp = current_tstate->interp;
+ }
+#endif
+ assert(interp != NULL);
+
/* Get the current interpreter from the current thread */
tstate = PyInterpreterState_ThreadHead(interp);
if (tstate == NULL)
@@ -726,7 +805,7 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
PUTS(fd, "...\n");
break;
}
- write_thread_id(fd, tstate, tstate == current_thread);
+ write_thread_id(fd, tstate, tstate == current_tstate);
dump_traceback(fd, tstate, 0);
tstate = PyThreadState_Next(tstate);
nthreads++;
diff --git a/Python/wordcode_helpers.h b/Python/wordcode_helpers.h
new file mode 100644
index 0000000..b61ba33
--- /dev/null
+++ b/Python/wordcode_helpers.h
@@ -0,0 +1,38 @@
+/* This file contains code shared by the compiler and the peephole
+ optimizer.
+ */
+
+/* Minimum number of bytes necessary to encode instruction with EXTENDED_ARGs */
+static int
+instrsize(unsigned int oparg)
+{
+ return oparg <= 0xff ? 2 :
+ oparg <= 0xffff ? 4 :
+ oparg <= 0xffffff ? 6 :
+ 8;
+}
+
+/* Spits out op/oparg pair using ilen bytes. codestr should be pointed at the
+ desired location of the first EXTENDED_ARG */
+static void
+write_op_arg(unsigned char *codestr, unsigned char opcode,
+ unsigned int oparg, int ilen)
+{
+ switch (ilen) {
+ case 8:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 24) & 0xff;
+ case 6:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 16) & 0xff;
+ case 4:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 8) & 0xff;
+ case 2:
+ *codestr++ = opcode;
+ *codestr++ = oparg & 0xff;
+ break;
+ default:
+ assert(0);
+ }
+}