[Python-checkins] bpo-42129: Add support for resources in namespaces (GH-24670)

jaraco webhook-mailer at python.org
Thu Mar 4 13:43:11 EST 2021


https://github.com/python/cpython/commit/67148254146948041a77d8a2989f41b88cdb2f99
commit: 67148254146948041a77d8a2989f41b88cdb2f99
branch: master
author: Jason R. Coombs <jaraco at jaraco.com>
committer: jaraco <jaraco at jaraco.com>
date: 2021-03-04T13:43:00-05:00
summary:

bpo-42129: Add support for resources in namespaces (GH-24670)

* Unify behavior in ResourceReaderDefaultsTests and align with the behavior found in importlib_resources.
* Equip NamespaceLoader with a NamespaceReader.
* Apply changes from importlib_resources 5.0.4

files:
A Lib/importlib/_adapters.py
A Lib/test/test_importlib/namespacedata01/binary.file
A Lib/test/test_importlib/namespacedata01/utf-16.file
A Lib/test/test_importlib/namespacedata01/utf-8.file
A Lib/test/test_importlib/test_reader.py
A Lib/test/test_importlib/update-zips.py
A Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst
M Lib/importlib/_bootstrap_external.py
M Lib/importlib/_common.py
M Lib/importlib/abc.py
M Lib/importlib/readers.py
M Lib/importlib/resources.py
M Lib/test/test_importlib/test_abc.py
M Lib/test/test_importlib/test_files.py
M Lib/test/test_importlib/test_open.py
M Lib/test/test_importlib/test_path.py
M Lib/test/test_importlib/test_read.py
M Lib/test/test_importlib/test_resource.py
M Lib/test/test_importlib/zipdata01/ziptestdata.zip
M Lib/test/test_importlib/zipdata02/ziptestdata.zip
M Python/importlib_external.h

diff --git a/Lib/importlib/_adapters.py b/Lib/importlib/_adapters.py
new file mode 100644
index 0000000000000..eedde49dd03ad
--- /dev/null
+++ b/Lib/importlib/_adapters.py
@@ -0,0 +1,82 @@
+from contextlib import suppress
+
+from . import abc
+
+
+class SpecLoaderAdapter:
+    """
+    Adapt a package spec to adapt the underlying loader.
+    """
+
+    def __init__(self, spec, adapter=lambda spec: spec.loader):
+        self.spec = spec
+        self.loader = adapter(spec)
+
+    def __getattr__(self, name):
+        return getattr(self.spec, name)
+
+
+class TraversableResourcesLoader:
+    """
+    Adapt a loader to provide TraversableResources.
+    """
+
+    def __init__(self, spec):
+        self.spec = spec
+
+    def get_resource_reader(self, name):
+        return DegenerateFiles(self.spec)._native()
+
+
+class DegenerateFiles:
+    """
+    Adapter for an existing or non-existant resource reader
+    to provide a degenerate .files().
+    """
+
+    class Path(abc.Traversable):
+        def iterdir(self):
+            return iter(())
+
+        def is_dir(self):
+            return False
+
+        is_file = exists = is_dir  # type: ignore
+
+        def joinpath(self, other):
+            return DegenerateFiles.Path()
+
+        def name(self):
+            return ''
+
+        def open(self):
+            raise ValueError()
+
+    def __init__(self, spec):
+        self.spec = spec
+
+    @property
+    def _reader(self):
+        with suppress(AttributeError):
+            return self.spec.loader.get_resource_reader(self.spec.name)
+
+    def _native(self):
+        """
+        Return the native reader if it supports files().
+        """
+        reader = self._reader
+        return reader if hasattr(reader, 'files') else self
+
+    def __getattr__(self, attr):
+        return getattr(self._reader, attr)
+
+    def files(self):
+        return DegenerateFiles.Path()
+
+
+def wrap_spec(package):
+    """
+    Construct a package spec with traversable compatibility
+    on the spec/loader/reader.
+    """
+    return SpecLoaderAdapter(package.__spec__, TraversableResourcesLoader)
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
index 3396d5d2b0692..2dab45d480a11 100644
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -1259,6 +1259,10 @@ def load_module(self, fullname):
         # Warning implemented in _load_module_shim().
         return _bootstrap._load_module_shim(self, fullname)
 
+    def get_resource_reader(self, module):
+        from importlib.readers import NamespaceReader
+        return NamespaceReader(self._path)
+
 
 # Finders #####################################################################
 
diff --git a/Lib/importlib/_common.py b/Lib/importlib/_common.py
index 71ce6af8cc985..03383048ad736 100644
--- a/Lib/importlib/_common.py
+++ b/Lib/importlib/_common.py
@@ -9,6 +9,8 @@
 from typing import Union, Any, Optional
 from .abc import ResourceReader
 
+from ._adapters import wrap_spec
+
 Package = Union[types.ModuleType, str]
 
 
@@ -43,18 +45,15 @@ def get_resource_reader(package):
     # zipimport.zipimporter does not support weak references, resulting in a
     # TypeError.  That seems terrible.
     spec = package.__spec__
-    reader = getattr(spec.loader, 'get_resource_reader', None)
+    reader = getattr(spec.loader, 'get_resource_reader', None)  # type: ignore
     if reader is None:
         return None
-    return reader(spec.name)
+    return reader(spec.name)  # type: ignore
 
 
 def resolve(cand):
     # type: (Package) -> types.ModuleType
-    return (
-        cand if isinstance(cand, types.ModuleType)
-        else importlib.import_module(cand)
-        )
+    return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
 
 
 def get_package(package):
@@ -64,7 +63,7 @@ def get_package(package):
     Raise an exception if the resolved module is not a package.
     """
     resolved = resolve(package)
-    if resolved.__spec__.submodule_search_locations is None:
+    if wrap_spec(resolved).submodule_search_locations is None:
         raise TypeError('{!r} is not a package'.format(package))
     return resolved
 
@@ -74,7 +73,7 @@ def from_package(package):
     Return a Traversable object for the given package.
 
     """
-    spec = package.__spec__
+    spec = wrap_spec(package)
     reader = spec.loader.get_resource_reader(spec.name)
     return reader.files()
 
diff --git a/Lib/importlib/abc.py b/Lib/importlib/abc.py
index 55e70889f22f7..4be51e2346282 100644
--- a/Lib/importlib/abc.py
+++ b/Lib/importlib/abc.py
@@ -14,6 +14,7 @@
 from ._abc import Loader
 import abc
 import warnings
+from typing import BinaryIO, Iterable, Text
 from typing import Protocol, runtime_checkable
 
 
@@ -297,49 +298,45 @@ def set_data(self, path, data):
 
 
 class ResourceReader(metaclass=abc.ABCMeta):
-
-    """Abstract base class to provide resource-reading support.
-
-    Loaders that support resource reading are expected to implement
-    the ``get_resource_reader(fullname)`` method and have it either return None
-    or an object compatible with this ABC.
-    """
+    """Abstract base class for loaders to provide resource reading support."""
 
     @abc.abstractmethod
-    def open_resource(self, resource):
+    def open_resource(self, resource: Text) -> BinaryIO:
         """Return an opened, file-like object for binary reading.
 
-        The 'resource' argument is expected to represent only a file name
-        and thus not contain any subdirectory components.
-
+        The 'resource' argument is expected to represent only a file name.
         If the resource cannot be found, FileNotFoundError is raised.
         """
+        # This deliberately raises FileNotFoundError instead of
+        # NotImplementedError so that if this method is accidentally called,
+        # it'll still do the right thing.
         raise FileNotFoundError
 
     @abc.abstractmethod
-    def resource_path(self, resource):
+    def resource_path(self, resource: Text) -> Text:
         """Return the file system path to the specified resource.
 
-        The 'resource' argument is expected to represent only a file name
-        and thus not contain any subdirectory components.
-
+        The 'resource' argument is expected to represent only a file name.
         If the resource does not exist on the file system, raise
         FileNotFoundError.
         """
+        # This deliberately raises FileNotFoundError instead of
+        # NotImplementedError so that if this method is accidentally called,
+        # it'll still do the right thing.
         raise FileNotFoundError
 
     @abc.abstractmethod
-    def is_resource(self, name):
-        """Return True if the named 'name' is consider a resource."""
+    def is_resource(self, path: Text) -> bool:
+        """Return True if the named 'path' is a resource.
+
+        Files are resources, directories are not.
+        """
         raise FileNotFoundError
 
     @abc.abstractmethod
-    def contents(self):
-        """Return an iterable of strings over the contents of the package."""
-        return []
-
-
-_register(ResourceReader, machinery.SourceFileLoader)
+    def contents(self) -> Iterable[str]:
+        """Return an iterable of entries in `package`."""
+        raise FileNotFoundError
 
 
 @runtime_checkable
@@ -355,26 +352,28 @@ def iterdir(self):
         Yield Traversable objects in self
         """
 
-    @abc.abstractmethod
     def read_bytes(self):
         """
         Read contents of self as bytes
         """
+        with self.open('rb') as strm:
+            return strm.read()
 
-    @abc.abstractmethod
     def read_text(self, encoding=None):
         """
-        Read contents of self as bytes
+        Read contents of self as text
         """
+        with self.open(encoding=encoding) as strm:
+            return strm.read()
 
     @abc.abstractmethod
-    def is_dir(self):
+    def is_dir(self) -> bool:
         """
         Return True if self is a dir
         """
 
     @abc.abstractmethod
-    def is_file(self):
+    def is_file(self) -> bool:
         """
         Return True if self is a file
         """
@@ -385,11 +384,11 @@ def joinpath(self, child):
         Return Traversable child in self
         """
 
-    @abc.abstractmethod
     def __truediv__(self, child):
         """
         Return Traversable child in self
         """
+        return self.joinpath(child)
 
     @abc.abstractmethod
     def open(self, mode='r', *args, **kwargs):
@@ -402,14 +401,18 @@ def open(self, mode='r', *args, **kwargs):
         """
 
     @abc.abstractproperty
-    def name(self):
-        # type: () -> str
+    def name(self) -> str:
         """
         The base name of this object without any parent references.
         """
 
 
 class TraversableResources(ResourceReader):
+    """
+    The required interface for providing traversable
+    resources.
+    """
+
     @abc.abstractmethod
     def files(self):
         """Return a Traversable object for the loaded package."""
diff --git a/Lib/importlib/readers.py b/Lib/importlib/readers.py
index 74a63e4a7535b..535c8283e9081 100644
--- a/Lib/importlib/readers.py
+++ b/Lib/importlib/readers.py
@@ -1,8 +1,13 @@
+import collections
 import zipfile
 import pathlib
 from . import abc
 
 
+def remove_duplicates(items):
+    return iter(collections.OrderedDict.fromkeys(items))
+
+
 class FileReader(abc.TraversableResources):
     def __init__(self, loader):
         self.path = pathlib.Path(loader.path).parent
@@ -39,3 +44,80 @@ def is_resource(self, path):
 
     def files(self):
         return zipfile.Path(self.archive, self.prefix)
+
+
+class MultiplexedPath(abc.Traversable):
+    """
+    Given a series of Traversable objects, implement a merged
+    version of the interface across all objects. Useful for
+    namespace packages which may be multihomed at a single
+    name.
+    """
+
+    def __init__(self, *paths):
+        self._paths = list(map(pathlib.Path, remove_duplicates(paths)))
+        if not self._paths:
+            message = 'MultiplexedPath must contain at least one path'
+            raise FileNotFoundError(message)
+        if not all(path.is_dir() for path in self._paths):
+            raise NotADirectoryError('MultiplexedPath only supports directories')
+
+    def iterdir(self):
+        visited = []
+        for path in self._paths:
+            for file in path.iterdir():
+                if file.name in visited:
+                    continue
+                visited.append(file.name)
+                yield file
+
+    def read_bytes(self):
+        raise FileNotFoundError(f'{self} is not a file')
+
+    def read_text(self, *args, **kwargs):
+        raise FileNotFoundError(f'{self} is not a file')
+
+    def is_dir(self):
+        return True
+
+    def is_file(self):
+        return False
+
+    def joinpath(self, child):
+        # first try to find child in current paths
+        for file in self.iterdir():
+            if file.name == child:
+                return file
+        # if it does not exist, construct it with the first path
+        return self._paths[0] / child
+
+    __truediv__ = joinpath
+
+    def open(self, *args, **kwargs):
+        raise FileNotFoundError('{} is not a file'.format(self))
+
+    def name(self):
+        return self._paths[0].name
+
+    def __repr__(self):
+        return 'MultiplexedPath({})'.format(
+            ', '.join("'{}'".format(path) for path in self._paths)
+        )
+
+
+class NamespaceReader(abc.TraversableResources):
+    def __init__(self, namespace_path):
+        if 'NamespacePath' not in str(namespace_path):
+            raise ValueError('Invalid path')
+        self.path = MultiplexedPath(*list(namespace_path))
+
+    def resource_path(self, resource):
+        """
+        Return the file system path to prevent
+        `resources.path()` from creating a temporary
+        copy.
+        """
+        return str(self.path.joinpath(resource))
+
+    def files(self):
+        return self.path
diff --git a/Lib/importlib/resources.py b/Lib/importlib/resources.py
index 4169171b189cc..db0e0c0eeff80 100644
--- a/Lib/importlib/resources.py
+++ b/Lib/importlib/resources.py
@@ -3,8 +3,10 @@
 
 from . import _common
 from ._common import as_file, files
+from .abc import ResourceReader
 from contextlib import suppress
 from importlib.abc import ResourceLoader
+from importlib.machinery import ModuleSpec
 from io import BytesIO, TextIOWrapper
 from pathlib import Path
 from types import ModuleType
@@ -18,6 +20,7 @@
 __all__ = [
     'Package',
     'Resource',
+    'ResourceReader',
     'as_file',
     'contents',
     'files',
@@ -27,7 +30,7 @@
     'path',
     'read_binary',
     'read_text',
-    ]
+]
 
 
 Package = Union[str, ModuleType]
@@ -41,36 +44,45 @@ def open_binary(package: Package, resource: Resource) -> BinaryIO:
     reader = _common.get_resource_reader(package)
     if reader is not None:
         return reader.open_resource(resource)
-    absolute_package_path = os.path.abspath(
-        package.__spec__.origin or 'non-existent file')
-    package_path = os.path.dirname(absolute_package_path)
-    full_path = os.path.join(package_path, resource)
-    try:
-        return open(full_path, mode='rb')
-    except OSError:
-        # Just assume the loader is a resource loader; all the relevant
-        # importlib.machinery loaders are and an AttributeError for
-        # get_data() will make it clear what is needed from the loader.
-        loader = cast(ResourceLoader, package.__spec__.loader)
-        data = None
-        if hasattr(package.__spec__.loader, 'get_data'):
-            with suppress(OSError):
-                data = loader.get_data(full_path)
-        if data is None:
-            package_name = package.__spec__.name
-            message = '{!r} resource not found in {!r}'.format(
-                resource, package_name)
-            raise FileNotFoundError(message)
-        return BytesIO(data)
-
-
-def open_text(package: Package,
-              resource: Resource,
-              encoding: str = 'utf-8',
-              errors: str = 'strict') -> TextIO:
+    spec = cast(ModuleSpec, package.__spec__)
+    # Using pathlib doesn't work well here due to the lack of 'strict'
+    # argument for pathlib.Path.resolve() prior to Python 3.6.
+    if spec.submodule_search_locations is not None:
+        paths = spec.submodule_search_locations
+    elif spec.origin is not None:
+        paths = [os.path.dirname(os.path.abspath(spec.origin))]
+
+    for package_path in paths:
+        full_path = os.path.join(package_path, resource)
+        try:
+            return open(full_path, mode='rb')
+        except OSError:
+            # Just assume the loader is a resource loader; all the relevant
+            # importlib.machinery loaders are and an AttributeError for
+            # get_data() will make it clear what is needed from the loader.
+            loader = cast(ResourceLoader, spec.loader)
+            data = None
+            if hasattr(spec.loader, 'get_data'):
+                with suppress(OSError):
+                    data = loader.get_data(full_path)
+            if data is not None:
+                return BytesIO(data)
+
+    raise FileNotFoundError(
+        '{!r} resource not found in {!r}'.format(resource, spec.name)
+    )
+
+
+def open_text(
+    package: Package,
+    resource: Resource,
+    encoding: str = 'utf-8',
+    errors: str = 'strict',
+) -> TextIO:
     """Return a file-like object opened for text reading of the resource."""
     return TextIOWrapper(
-        open_binary(package, resource), encoding=encoding, errors=errors)
+        open_binary(package, resource), encoding=encoding, errors=errors
+    )
 
 
 def read_binary(package: Package, resource: Resource) -> bytes:
@@ -79,10 +91,12 @@ def read_binary(package: Package, resource: Resource) -> bytes:
         return fp.read()
 
 
-def read_text(package: Package,
-              resource: Resource,
-              encoding: str = 'utf-8',
-              errors: str = 'strict') -> str:
+def read_text(
+    package: Package,
+    resource: Resource,
+    encoding: str = 'utf-8',
+    errors: str = 'strict',
+) -> str:
     """Return the decoded string of the resource.
 
     The decoding-related arguments have the same semantics as those of
@@ -93,8 +107,9 @@ def read_text(package: Package,
 
 
 def path(
-        package: Package, resource: Resource,
-        ) -> 'ContextManager[Path]':
+    package: Package,
+    resource: Resource,
+) -> 'ContextManager[Path]':
     """A context manager providing a file path object to the resource.
 
     If the resource does not already exist on its own on the file system,
@@ -106,15 +121,17 @@ def path(
     reader = _common.get_resource_reader(_common.get_package(package))
     return (
         _path_from_reader(reader, _common.normalize_path(resource))
-        if reader else
-        _common.as_file(
-            _common.files(package).joinpath(_common.normalize_path(resource)))
+        if reader
+        else _common.as_file(
+            _common.files(package).joinpath(_common.normalize_path(resource))
         )
+    )
 
 
 def _path_from_reader(reader, resource):
-    return _path_from_resource_path(reader, resource) or \
-        _path_from_open_resource(reader, resource)
+    return _path_from_resource_path(reader, resource) or _path_from_open_resource(
+        reader, resource
+    )
 
 
 def _path_from_resource_path(reader, resource):
@@ -154,15 +171,10 @@ def contents(package: Package) -> Iterable[str]:
     reader = _common.get_resource_reader(package)
     if reader is not None:
         return _ensure_sequence(reader.contents())
-    # Is the package a namespace package?  By definition, namespace packages
-    # cannot have resources.
-    namespace = (
-        package.__spec__.origin is None or
-        package.__spec__.origin == 'namespace'
-        )
-    if namespace or not package.__spec__.has_location:
-        return ()
-    return list(item.name for item in _common.from_package(package).iterdir())
+    transversable = _common.from_package(package)
+    if transversable.is_dir():
+        return list(item.name for item in transversable.iterdir())
+    return []
 
 
 @singledispatch
diff --git a/Lib/test/test_importlib/namespacedata01/binary.file b/Lib/test/test_importlib/namespacedata01/binary.file
new file mode 100644
index 0000000000000..eaf36c1daccfd
Binary files /dev/null and b/Lib/test/test_importlib/namespacedata01/binary.file differ
diff --git a/Lib/test/test_importlib/namespacedata01/utf-16.file b/Lib/test/test_importlib/namespacedata01/utf-16.file
new file mode 100644
index 0000000000000..2cb772295ef4b
Binary files /dev/null and b/Lib/test/test_importlib/namespacedata01/utf-16.file differ
diff --git a/Lib/test/test_importlib/namespacedata01/utf-8.file b/Lib/test/test_importlib/namespacedata01/utf-8.file
new file mode 100644
index 0000000000000..1c0132ad90a19
--- /dev/null
+++ b/Lib/test/test_importlib/namespacedata01/utf-8.file
@@ -0,0 +1 @@
+Hello, UTF-8 world!
diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py
index d8b9fc89f29aa..d1c89c183b79f 100644
--- a/Lib/test/test_importlib/test_abc.py
+++ b/Lib/test/test_importlib/test_abc.py
@@ -338,7 +338,9 @@ def test_is_resource(self):
             self.ins.is_resource('dummy_file')
 
     def test_contents(self):
-        self.assertEqual([], list(self.ins.contents()))
+        with self.assertRaises(FileNotFoundError):
+            self.ins.contents()
+
 
 (Frozen_RRDefaultTests,
  Source_RRDefaultsTests
diff --git a/Lib/test/test_importlib/test_files.py b/Lib/test/test_importlib/test_files.py
index fa7af82bf0c28..1e7a1f3cbcc54 100644
--- a/Lib/test/test_importlib/test_files.py
+++ b/Lib/test/test_importlib/test_files.py
@@ -21,7 +21,7 @@ def test_read_text(self):
     @unittest.skipUnless(
         hasattr(typing, 'runtime_checkable'),
         "Only suitable when typing supports runtime_checkable",
-        )
+    )
     def test_traversable(self):
         assert isinstance(resources.files(self.data), Traversable)
 
diff --git a/Lib/test/test_importlib/test_open.py b/Lib/test/test_importlib/test_open.py
index fd6e84b70f65c..b75675f43b63f 100644
--- a/Lib/test/test_importlib/test_open.py
+++ b/Lib/test/test_importlib/test_open.py
@@ -29,34 +29,32 @@ def test_open_text_default_encoding(self):
             self.assertEqual(result, 'Hello, UTF-8 world!\n')
 
     def test_open_text_given_encoding(self):
-        with resources.open_text(
-                self.data, 'utf-16.file', 'utf-16', 'strict') as fp:
+        with resources.open_text(self.data, 'utf-16.file', 'utf-16', 'strict') as fp:
             result = fp.read()
         self.assertEqual(result, 'Hello, UTF-16 world!\n')
 
     def test_open_text_with_errors(self):
         # Raises UnicodeError without the 'errors' argument.
-        with resources.open_text(
-                self.data, 'utf-16.file', 'utf-8', 'strict') as fp:
+        with resources.open_text(self.data, 'utf-16.file', 'utf-8', 'strict') as fp:
             self.assertRaises(UnicodeError, fp.read)
-        with resources.open_text(
-                self.data, 'utf-16.file', 'utf-8', 'ignore') as fp:
+        with resources.open_text(self.data, 'utf-16.file', 'utf-8', 'ignore') as fp:
             result = fp.read()
         self.assertEqual(
             result,
             'H\x00e\x00l\x00l\x00o\x00,\x00 '
             '\x00U\x00T\x00F\x00-\x001\x006\x00 '
-            '\x00w\x00o\x00r\x00l\x00d\x00!\x00\n\x00')
+            '\x00w\x00o\x00r\x00l\x00d\x00!\x00\n\x00',
+        )
 
     def test_open_binary_FileNotFoundError(self):
         self.assertRaises(
-            FileNotFoundError,
-            resources.open_binary, self.data, 'does-not-exist')
+            FileNotFoundError, resources.open_binary, self.data, 'does-not-exist'
+        )
 
     def test_open_text_FileNotFoundError(self):
         self.assertRaises(
-            FileNotFoundError,
-            resources.open_text, self.data, 'does-not-exist')
+            FileNotFoundError, resources.open_text, self.data, 'does-not-exist'
+        )
 
 
 class OpenDiskTests(OpenTests, unittest.TestCase):
@@ -64,6 +62,13 @@ def setUp(self):
         self.data = data01
 
 
+class OpenDiskNamespaceTests(OpenTests, unittest.TestCase):
+    def setUp(self):
+        from . import namespacedata01
+
+        self.data = namespacedata01
+
+
 class OpenZipTests(OpenTests, util.ZipSetup, unittest.TestCase):
     pass
 
diff --git a/Lib/test/test_importlib/test_path.py b/Lib/test/test_importlib/test_path.py
index abf8086558158..2110770e2ac09 100644
--- a/Lib/test/test_importlib/test_path.py
+++ b/Lib/test/test_importlib/test_path.py
@@ -1,3 +1,4 @@
+import io
 import unittest
 
 from importlib import resources
@@ -37,6 +38,17 @@ def test_natural_path(self):
             assert 'data' in str(path)
 
 
+class PathMemoryTests(PathTests, unittest.TestCase):
+    def setUp(self):
+        file = io.BytesIO(b'Hello, UTF-8 world!\n')
+        self.addCleanup(file.close)
+        self.data = util.create_package(
+            file=file, path=FileNotFoundError("package exists only in memory")
+        )
+        self.data.__spec__.origin = None
+        self.data.__spec__.has_location = False
+
+
 class PathZipTests(PathTests, util.ZipSetup, unittest.TestCase):
     def test_remove_in_context_manager(self):
         # It is not an error if the file that was temporarily stashed on the
diff --git a/Lib/test/test_importlib/test_read.py b/Lib/test/test_importlib/test_read.py
index ff78d0b2948f6..f6ec13af62d13 100644
--- a/Lib/test/test_importlib/test_read.py
+++ b/Lib/test/test_importlib/test_read.py
@@ -25,20 +25,19 @@ def test_read_text_default_encoding(self):
         self.assertEqual(result, 'Hello, UTF-8 world!\n')
 
     def test_read_text_given_encoding(self):
-        result = resources.read_text(
-            self.data, 'utf-16.file', encoding='utf-16')
+        result = resources.read_text(self.data, 'utf-16.file', encoding='utf-16')
         self.assertEqual(result, 'Hello, UTF-16 world!\n')
 
     def test_read_text_with_errors(self):
         # Raises UnicodeError without the 'errors' argument.
-        self.assertRaises(
-            UnicodeError, resources.read_text, self.data, 'utf-16.file')
+        self.assertRaises(UnicodeError, resources.read_text, self.data, 'utf-16.file')
         result = resources.read_text(self.data, 'utf-16.file', errors='ignore')
         self.assertEqual(
             result,
             'H\x00e\x00l\x00l\x00o\x00,\x00 '
             '\x00U\x00T\x00F\x00-\x001\x006\x00 '
-            '\x00w\x00o\x00r\x00l\x00d\x00!\x00\n\x00')
+            '\x00w\x00o\x00r\x00l\x00d\x00!\x00\n\x00',
+        )
 
 
 class ReadDiskTests(ReadTests, unittest.TestCase):
@@ -48,13 +47,11 @@ class ReadDiskTests(ReadTests, unittest.TestCase):
 class ReadZipTests(ReadTests, util.ZipSetup, unittest.TestCase):
     def test_read_submodule_resource(self):
         submodule = import_module('ziptestdata.subdirectory')
-        result = resources.read_binary(
-            submodule, 'binary.file')
+        result = resources.read_binary(submodule, 'binary.file')
         self.assertEqual(result, b'\0\1\2\3')
 
     def test_read_submodule_resource_by_name(self):
-        result = resources.read_binary(
-            'ziptestdata.subdirectory', 'binary.file')
+        result = resources.read_binary('ziptestdata.subdirectory', 'binary.file')
         self.assertEqual(result, b'\0\1\2\3')
 
 
diff --git a/Lib/test/test_importlib/test_reader.py b/Lib/test/test_importlib/test_reader.py
new file mode 100644
index 0000000000000..905d4fcdece74
--- /dev/null
+++ b/Lib/test/test_importlib/test_reader.py
@@ -0,0 +1,123 @@
+import os.path
+import sys
+import pathlib
+import unittest
+
+from importlib import import_module
+from importlib.readers import MultiplexedPath, NamespaceReader
+
+
+class MultiplexedPathTest(unittest.TestCase):
+    @classmethod
+    def setUpClass(cls):
+        path = pathlib.Path(__file__).parent / 'namespacedata01'
+        cls.folder = str(path)
+
+    def test_init_no_paths(self):
+        with self.assertRaises(FileNotFoundError):
+            MultiplexedPath()
+
+    def test_init_file(self):
+        with self.assertRaises(NotADirectoryError):
+            MultiplexedPath(os.path.join(self.folder, 'binary.file'))
+
+    def test_iterdir(self):
+        contents = {path.name for path in MultiplexedPath(self.folder).iterdir()}
+        try:
+            contents.remove('__pycache__')
+        except (KeyError, ValueError):
+            pass
+        self.assertEqual(contents, {'binary.file', 'utf-16.file', 'utf-8.file'})
+
+    def test_iterdir_duplicate(self):
+        data01 = os.path.abspath(os.path.join(__file__, '..', 'data01'))
+        contents = {
+            path.name for path in MultiplexedPath(self.folder, data01).iterdir()
+        }
+        for remove in ('__pycache__', '__init__.pyc'):
+            try:
+                contents.remove(remove)
+            except (KeyError, ValueError):
+                pass
+        self.assertEqual(
+            contents,
+            {'__init__.py', 'binary.file', 'subdirectory', 'utf-16.file', 'utf-8.file'},
+        )
+
+    def test_is_dir(self):
+        self.assertEqual(MultiplexedPath(self.folder).is_dir(), True)
+
+    def test_is_file(self):
+        self.assertEqual(MultiplexedPath(self.folder).is_file(), False)
+
+    def test_open_file(self):
+        path = MultiplexedPath(self.folder)
+        with self.assertRaises(FileNotFoundError):
+            path.read_bytes()
+        with self.assertRaises(FileNotFoundError):
+            path.read_text()
+        with self.assertRaises(FileNotFoundError):
+            path.open()
+
+    def test_join_path(self):
+        print('test_join_path')
+        prefix = os.path.abspath(os.path.join(__file__, '..'))
+        data01 = os.path.join(prefix, 'data01')
+        path = MultiplexedPath(self.folder, data01)
+        self.assertEqual(
+            str(path.joinpath('binary.file'))[len(prefix) + 1 :],
+            os.path.join('namespacedata01', 'binary.file'),
+        )
+        self.assertEqual(
+            str(path.joinpath('subdirectory'))[len(prefix) + 1 :],
+            os.path.join('data01', 'subdirectory'),
+        )
+        self.assertEqual(
+            str(path.joinpath('imaginary'))[len(prefix) + 1 :],
+            os.path.join('namespacedata01', 'imaginary'),
+        )
+
+    def test_repr(self):
+        self.assertEqual(
+            repr(MultiplexedPath(self.folder)),
+            "MultiplexedPath('{}')".format(self.folder),
+        )
+
+
+class NamespaceReaderTest(unittest.TestCase):
+    site_dir = str(pathlib.Path(__file__).parent)
+
+    @classmethod
+    def setUpClass(cls):
+        sys.path.append(cls.site_dir)
+
+    @classmethod
+    def tearDownClass(cls):
+        sys.path.remove(cls.site_dir)
+
+    def test_init_error(self):
+        with self.assertRaises(ValueError):
+            NamespaceReader(['path1', 'path2'])
+
+    def test_resource_path(self):
+        namespacedata01 = import_module('namespacedata01')
+        reader = NamespaceReader(namespacedata01.__spec__.submodule_search_locations)
+
+        root = os.path.abspath(os.path.join(__file__, '..', 'namespacedata01'))
+        self.assertEqual(
+            reader.resource_path('binary.file'), os.path.join(root, 'binary.file')
+        )
+        self.assertEqual(
+            reader.resource_path('imaginary'), os.path.join(root, 'imaginary')
+        )
+
+    def test_files(self):
+        namespacedata01 = import_module('namespacedata01')
+        reader = NamespaceReader(namespacedata01.__spec__.submodule_search_locations)
+        root = os.path.abspath(os.path.join(__file__, '..', 'namespacedata01'))
+        self.assertIsInstance(reader.files(), MultiplexedPath)
+        self.assertEqual(repr(reader.files()), "MultiplexedPath('{}')".format(root))
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/Lib/test/test_importlib/test_resource.py b/Lib/test/test_importlib/test_resource.py
index 1d1bdad1b218d..f8d861e9d4c20 100644
--- a/Lib/test/test_importlib/test_resource.py
+++ b/Lib/test/test_importlib/test_resource.py
@@ -27,20 +27,21 @@ def test_is_resource_subresource_directory(self):
     def test_contents(self):
         contents = set(resources.contents(self.data))
         # There may be cruft in the directory listing of the data directory.
-        # Under Python 3 we could have a __pycache__ directory, and under
-        # Python 2 we could have .pyc files.  These are both artifacts of the
-        # test suite importing these modules and writing these caches.  They
-        # aren't germane to this test, so just filter them out.
+        # It could have a __pycache__ directory,
+        # an artifact of the
+        # test suite importing these modules, which
+        # are not germane to this test, so just filter them out.
         contents.discard('__pycache__')
-        contents.discard('__init__.pyc')
-        contents.discard('__init__.pyo')
-        self.assertEqual(contents, {
-            '__init__.py',
-            'subdirectory',
-            'utf-8.file',
-            'binary.file',
-            'utf-16.file',
-            })
+        self.assertEqual(
+            contents,
+            {
+                '__init__.py',
+                'subdirectory',
+                'utf-8.file',
+                'binary.file',
+                'utf-16.file',
+            },
+        )
 
 
 class ResourceDiskTests(ResourceTests, unittest.TestCase):
@@ -55,27 +56,26 @@ class ResourceZipTests(ResourceTests, util.ZipSetup, unittest.TestCase):
 class ResourceLoaderTests(unittest.TestCase):
     def test_resource_contents(self):
         package = util.create_package(
-            file=data01, path=data01.__file__, contents=['A', 'B', 'C'])
-        self.assertEqual(
-            set(resources.contents(package)),
-            {'A', 'B', 'C'})
+            file=data01, path=data01.__file__, contents=['A', 'B', 'C']
+        )
+        self.assertEqual(set(resources.contents(package)), {'A', 'B', 'C'})
 
     def test_resource_is_resource(self):
         package = util.create_package(
-            file=data01, path=data01.__file__,
-            contents=['A', 'B', 'C', 'D/E', 'D/F'])
+            file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+        )
         self.assertTrue(resources.is_resource(package, 'B'))
 
     def test_resource_directory_is_not_resource(self):
         package = util.create_package(
-            file=data01, path=data01.__file__,
-            contents=['A', 'B', 'C', 'D/E', 'D/F'])
+            file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+        )
         self.assertFalse(resources.is_resource(package, 'D'))
 
     def test_resource_missing_is_not_resource(self):
         package = util.create_package(
-            file=data01, path=data01.__file__,
-            contents=['A', 'B', 'C', 'D/E', 'D/F'])
+            file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+        )
         self.assertFalse(resources.is_resource(package, 'Z'))
 
 
@@ -86,90 +86,63 @@ def test_package_has_no_reader_fallback(self):
         # 2. Are not on the file system
         # 3. Are not in a zip file
         module = util.create_package(
-            file=data01, path=data01.__file__, contents=['A', 'B', 'C'])
+            file=data01, path=data01.__file__, contents=['A', 'B', 'C']
+        )
         # Give the module a dummy loader.
         module.__loader__ = object()
         # Give the module a dummy origin.
         module.__file__ = '/path/which/shall/not/be/named'
-        if sys.version_info >= (3,):
-            module.__spec__.loader = module.__loader__
-            module.__spec__.origin = module.__file__
+        module.__spec__.loader = module.__loader__
+        module.__spec__.origin = module.__file__
         self.assertFalse(resources.is_resource(module, 'A'))
 
 
-class ResourceFromZipsTest(util.ZipSetupBase, unittest.TestCase):
-    ZIP_MODULE = zipdata02                          # type: ignore
-
-    def test_unrelated_contents(self):
-        # https://gitlab.com/python-devs/importlib_resources/issues/44
-        #
-        # Here we have a zip file with two unrelated subpackages.  The bug
-        # reports that getting the contents of a resource returns unrelated
-        # files.
-        self.assertEqual(
-            set(resources.contents('ziptestdata.one')),
-            {'__init__.py', 'resource1.txt'})
-        self.assertEqual(
-            set(resources.contents('ziptestdata.two')),
-            {'__init__.py', 'resource2.txt'})
-
-
-class SubdirectoryResourceFromZipsTest(util.ZipSetupBase, unittest.TestCase):
-    ZIP_MODULE = zipdata01                          # type: ignore
+class ResourceFromZipsTest01(util.ZipSetupBase, unittest.TestCase):
+    ZIP_MODULE = zipdata01  # type: ignore
 
     def test_is_submodule_resource(self):
         submodule = import_module('ziptestdata.subdirectory')
-        self.assertTrue(
-            resources.is_resource(submodule, 'binary.file'))
+        self.assertTrue(resources.is_resource(submodule, 'binary.file'))
 
     def test_read_submodule_resource_by_name(self):
         self.assertTrue(
-            resources.is_resource('ziptestdata.subdirectory', 'binary.file'))
+            resources.is_resource('ziptestdata.subdirectory', 'binary.file')
+        )
 
     def test_submodule_contents(self):
         submodule = import_module('ziptestdata.subdirectory')
         self.assertEqual(
-            set(resources.contents(submodule)),
-            {'__init__.py', 'binary.file'})
+            set(resources.contents(submodule)), {'__init__.py', 'binary.file'}
+        )
 
     def test_submodule_contents_by_name(self):
         self.assertEqual(
             set(resources.contents('ziptestdata.subdirectory')),
-            {'__init__.py', 'binary.file'})
-
-
-class NamespaceTest(unittest.TestCase):
-    def test_namespaces_cannot_have_resources(self):
-        contents = resources.contents('test.test_importlib.data03.namespace')
-        self.assertFalse(list(contents))
-        # Even though there is a file in the namespace directory, it is not
-        # considered a resource, since namespace packages can't have them.
-        self.assertFalse(resources.is_resource(
-            'test.test_importlib.data03.namespace',
-            'resource1.txt'))
-        # We should get an exception if we try to read it or open it.
-        self.assertRaises(
-            FileNotFoundError,
-            resources.open_text,
-            'test.test_importlib.data03.namespace', 'resource1.txt')
-        self.assertRaises(
-            FileNotFoundError,
-            resources.open_binary,
-            'test.test_importlib.data03.namespace', 'resource1.txt')
-        self.assertRaises(
-            FileNotFoundError,
-            resources.read_text,
-            'test.test_importlib.data03.namespace', 'resource1.txt')
-        self.assertRaises(
-            FileNotFoundError,
-            resources.read_binary,
-            'test.test_importlib.data03.namespace', 'resource1.txt')
+            {'__init__.py', 'binary.file'},
+        )
+
+
+class ResourceFromZipsTest02(util.ZipSetupBase, unittest.TestCase):
+    ZIP_MODULE = zipdata02  # type: ignore
+
+    def test_unrelated_contents(self):
+        """
+        Test thata zip with two unrelated subpackages return
+        distinct resources. Ref python/importlib_resources#44.
+        """
+        self.assertEqual(
+            set(resources.contents('ziptestdata.one')), {'__init__.py', 'resource1.txt'}
+        )
+        self.assertEqual(
+            set(resources.contents('ziptestdata.two')), {'__init__.py', 'resource2.txt'}
+        )
 
 
 class DeletingZipsTest(unittest.TestCase):
     """Having accessed resources in a zip file should not keep an open
     reference to the zip.
     """
+
     ZIP_MODULE = zipdata01
 
     def setUp(self):
@@ -241,5 +214,41 @@ def test_read_text_does_not_keep_open(self):
         del c
 
 
+class ResourceFromNamespaceTest01(unittest.TestCase):
+    site_dir = str(pathlib.Path(__file__).parent)
+
+    @classmethod
+    def setUpClass(cls):
+        sys.path.append(cls.site_dir)
+
+    @classmethod
+    def tearDownClass(cls):
+        sys.path.remove(cls.site_dir)
+
+    def test_is_submodule_resource(self):
+        self.assertTrue(
+            resources.is_resource(import_module('namespacedata01'), 'binary.file')
+        )
+
+    def test_read_submodule_resource_by_name(self):
+        self.assertTrue(resources.is_resource('namespacedata01', 'binary.file'))
+
+    def test_submodule_contents(self):
+        contents = set(resources.contents(import_module('namespacedata01')))
+        try:
+            contents.remove('__pycache__')
+        except KeyError:
+            pass
+        self.assertEqual(contents, {'binary.file', 'utf-8.file', 'utf-16.file'})
+
+    def test_submodule_contents_by_name(self):
+        contents = set(resources.contents('namespacedata01'))
+        try:
+            contents.remove('__pycache__')
+        except KeyError:
+            pass
+        self.assertEqual(contents, {'binary.file', 'utf-8.file', 'utf-16.file'})
+
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/Lib/test/test_importlib/update-zips.py b/Lib/test/test_importlib/update-zips.py
new file mode 100755
index 0000000000000..9ef0224ca65ca
--- /dev/null
+++ b/Lib/test/test_importlib/update-zips.py
@@ -0,0 +1,53 @@
+"""
+Generate the zip test data files.
+
+Run to build the tests/zipdataNN/ziptestdata.zip files from
+files in tests/dataNN.
+
+Replaces the file with the working copy, but does commit anything
+to the source repo.
+"""
+
+import contextlib
+import os
+import pathlib
+import zipfile
+
+
+def main():
+    """
+    >>> from unittest import mock
+    >>> monkeypatch = getfixture('monkeypatch')
+    >>> monkeypatch.setattr(zipfile, 'ZipFile', mock.MagicMock())
+    >>> print(); main()  # print workaround for bpo-32509
+    <BLANKLINE>
+    ...data01... -> ziptestdata/...
+    ...
+    ...data02... -> ziptestdata/...
+    ...
+    """
+    suffixes = '01', '02'
+    tuple(map(generate, suffixes))
+
+
+def generate(suffix):
+    root = pathlib.Path(__file__).parent.relative_to(os.getcwd())
+    zfpath = root / f'zipdata{suffix}/ziptestdata.zip'
+    with zipfile.ZipFile(zfpath, 'w') as zf:
+        for src, rel in walk(root / f'data{suffix}'):
+            dst = 'ziptestdata' / pathlib.PurePosixPath(rel.as_posix())
+            print(src, '->', dst)
+            zf.write(src, dst)
+
+
+def walk(datapath):
+    for dirpath, dirnames, filenames in os.walk(datapath):
+        with contextlib.suppress(KeyError):
+            dirnames.remove('__pycache__')
+        for filename in filenames:
+            res = pathlib.Path(dirpath) / filename
+            rel = res.relative_to(datapath)
+            yield res, rel
+
+
+__name__ == '__main__' and main()
diff --git a/Lib/test/test_importlib/zipdata01/ziptestdata.zip b/Lib/test/test_importlib/zipdata01/ziptestdata.zip
index 12f7872cd596a..9a3bb0739f87e 100644
Binary files a/Lib/test/test_importlib/zipdata01/ziptestdata.zip and b/Lib/test/test_importlib/zipdata01/ziptestdata.zip differ
diff --git a/Lib/test/test_importlib/zipdata02/ziptestdata.zip b/Lib/test/test_importlib/zipdata02/ziptestdata.zip
index 9ee00586e75f1..d63ff512d2807 100644
Binary files a/Lib/test/test_importlib/zipdata02/ziptestdata.zip and b/Lib/test/test_importlib/zipdata02/ziptestdata.zip differ
diff --git a/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst b/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst
new file mode 100644
index 0000000000000..4b8f5029fefec
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst
@@ -0,0 +1,3 @@
+``importlib.resources`` now honors namespace packages, merging resources
+from each location in the namespace as introduced in
+``importlib_resources`` 3.2 and including incidental changes through 5.0.3.
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index 6b4cd39e35515..108f59e2631c4 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -1529,7 +1529,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109,
     1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78,
     114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97,
-    100,101,114,41,2,90,17,105,109,112,111,114,116,108,105,98,
+    100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98,
     46,114,101,97,100,101,114,115,114,18,1,0,0,41,3,114,
     130,0,0,0,114,231,0,0,0,114,18,1,0,0,114,7,
     0,0,0,114,7,0,0,0,114,8,0,0,0,218,19,103,
@@ -1540,7 +1540,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     114,41,13,114,137,0,0,0,114,136,0,0,0,114,138,0,
     0,0,114,139,0,0,0,114,223,0,0,0,114,3,1,0,
     0,114,9,1,0,0,114,147,0,0,0,114,235,0,0,0,
-    114,190,0,0,0,114,242,0,0,0,114,19,1,0,0,90,
+    114,190,0,0,0,114,242,0,0,0,114,20,1,0,0,90,
     13,95,95,99,108,97,115,115,99,101,108,108,95,95,114,7,
     0,0,0,114,7,0,0,0,114,12,1,0,0,114,8,0,
     0,0,114,254,0,0,0,218,3,0,0,115,26,0,0,0,
@@ -1580,7 +1580,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     0,115,6,0,0,0,8,2,16,1,255,128,122,32,83,111,
     117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,95,
     99,97,99,104,101,95,98,121,116,101,99,111,100,101,114,75,
-    0,0,0,114,22,1,0,0,99,3,0,0,0,0,0,0,
+    0,0,0,114,23,1,0,0,99,3,0,0,0,0,0,0,
     0,1,0,0,0,9,0,0,0,11,0,0,0,67,0,0,
     0,115,254,0,0,0,116,0,124,1,131,1,92,2,125,4,
     125,5,103,0,125,6,124,4,114,62,116,1,124,4,131,1,
@@ -1608,7 +1608,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     5,109,107,100,105,114,218,15,70,105,108,101,69,120,105,115,
     116,115,69,114,114,111,114,114,64,0,0,0,114,146,0,0,
     0,114,160,0,0,0,114,84,0,0,0,41,9,114,130,0,
-    0,0,114,58,0,0,0,114,42,0,0,0,114,23,1,0,
+    0,0,114,58,0,0,0,114,42,0,0,0,114,24,1,0,
     0,218,6,112,97,114,101,110,116,114,108,0,0,0,114,53,
     0,0,0,114,49,0,0,0,114,243,0,0,0,114,7,0,
     0,0,114,7,0,0,0,114,8,0,0,0,114,240,0,0,
@@ -1621,9 +1621,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     41,7,114,137,0,0,0,114,136,0,0,0,114,138,0,0,
     0,114,139,0,0,0,114,239,0,0,0,114,241,0,0,0,
     114,240,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,20,1,0,0,12,4,
+    7,0,0,0,114,8,0,0,0,114,21,1,0,0,12,4,
     0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18,
-    5,255,128,114,20,1,0,0,99,0,0,0,0,0,0,0,
+    5,255,128,114,21,1,0,0,99,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,
     0,115,32,0,0,0,101,0,90,1,100,0,90,2,100,1,
     90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,
@@ -1660,9 +1660,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     117,114,99,101,78,41,6,114,137,0,0,0,114,136,0,0,
     0,114,138,0,0,0,114,139,0,0,0,114,228,0,0,0,
     114,244,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,26,1,0,0,57,4,
+    7,0,0,0,114,8,0,0,0,114,27,1,0,0,57,4,
     0,0,115,10,0,0,0,8,0,4,2,8,2,12,16,255,
-    128,114,26,1,0,0,99,0,0,0,0,0,0,0,0,0,
+    128,114,27,1,0,0,99,0,0,0,0,0,0,0,0,0,
     0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,
     92,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,
     100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,
@@ -1754,7 +1754,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     103,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
     101,120,112,114,62,78,41,4,114,61,0,0,0,114,58,0,
     0,0,218,3,97,110,121,114,219,0,0,0,114,234,0,0,
-    0,114,7,0,0,0,114,30,1,0,0,114,8,0,0,0,
+    0,114,7,0,0,0,114,31,1,0,0,114,8,0,0,0,
     114,193,0,0,0,115,4,0,0,115,10,0,0,0,14,2,
     12,1,2,1,8,255,255,128,122,30,69,120,116,101,110,115,
     105,111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,
@@ -1847,8 +1847,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     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,86,0,0,0,114,
     10,0,0,0,41,2,114,16,0,0,0,114,58,0,0,0,
-    90,8,95,95,112,97,116,104,95,95,78,41,2,114,33,1,
-    0,0,114,55,0,0,0,41,4,114,130,0,0,0,114,25,
+    90,8,95,95,112,97,116,104,95,95,78,41,2,114,34,1,
+    0,0,114,55,0,0,0,41,4,114,130,0,0,0,114,26,
     1,0,0,218,3,100,111,116,90,2,109,101,114,7,0,0,
     0,114,7,0,0,0,114,8,0,0,0,218,23,95,102,105,
     110,100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,
@@ -1860,12 +1860,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     3,0,0,0,67,0,0,0,115,28,0,0,0,124,0,160,
     0,161,0,92,2,125,1,125,2,116,1,116,2,106,3,124,
     1,25,0,124,2,131,2,83,0,114,121,0,0,0,41,4,
-    114,40,1,0,0,114,142,0,0,0,114,16,0,0,0,218,
+    114,41,1,0,0,114,142,0,0,0,114,16,0,0,0,218,
     7,109,111,100,117,108,101,115,41,3,114,130,0,0,0,90,
     18,112,97,114,101,110,116,95,109,111,100,117,108,101,95,110,
     97,109,101,90,14,112,97,116,104,95,97,116,116,114,95,110,
     97,109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,35,1,0,0,158,4,0,0,115,6,0,0,0,
+    0,0,114,36,1,0,0,158,4,0,0,115,6,0,0,0,
     12,1,16,1,255,128,122,31,95,78,97,109,101,115,112,97,
     99,101,80,97,116,104,46,95,103,101,116,95,112,97,114,101,
     110,116,95,112,97,116,104,99,1,0,0,0,0,0,0,0,
@@ -1876,9 +1876,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     68,124,2,106,5,100,0,117,0,114,68,124,2,106,6,114,
     68,124,2,106,6,124,0,95,7,124,1,124,0,95,2,124,
     0,106,7,83,0,114,121,0,0,0,41,8,114,123,0,0,
-    0,114,35,1,0,0,114,36,1,0,0,114,37,1,0,0,
-    114,33,1,0,0,114,151,0,0,0,114,189,0,0,0,114,
-    34,1,0,0,41,3,114,130,0,0,0,90,11,112,97,114,
+    0,114,36,1,0,0,114,37,1,0,0,114,38,1,0,0,
+    114,34,1,0,0,114,151,0,0,0,114,189,0,0,0,114,
+    35,1,0,0,41,3,114,130,0,0,0,90,11,112,97,114,
     101,110,116,95,112,97,116,104,114,198,0,0,0,114,7,0,
     0,0,114,7,0,0,0,114,8,0,0,0,218,12,95,114,
     101,99,97,108,99,117,108,97,116,101,162,4,0,0,115,18,
@@ -1888,7 +1888,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     116,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
     0,0,0,3,0,0,0,67,0,0,0,243,12,0,0,0,
     116,0,124,0,160,1,161,0,131,1,83,0,114,121,0,0,
-    0,41,2,218,4,105,116,101,114,114,42,1,0,0,114,8,
+    0,41,2,218,4,105,116,101,114,114,43,1,0,0,114,8,
     1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
     0,0,218,8,95,95,105,116,101,114,95,95,175,4,0,0,
     243,4,0,0,0,12,1,255,128,122,23,95,78,97,109,101,
@@ -1896,764 +1896,776 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,
     0,0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,
     124,0,160,0,161,0,124,1,25,0,83,0,114,121,0,0,
-    0,169,1,114,42,1,0,0,41,2,114,130,0,0,0,218,
+    0,169,1,114,43,1,0,0,41,2,114,130,0,0,0,218,
     5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109,
-    95,95,178,4,0,0,114,46,1,0,0,122,26,95,78,97,
+    95,95,178,4,0,0,114,47,1,0,0,122,26,95,78,97,
     109,101,115,112,97,99,101,80,97,116,104,46,95,95,103,101,
     116,105,116,101,109,95,95,99,3,0,0,0,0,0,0,0,
     0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,
     115,14,0,0,0,124,2,124,0,106,0,124,1,60,0,100,
-    0,83,0,114,121,0,0,0,41,1,114,34,1,0,0,41,
-    3,114,130,0,0,0,114,48,1,0,0,114,58,0,0,0,
+    0,83,0,114,121,0,0,0,41,1,114,35,1,0,0,41,
+    3,114,130,0,0,0,114,49,1,0,0,114,58,0,0,0,
     114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
     11,95,95,115,101,116,105,116,101,109,95,95,181,4,0,0,
     115,4,0,0,0,14,1,255,128,122,26,95,78,97,109,101,
     115,112,97,99,101,80,97,116,104,46,95,95,115,101,116,105,
     116,101,109,95,95,99,1,0,0,0,0,0,0,0,0,0,
-    0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,43,
+    0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,44,
     1,0,0,114,121,0,0,0,41,2,114,4,0,0,0,114,
-    42,1,0,0,114,8,1,0,0,114,7,0,0,0,114,7,
+    43,1,0,0,114,8,1,0,0,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95,
-    95,184,4,0,0,114,46,1,0,0,122,22,95,78,97,109,
+    95,184,4,0,0,114,47,1,0,0,122,22,95,78,97,109,
     101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110,
     95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
     0,0,0,3,0,0,0,67,0,0,0,243,12,0,0,0,
     100,1,160,0,124,0,106,1,161,1,83,0,41,2,78,122,
     20,95,78,97,109,101,115,112,97,99,101,80,97,116,104,40,
-    123,33,114,125,41,41,2,114,77,0,0,0,114,34,1,0,
+    123,33,114,125,41,41,2,114,77,0,0,0,114,35,1,0,
     0,114,8,1,0,0,114,7,0,0,0,114,7,0,0,0,
     114,8,0,0,0,218,8,95,95,114,101,112,114,95,95,187,
-    4,0,0,114,46,1,0,0,122,23,95,78,97,109,101,115,
+    4,0,0,114,47,1,0,0,122,23,95,78,97,109,101,115,
     112,97,99,101,80,97,116,104,46,95,95,114,101,112,114,95,
     95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
     0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,124,
     1,124,0,160,0,161,0,118,0,83,0,114,121,0,0,0,
-    114,47,1,0,0,169,2,114,130,0,0,0,218,4,105,116,
+    114,48,1,0,0,169,2,114,130,0,0,0,218,4,105,116,
     101,109,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
     0,218,12,95,95,99,111,110,116,97,105,110,115,95,95,190,
-    4,0,0,114,46,1,0,0,122,27,95,78,97,109,101,115,
+    4,0,0,114,47,1,0,0,122,27,95,78,97,109,101,115,
     112,97,99,101,80,97,116,104,46,95,95,99,111,110,116,97,
     105,110,115,95,95,99,2,0,0,0,0,0,0,0,0,0,
     0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,16,
     0,0,0,124,0,106,0,160,1,124,1,161,1,1,0,100,
-    0,83,0,114,121,0,0,0,41,2,114,34,1,0,0,114,
-    197,0,0,0,114,54,1,0,0,114,7,0,0,0,114,7,
+    0,83,0,114,121,0,0,0,41,2,114,35,1,0,0,114,
+    197,0,0,0,114,55,1,0,0,114,7,0,0,0,114,7,
     0,0,0,114,8,0,0,0,114,197,0,0,0,193,4,0,
     0,243,4,0,0,0,16,1,255,128,122,21,95,78,97,109,
     101,115,112,97,99,101,80,97,116,104,46,97,112,112,101,110,
     100,78,41,15,114,137,0,0,0,114,136,0,0,0,114,138,
-    0,0,0,114,139,0,0,0,114,223,0,0,0,114,40,1,
-    0,0,114,35,1,0,0,114,42,1,0,0,114,45,1,0,
-    0,114,49,1,0,0,114,50,1,0,0,114,51,1,0,0,
-    114,53,1,0,0,114,56,1,0,0,114,197,0,0,0,114,
+    0,0,0,114,139,0,0,0,114,223,0,0,0,114,41,1,
+    0,0,114,36,1,0,0,114,43,1,0,0,114,46,1,0,
+    0,114,50,1,0,0,114,51,1,0,0,114,52,1,0,0,
+    114,54,1,0,0,114,57,1,0,0,114,197,0,0,0,114,
     7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,32,1,0,0,135,4,0,0,115,28,0,0,
+    0,0,0,114,33,1,0,0,135,4,0,0,115,28,0,0,
     0,8,0,4,1,8,6,8,6,8,10,8,4,8,13,8,
-    3,8,3,8,3,8,3,8,3,12,3,255,128,114,32,1,
+    3,8,3,8,3,8,3,8,3,12,3,255,128,114,33,1,
     0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,
-    0,0,0,3,0,0,0,64,0,0,0,115,80,0,0,0,
+    0,0,0,3,0,0,0,64,0,0,0,115,88,0,0,0,
     101,0,90,1,100,0,90,2,100,1,100,2,132,0,90,3,
     101,4,100,3,100,4,132,0,131,1,90,5,100,5,100,6,
     132,0,90,6,100,7,100,8,132,0,90,7,100,9,100,10,
     132,0,90,8,100,11,100,12,132,0,90,9,100,13,100,14,
-    132,0,90,10,100,15,100,16,132,0,90,11,100,17,83,0,
-    41,18,218,16,95,78,97,109,101,115,112,97,99,101,76,111,
-    97,100,101,114,99,4,0,0,0,0,0,0,0,0,0,0,
-    0,4,0,0,0,4,0,0,0,67,0,0,0,115,18,0,
-    0,0,116,0,124,1,124,2,124,3,131,3,124,0,95,1,
-    100,0,83,0,114,121,0,0,0,41,2,114,32,1,0,0,
-    114,34,1,0,0,114,38,1,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,223,0,0,0,199,4,
-    0,0,115,4,0,0,0,18,1,255,128,122,25,95,78,97,
-    109,101,115,112,97,99,101,76,111,97,100,101,114,46,95,95,
-    105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,
-    0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,
-    52,1,0,0,41,3,122,115,82,101,116,117,114,110,32,114,
-    101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,117,
-    108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101,
-    32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,
-    99,97,116,101,100,46,32,32,84,104,101,32,105,109,112,111,
-    114,116,32,109,97,99,104,105,110,101,114,121,32,100,111,101,
-    115,32,116,104,101,32,106,111,98,32,105,116,115,101,108,102,
-    46,10,10,32,32,32,32,32,32,32,32,122,25,60,109,111,
-    100,117,108,101,32,123,33,114,125,32,40,110,97,109,101,115,
-    112,97,99,101,41,62,78,41,2,114,77,0,0,0,114,137,
-    0,0,0,41,1,114,231,0,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,218,11,109,111,100,117,108,
-    101,95,114,101,112,114,202,4,0,0,115,4,0,0,0,12,
-    7,255,128,122,28,95,78,97,109,101,115,112,97,99,101,76,
-    111,97,100,101,114,46,109,111,100,117,108,101,95,114,101,112,
-    114,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
-    0,0,1,0,0,0,67,0,0,0,114,24,0,0,0,41,
-    2,78,84,114,7,0,0,0,114,234,0,0,0,114,7,0,
-    0,0,114,7,0,0,0,114,8,0,0,0,114,193,0,0,
-    0,211,4,0,0,243,4,0,0,0,4,1,255,128,122,27,
-    95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
-    46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,
-    0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
-    67,0,0,0,114,24,0,0,0,41,2,78,114,10,0,0,
-    0,114,7,0,0,0,114,234,0,0,0,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,244,0,0,0,214,
-    4,0,0,114,60,1,0,0,122,27,95,78,97,109,101,115,
-    112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,115,
-    111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,
-    0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,16,
-    0,0,0,116,0,100,1,100,2,100,3,100,4,100,5,141,
-    4,83,0,41,6,78,114,10,0,0,0,122,8,60,115,116,
-    114,105,110,103,62,114,230,0,0,0,84,41,1,114,246,0,
-    0,0,41,1,114,247,0,0,0,114,234,0,0,0,114,7,
-    0,0,0,114,7,0,0,0,114,8,0,0,0,114,228,0,
-    0,0,217,4,0,0,114,57,1,0,0,122,25,95,78,97,
-    109,101,115,112,97,99,101,76,111,97,100,101,114,46,103,101,
-    116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,
-    0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,
-    24,0,0,0,114,224,0,0,0,114,7,0,0,0,114,225,
+    132,0,90,10,100,15,100,16,132,0,90,11,100,17,100,18,
+    132,0,90,12,100,19,83,0,41,20,218,16,95,78,97,109,
+    101,115,112,97,99,101,76,111,97,100,101,114,99,4,0,0,
+    0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,
+    0,67,0,0,0,115,18,0,0,0,116,0,124,1,124,2,
+    124,3,131,3,124,0,95,1,100,0,83,0,114,121,0,0,
+    0,41,2,114,33,1,0,0,114,35,1,0,0,114,39,1,
+    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
+    0,114,223,0,0,0,199,4,0,0,115,4,0,0,0,18,
+    1,255,128,122,25,95,78,97,109,101,115,112,97,99,101,76,
+    111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,1,
+    0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,
+    0,0,0,67,0,0,0,114,53,1,0,0,41,3,122,115,
+    82,101,116,117,114,110,32,114,101,112,114,32,102,111,114,32,
+    116,104,101,32,109,111,100,117,108,101,46,10,10,32,32,32,
+    32,32,32,32,32,84,104,101,32,109,101,116,104,111,100,32,
+    105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,
+    84,104,101,32,105,109,112,111,114,116,32,109,97,99,104,105,
+    110,101,114,121,32,100,111,101,115,32,116,104,101,32,106,111,
+    98,32,105,116,115,101,108,102,46,10,10,32,32,32,32,32,
+    32,32,32,122,25,60,109,111,100,117,108,101,32,123,33,114,
+    125,32,40,110,97,109,101,115,112,97,99,101,41,62,78,41,
+    2,114,77,0,0,0,114,137,0,0,0,41,1,114,231,0,
+    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
+    0,218,11,109,111,100,117,108,101,95,114,101,112,114,202,4,
+    0,0,115,4,0,0,0,12,7,255,128,122,28,95,78,97,
+    109,101,115,112,97,99,101,76,111,97,100,101,114,46,109,111,
+    100,117,108,101,95,114,101,112,114,99,2,0,0,0,0,0,
+    0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
+    0,0,114,24,0,0,0,41,2,78,84,114,7,0,0,0,
+    114,234,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
+    8,0,0,0,114,193,0,0,0,211,4,0,0,243,4,0,
+    0,0,4,1,255,128,122,27,95,78,97,109,101,115,112,97,
+    99,101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,
+    97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
+    2,0,0,0,1,0,0,0,67,0,0,0,114,24,0,0,
+    0,41,2,78,114,10,0,0,0,114,7,0,0,0,114,234,
     0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,226,0,0,0,220,4,0,0,114,227,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,0,0,0,0,2,0,0,
-    0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,0,
-    83,0,114,121,0,0,0,114,7,0,0,0,114,27,1,0,
+    0,0,114,244,0,0,0,214,4,0,0,114,61,1,0,0,
+    122,27,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
+    101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,
+    0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,
+    0,0,67,0,0,0,115,16,0,0,0,116,0,100,1,100,
+    2,100,3,100,4,100,5,141,4,83,0,41,6,78,114,10,
+    0,0,0,122,8,60,115,116,114,105,110,103,62,114,230,0,
+    0,0,84,41,1,114,246,0,0,0,41,1,114,247,0,0,
+    0,114,234,0,0,0,114,7,0,0,0,114,7,0,0,0,
+    114,8,0,0,0,114,228,0,0,0,217,4,0,0,114,58,
+    1,0,0,122,25,95,78,97,109,101,115,112,97,99,101,76,
+    111,97,100,101,114,46,103,101,116,95,99,111,100,101,99,2,
+    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,
+    0,0,0,67,0,0,0,114,24,0,0,0,114,224,0,0,
+    0,114,7,0,0,0,114,225,0,0,0,114,7,0,0,0,
+    114,7,0,0,0,114,8,0,0,0,114,226,0,0,0,220,
+    4,0,0,114,227,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,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
+    0,115,4,0,0,0,100,0,83,0,114,121,0,0,0,114,
+    7,0,0,0,114,28,1,0,0,114,7,0,0,0,114,7,
+    0,0,0,114,8,0,0,0,114,232,0,0,0,223,4,0,
+    0,114,61,1,0,0,122,28,95,78,97,109,101,115,112,97,
+    99,101,76,111,97,100,101,114,46,101,120,101,99,95,109,111,
+    100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,
+    0,2,0,0,0,4,0,0,0,67,0,0,0,115,26,0,
+    0,0,116,0,160,1,100,1,124,0,106,2,161,2,1,0,
+    116,0,160,3,124,0,124,1,161,2,83,0,41,3,122,98,
+    76,111,97,100,32,97,32,110,97,109,101,115,112,97,99,101,
+    32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,
+    32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,
+    32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,
+    101,32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,
+    105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,
+    32,32,122,38,110,97,109,101,115,112,97,99,101,32,109,111,
+    100,117,108,101,32,108,111,97,100,101,100,32,119,105,116,104,
+    32,112,97,116,104,32,123,33,114,125,78,41,4,114,146,0,
+    0,0,114,160,0,0,0,114,35,1,0,0,114,233,0,0,
+    0,114,234,0,0,0,114,7,0,0,0,114,7,0,0,0,
+    114,8,0,0,0,114,235,0,0,0,226,4,0,0,115,10,
+    0,0,0,6,7,4,1,4,255,12,3,255,128,122,28,95,
+    78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
+    108,111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,
+    0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,
+    67,0,0,0,115,22,0,0,0,100,1,100,2,108,0,109,
+    1,125,2,1,0,124,2,124,0,106,2,131,1,83,0,41,
+    3,78,114,0,0,0,0,41,1,218,15,78,97,109,101,115,
+    112,97,99,101,82,101,97,100,101,114,41,3,114,19,1,0,
+    0,114,62,1,0,0,114,35,1,0,0,41,3,114,130,0,
+    0,0,114,231,0,0,0,114,62,1,0,0,114,7,0,0,
+    0,114,7,0,0,0,114,8,0,0,0,114,20,1,0,0,
+    238,4,0,0,115,6,0,0,0,12,1,10,1,255,128,122,
+    36,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
+    114,46,103,101,116,95,114,101,115,111,117,114,99,101,95,114,
+    101,97,100,101,114,78,41,13,114,137,0,0,0,114,136,0,
+    0,0,114,138,0,0,0,114,223,0,0,0,114,220,0,0,
+    0,114,60,1,0,0,114,193,0,0,0,114,244,0,0,0,
+    114,228,0,0,0,114,226,0,0,0,114,232,0,0,0,114,
+    235,0,0,0,114,20,1,0,0,114,7,0,0,0,114,7,
+    0,0,0,114,7,0,0,0,114,8,0,0,0,114,59,1,
+    0,0,198,4,0,0,115,24,0,0,0,8,0,8,1,2,
+    3,10,1,8,8,8,3,8,3,8,3,8,3,8,3,12,
+    12,255,128,114,59,1,0,0,99,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,
+    0,115,118,0,0,0,101,0,90,1,100,0,90,2,100,1,
+    90,3,101,4,100,2,100,3,132,0,131,1,90,5,101,4,
+    100,4,100,5,132,0,131,1,90,6,101,7,100,6,100,7,
+    132,0,131,1,90,8,101,7,100,8,100,9,132,0,131,1,
+    90,9,101,7,100,19,100,11,100,12,132,1,131,1,90,10,
+    101,7,100,20,100,13,100,14,132,1,131,1,90,11,101,7,
+    100,21,100,15,100,16,132,1,131,1,90,12,101,4,100,17,
+    100,18,132,0,131,1,90,13,100,10,83,0,41,22,218,10,
+    80,97,116,104,70,105,110,100,101,114,122,62,77,101,116,97,
+    32,112,97,116,104,32,102,105,110,100,101,114,32,102,111,114,
+    32,115,121,115,46,112,97,116,104,32,97,110,100,32,112,97,
+    99,107,97,103,101,32,95,95,112,97,116,104,95,95,32,97,
+    116,116,114,105,98,117,116,101,115,46,99,0,0,0,0,0,
+    0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
+    0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3,
+    161,0,131,1,68,0,93,44,92,2,125,0,125,1,124,1,
+    100,1,117,0,114,40,116,1,106,2,124,0,61,0,113,14,
+    116,4,124,1,100,2,131,2,114,58,124,1,160,5,161,0,
+    1,0,113,14,100,1,83,0,41,3,122,125,67,97,108,108,
+    32,116,104,101,32,105,110,118,97,108,105,100,97,116,101,95,
+    99,97,99,104,101,115,40,41,32,109,101,116,104,111,100,32,
+    111,110,32,97,108,108,32,112,97,116,104,32,101,110,116,114,
+    121,32,102,105,110,100,101,114,115,10,32,32,32,32,32,32,
+    32,32,115,116,111,114,101,100,32,105,110,32,115,121,115,46,
+    112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
+    99,104,101,115,32,40,119,104,101,114,101,32,105,109,112,108,
+    101,109,101,110,116,101,100,41,46,78,218,17,105,110,118,97,
+    108,105,100,97,116,101,95,99,97,99,104,101,115,41,6,218,
+    4,108,105,115,116,114,16,0,0,0,218,19,112,97,116,104,
+    95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,218,
+    5,105,116,101,109,115,114,140,0,0,0,114,64,1,0,0,
+    41,2,114,128,0,0,0,218,6,102,105,110,100,101,114,114,
+    7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,64,
+    1,0,0,249,4,0,0,115,16,0,0,0,22,4,8,1,
+    10,1,10,1,8,1,2,128,4,252,255,128,122,28,80,97,
+    116,104,70,105,110,100,101,114,46,105,110,118,97,108,105,100,
+    97,116,101,95,99,97,99,104,101,115,99,1,0,0,0,0,
+    0,0,0,0,0,0,0,2,0,0,0,9,0,0,0,67,
+    0,0,0,115,76,0,0,0,116,0,106,1,100,1,117,1,
+    114,28,116,0,106,1,115,28,116,2,160,3,100,2,116,4,
+    161,2,1,0,116,0,106,1,68,0,93,34,125,1,122,14,
+    124,1,124,0,131,1,87,0,2,0,1,0,83,0,4,0,
+    116,5,121,74,1,0,1,0,1,0,89,0,113,34,100,1,
+    83,0,119,0,41,3,122,46,83,101,97,114,99,104,32,115,
+    121,115,46,112,97,116,104,95,104,111,111,107,115,32,102,111,
+    114,32,97,32,102,105,110,100,101,114,32,102,111,114,32,39,
+    112,97,116,104,39,46,78,122,23,115,121,115,46,112,97,116,
+    104,95,104,111,111,107,115,32,105,115,32,101,109,112,116,121,
+    41,6,114,16,0,0,0,218,10,112,97,116,104,95,104,111,
+    111,107,115,114,88,0,0,0,114,89,0,0,0,114,149,0,
+    0,0,114,129,0,0,0,41,2,114,58,0,0,0,90,4,
+    104,111,111,107,114,7,0,0,0,114,7,0,0,0,114,8,
+    0,0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,
+    3,5,0,0,115,20,0,0,0,16,3,12,1,10,1,2,
+    1,14,1,12,1,4,1,4,2,2,253,255,128,122,22,80,
+    97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,
+    104,111,111,107,115,99,2,0,0,0,0,0,0,0,0,0,
+    0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,100,
+    0,0,0,124,1,100,1,107,2,114,40,122,12,116,0,160,
+    1,161,0,125,1,87,0,110,18,4,0,116,2,121,98,1,
+    0,1,0,1,0,89,0,100,2,83,0,122,16,116,3,106,
+    4,124,1,25,0,125,2,87,0,124,2,83,0,4,0,116,
+    5,121,96,1,0,1,0,1,0,124,0,160,6,124,1,161,
+    1,125,2,124,2,116,3,106,4,124,1,60,0,89,0,124,
+    2,83,0,119,0,119,0,41,3,122,210,71,101,116,32,116,
+    104,101,32,102,105,110,100,101,114,32,102,111,114,32,116,104,
+    101,32,112,97,116,104,32,101,110,116,114,121,32,102,114,111,
+    109,32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,
+    116,101,114,95,99,97,99,104,101,46,10,10,32,32,32,32,
+    32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,
+    101,110,116,114,121,32,105,115,32,110,111,116,32,105,110,32,
+    116,104,101,32,99,97,99,104,101,44,32,102,105,110,100,32,
+    116,104,101,32,97,112,112,114,111,112,114,105,97,116,101,32,
+    102,105,110,100,101,114,10,32,32,32,32,32,32,32,32,97,
+    110,100,32,99,97,99,104,101,32,105,116,46,32,73,102,32,
+    110,111,32,102,105,110,100,101,114,32,105,115,32,97,118,97,
+    105,108,97,98,108,101,44,32,115,116,111,114,101,32,78,111,
+    110,101,46,10,10,32,32,32,32,32,32,32,32,114,10,0,
+    0,0,78,41,7,114,19,0,0,0,114,70,0,0,0,218,
+    17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,114,
+    111,114,114,16,0,0,0,114,66,1,0,0,218,8,75,101,
+    121,69,114,114,111,114,114,70,1,0,0,41,3,114,209,0,
+    0,0,114,58,0,0,0,114,68,1,0,0,114,7,0,0,
+    0,114,7,0,0,0,114,8,0,0,0,218,20,95,112,97,
+    116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
+    101,16,5,0,0,115,30,0,0,0,8,8,2,1,12,1,
+    12,1,6,3,2,1,12,1,4,4,12,253,10,1,12,1,
+    4,1,2,253,2,250,255,128,122,31,80,97,116,104,70,105,
+    110,100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,
+    116,101,114,95,99,97,99,104,101,99,3,0,0,0,0,0,
+    0,0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,
+    0,0,115,82,0,0,0,116,0,124,2,100,1,131,2,114,
+    26,124,2,160,1,124,1,161,1,92,2,125,3,125,4,110,
+    14,124,2,160,2,124,1,161,1,125,3,103,0,125,4,124,
+    3,100,0,117,1,114,60,116,3,160,4,124,1,124,3,161,
+    2,83,0,116,3,160,5,124,1,100,0,161,2,125,5,124,
+    4,124,5,95,6,124,5,83,0,41,2,78,114,148,0,0,
+    0,41,7,114,140,0,0,0,114,148,0,0,0,114,217,0,
+    0,0,114,146,0,0,0,114,212,0,0,0,114,194,0,0,
+    0,114,189,0,0,0,41,6,114,209,0,0,0,114,150,0,
+    0,0,114,68,1,0,0,114,151,0,0,0,114,152,0,0,
+    0,114,198,0,0,0,114,7,0,0,0,114,7,0,0,0,
+    114,8,0,0,0,218,16,95,108,101,103,97,99,121,95,103,
+    101,116,95,115,112,101,99,38,5,0,0,115,20,0,0,0,
+    10,4,16,1,10,2,4,1,8,1,12,1,12,1,6,1,
+    4,1,255,128,122,27,80,97,116,104,70,105,110,100,101,114,
+    46,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,
+    99,78,99,4,0,0,0,0,0,0,0,0,0,0,0,9,
+    0,0,0,5,0,0,0,67,0,0,0,115,166,0,0,0,
+    103,0,125,4,124,2,68,0,93,134,125,5,116,0,124,5,
+    116,1,116,2,102,2,131,2,115,28,113,8,124,0,160,3,
+    124,5,161,1,125,6,124,6,100,1,117,1,114,142,116,4,
+    124,6,100,2,131,2,114,70,124,6,160,5,124,1,124,3,
+    161,2,125,7,110,12,124,0,160,6,124,1,124,6,161,2,
+    125,7,124,7,100,1,117,0,114,92,113,8,124,7,106,7,
+    100,1,117,1,114,110,124,7,2,0,1,0,83,0,124,7,
+    106,8,125,8,124,8,100,1,117,0,114,132,116,9,100,3,
+    131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,8,
+    116,11,160,12,124,1,100,1,161,2,125,7,124,4,124,7,
+    95,8,124,7,83,0,41,4,122,63,70,105,110,100,32,116,
+    104,101,32,108,111,97,100,101,114,32,111,114,32,110,97,109,
+    101,115,112,97,99,101,95,112,97,116,104,32,102,111,114,32,
+    116,104,105,115,32,109,111,100,117,108,101,47,112,97,99,107,
+    97,103,101,32,110,97,109,101,46,78,114,214,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,172,0,0,0,114,97,0,0,0,
+    218,5,98,121,116,101,115,114,73,1,0,0,114,140,0,0,
+    0,114,214,0,0,0,114,74,1,0,0,114,151,0,0,0,
+    114,189,0,0,0,114,129,0,0,0,114,178,0,0,0,114,
+    146,0,0,0,114,194,0,0,0,41,9,114,209,0,0,0,
+    114,150,0,0,0,114,58,0,0,0,114,213,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,68,1,0,0,114,198,0,0,0,
+    114,152,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
+    8,0,0,0,218,9,95,103,101,116,95,115,112,101,99,53,
+    5,0,0,115,44,0,0,0,4,5,8,1,14,1,2,1,
+    10,1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,
+    8,1,6,1,8,1,8,1,10,5,2,128,12,2,6,1,
+    4,1,255,128,122,20,80,97,116,104,70,105,110,100,101,114,
+    46,95,103,101,116,95,115,112,101,99,99,4,0,0,0,0,
+    0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,67,
+    0,0,0,115,94,0,0,0,124,2,100,1,117,0,114,14,
+    116,0,106,1,125,2,124,0,160,2,124,1,124,2,124,3,
+    161,3,125,4,124,4,100,1,117,0,114,40,100,1,83,0,
+    124,4,106,3,100,1,117,0,114,90,124,4,106,4,125,5,
+    124,5,114,86,100,1,124,4,95,5,116,6,124,1,124,5,
+    124,0,106,2,131,3,124,4,95,4,124,4,83,0,100,1,
+    83,0,124,4,83,0,41,2,122,141,84,114,121,32,116,111,
+    32,102,105,110,100,32,97,32,115,112,101,99,32,102,111,114,
+    32,39,102,117,108,108,110,97,109,101,39,32,111,110,32,115,
+    121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,
+    39,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,
+    115,101,97,114,99,104,32,105,115,32,98,97,115,101,100,32,
+    111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,
+    115,32,97,110,100,32,115,121,115,46,112,97,116,104,95,105,
+    109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,32,
+    32,32,32,32,32,32,32,78,41,7,114,16,0,0,0,114,
+    58,0,0,0,114,77,1,0,0,114,151,0,0,0,114,189,
+    0,0,0,114,192,0,0,0,114,33,1,0,0,41,6,114,
+    209,0,0,0,114,150,0,0,0,114,58,0,0,0,114,213,
+    0,0,0,114,198,0,0,0,114,76,1,0,0,114,7,0,
+    0,0,114,7,0,0,0,114,8,0,0,0,114,214,0,0,
+    0,85,5,0,0,115,28,0,0,0,8,6,6,1,14,1,
+    8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1,
+    4,2,4,2,255,128,122,20,80,97,116,104,70,105,110,100,
+    101,114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,
+    0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,
+    0,67,0,0,0,115,30,0,0,0,124,0,160,0,124,1,
+    124,2,161,2,125,3,124,3,100,1,117,0,114,24,100,1,
+    83,0,124,3,106,1,83,0,41,2,122,170,102,105,110,100,
+    32,116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,
+    121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,
+    39,32,98,97,115,101,100,32,111,110,32,115,121,115,46,112,
+    97,116,104,95,104,111,111,107,115,32,97,110,100,10,32,32,
+    32,32,32,32,32,32,115,121,115,46,112,97,116,104,95,105,
+    109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,10,
+    32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,
+    104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,
+    100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,
+    99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,
+    32,32,32,32,32,32,78,114,215,0,0,0,114,216,0,0,
     0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
-    114,232,0,0,0,223,4,0,0,114,60,1,0,0,122,28,
-    95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
-    46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,
-    0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
-    0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1,
-    124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1,
-    161,2,83,0,41,3,122,98,76,111,97,100,32,97,32,110,
-    97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46,
+    114,217,0,0,0,109,5,0,0,115,10,0,0,0,12,8,
+    8,1,4,1,6,1,255,128,122,22,80,97,116,104,70,105,
+    110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,
+    99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+    0,4,0,0,0,79,0,0,0,115,28,0,0,0,100,1,
+    100,2,108,0,109,1,125,2,1,0,124,2,106,2,124,0,
+    105,0,124,1,164,1,142,1,83,0,41,4,97,32,1,0,
+    0,10,32,32,32,32,32,32,32,32,70,105,110,100,32,100,
+    105,115,116,114,105,98,117,116,105,111,110,115,46,10,10,32,
+    32,32,32,32,32,32,32,82,101,116,117,114,110,32,97,110,
+    32,105,116,101,114,97,98,108,101,32,111,102,32,97,108,108,
+    32,68,105,115,116,114,105,98,117,116,105,111,110,32,105,110,
+    115,116,97,110,99,101,115,32,99,97,112,97,98,108,101,32,
+    111,102,10,32,32,32,32,32,32,32,32,108,111,97,100,105,
+    110,103,32,116,104,101,32,109,101,116,97,100,97,116,97,32,
+    102,111,114,32,112,97,99,107,97,103,101,115,32,109,97,116,
+    99,104,105,110,103,32,96,96,99,111,110,116,101,120,116,46,
+    110,97,109,101,96,96,10,32,32,32,32,32,32,32,32,40,
+    111,114,32,97,108,108,32,110,97,109,101,115,32,105,102,32,
+    96,96,78,111,110,101,96,96,32,105,110,100,105,99,97,116,
+    101,100,41,32,97,108,111,110,103,32,116,104,101,32,112,97,
+    116,104,115,32,105,110,32,116,104,101,32,108,105,115,116,10,
+    32,32,32,32,32,32,32,32,111,102,32,100,105,114,101,99,
+    116,111,114,105,101,115,32,96,96,99,111,110,116,101,120,116,
+    46,112,97,116,104,96,96,46,10,32,32,32,32,32,32,32,
+    32,114,0,0,0,0,41,1,218,18,77,101,116,97,100,97,
+    116,97,80,97,116,104,70,105,110,100,101,114,78,41,3,90,
+    18,105,109,112,111,114,116,108,105,98,46,109,101,116,97,100,
+    97,116,97,114,78,1,0,0,218,18,102,105,110,100,95,100,
+    105,115,116,114,105,98,117,116,105,111,110,115,41,3,114,131,
+    0,0,0,114,132,0,0,0,114,78,1,0,0,114,7,0,
+    0,0,114,7,0,0,0,114,8,0,0,0,114,79,1,0,
+    0,122,5,0,0,115,6,0,0,0,12,10,16,1,255,128,
+    122,29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,
+    100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41,
+    1,78,41,2,78,78,41,1,78,41,14,114,137,0,0,0,
+    114,136,0,0,0,114,138,0,0,0,114,139,0,0,0,114,
+    220,0,0,0,114,64,1,0,0,114,70,1,0,0,114,221,
+    0,0,0,114,73,1,0,0,114,74,1,0,0,114,77,1,
+    0,0,114,214,0,0,0,114,217,0,0,0,114,79,1,0,
+    0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,
+    114,8,0,0,0,114,63,1,0,0,245,4,0,0,115,38,
+    0,0,0,8,0,4,2,2,2,10,1,2,9,10,1,2,
+    12,10,1,2,21,10,1,2,14,12,1,2,31,12,1,2,
+    23,12,1,2,12,14,1,255,128,114,63,1,0,0,99,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,
+    0,0,0,64,0,0,0,115,90,0,0,0,101,0,90,1,
+    100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,
+    100,4,100,5,132,0,90,5,101,6,90,7,100,6,100,7,
+    132,0,90,8,100,8,100,9,132,0,90,9,100,19,100,11,
+    100,12,132,1,90,10,100,13,100,14,132,0,90,11,101,12,
+    100,15,100,16,132,0,131,1,90,13,100,17,100,18,132,0,
+    90,14,100,10,83,0,41,20,218,10,70,105,108,101,70,105,
+    110,100,101,114,122,172,70,105,108,101,45,98,97,115,101,100,
+    32,102,105,110,100,101,114,46,10,10,32,32,32,32,73,110,
+    116,101,114,97,99,116,105,111,110,115,32,119,105,116,104,32,
+    116,104,101,32,102,105,108,101,32,115,121,115,116,101,109,32,
+    97,114,101,32,99,97,99,104,101,100,32,102,111,114,32,112,
+    101,114,102,111,114,109,97,110,99,101,44,32,98,101,105,110,
+    103,10,32,32,32,32,114,101,102,114,101,115,104,101,100,32,
+    119,104,101,110,32,116,104,101,32,100,105,114,101,99,116,111,
+    114,121,32,116,104,101,32,102,105,110,100,101,114,32,105,115,
+    32,104,97,110,100,108,105,110,103,32,104,97,115,32,98,101,
+    101,110,32,109,111,100,105,102,105,101,100,46,10,10,32,32,
+    32,32,99,2,0,0,0,0,0,0,0,0,0,0,0,5,
+    0,0,0,6,0,0,0,7,0,0,0,115,84,0,0,0,
+    103,0,125,3,124,2,68,0,93,32,92,2,137,0,125,4,
+    124,3,160,0,135,0,102,1,100,1,100,2,132,8,124,4,
+    68,0,131,1,161,1,1,0,113,8,124,3,124,0,95,1,
+    124,1,112,54,100,3,124,0,95,2,100,4,124,0,95,3,
+    116,4,131,0,124,0,95,5,116,4,131,0,124,0,95,6,
+    100,5,83,0,41,6,122,154,73,110,105,116,105,97,108,105,
+    122,101,32,119,105,116,104,32,116,104,101,32,112,97,116,104,
+    32,116,111,32,115,101,97,114,99,104,32,111,110,32,97,110,
+    100,32,97,32,118,97,114,105,97,98,108,101,32,110,117,109,
+    98,101,114,32,111,102,10,32,32,32,32,32,32,32,32,50,
+    45,116,117,112,108,101,115,32,99,111,110,116,97,105,110,105,
+    110,103,32,116,104,101,32,108,111,97,100,101,114,32,97,110,
+    100,32,116,104,101,32,102,105,108,101,32,115,117,102,102,105,
+    120,101,115,32,116,104,101,32,108,111,97,100,101,114,10,32,
+    32,32,32,32,32,32,32,114,101,99,111,103,110,105,122,101,
+    115,46,99,1,0,0,0,0,0,0,0,0,0,0,0,2,
+    0,0,0,3,0,0,0,51,0,0,0,115,22,0,0,0,
+    124,0,93,14,125,1,124,1,136,0,102,2,86,0,1,0,
+    113,2,100,0,83,0,114,121,0,0,0,114,7,0,0,0,
+    114,29,1,0,0,169,1,114,151,0,0,0,114,7,0,0,
+    0,114,8,0,0,0,114,9,0,0,0,151,5,0,0,114,
+    14,0,0,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,86,0,0,
+    0,114,116,0,0,0,78,41,7,114,178,0,0,0,218,8,
+    95,108,111,97,100,101,114,115,114,58,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,130,0,0,0,114,58,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,200,0,0,0,114,7,0,0,0,
+    114,81,1,0,0,114,8,0,0,0,114,223,0,0,0,145,
+    5,0,0,115,18,0,0,0,4,4,12,1,26,1,6,1,
+    10,2,6,1,8,1,12,1,255,128,122,19,70,105,108,101,
+    70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,99,
+    1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+    2,0,0,0,67,0,0,0,115,10,0,0,0,100,1,124,
+    0,95,0,100,2,83,0,41,3,122,31,73,110,118,97,108,
+    105,100,97,116,101,32,116,104,101,32,100,105,114,101,99,116,
+    111,114,121,32,109,116,105,109,101,46,114,116,0,0,0,78,
+    41,1,114,83,1,0,0,114,8,1,0,0,114,7,0,0,
+    0,114,7,0,0,0,114,8,0,0,0,114,64,1,0,0,
+    159,5,0,0,114,69,0,0,0,122,28,70,105,108,101,70,
+    105,110,100,101,114,46,105,110,118,97,108,105,100,97,116,101,
+    95,99,97,99,104,101,115,99,2,0,0,0,0,0,0,0,
+    0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,
+    115,42,0,0,0,124,0,160,0,124,1,161,1,125,2,124,
+    2,100,1,117,0,114,26,100,1,103,0,102,2,83,0,124,
+    2,106,1,124,2,106,2,112,38,103,0,102,2,83,0,41,
+    2,122,197,84,114,121,32,116,111,32,102,105,110,100,32,97,
+    32,108,111,97,100,101,114,32,102,111,114,32,116,104,101,32,
+    115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,
+    44,32,111,114,32,116,104,101,32,110,97,109,101,115,112,97,
+    99,101,10,32,32,32,32,32,32,32,32,112,97,99,107,97,
+    103,101,32,112,111,114,116,105,111,110,115,46,32,82,101,116,
+    117,114,110,115,32,40,108,111,97,100,101,114,44,32,108,105,
+    115,116,45,111,102,45,112,111,114,116,105,111,110,115,41,46,
     10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,
     101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,
-    116,101,100,46,32,32,85,115,101,32,101,120,101,99,95,109,
-    111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46,
-    10,10,32,32,32,32,32,32,32,32,122,38,110,97,109,101,
-    115,112,97,99,101,32,109,111,100,117,108,101,32,108,111,97,
-    100,101,100,32,119,105,116,104,32,112,97,116,104,32,123,33,
-    114,125,78,41,4,114,146,0,0,0,114,160,0,0,0,114,
-    34,1,0,0,114,233,0,0,0,114,234,0,0,0,114,7,
-    0,0,0,114,7,0,0,0,114,8,0,0,0,114,235,0,
-    0,0,226,4,0,0,115,10,0,0,0,6,7,4,1,4,
-    255,12,3,255,128,122,28,95,78,97,109,101,115,112,97,99,
-    101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,
-    117,108,101,78,41,12,114,137,0,0,0,114,136,0,0,0,
-    114,138,0,0,0,114,223,0,0,0,114,220,0,0,0,114,
-    59,1,0,0,114,193,0,0,0,114,244,0,0,0,114,228,
-    0,0,0,114,226,0,0,0,114,232,0,0,0,114,235,0,
-    0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,114,58,1,0,0,198,4,0,0,115,
-    22,0,0,0,8,0,8,1,2,3,10,1,8,8,8,3,
-    8,3,8,3,8,3,12,3,255,128,114,58,1,0,0,99,
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-    4,0,0,0,64,0,0,0,115,118,0,0,0,101,0,90,
-    1,100,0,90,2,100,1,90,3,101,4,100,2,100,3,132,
-    0,131,1,90,5,101,4,100,4,100,5,132,0,131,1,90,
-    6,101,7,100,6,100,7,132,0,131,1,90,8,101,7,100,
-    8,100,9,132,0,131,1,90,9,101,7,100,19,100,11,100,
-    12,132,1,131,1,90,10,101,7,100,20,100,13,100,14,132,
-    1,131,1,90,11,101,7,100,21,100,15,100,16,132,1,131,
-    1,90,12,101,4,100,17,100,18,132,0,131,1,90,13,100,
-    10,83,0,41,22,218,10,80,97,116,104,70,105,110,100,101,
-    114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,
-    100,101,114,32,102,111,114,32,115,121,115,46,112,97,116,104,
-    32,97,110,100,32,112,97,99,107,97,103,101,32,95,95,112,
-    97,116,104,95,95,32,97,116,116,114,105,98,117,116,101,115,
-    46,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
-    0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116,
-    0,116,1,106,2,160,3,161,0,131,1,68,0,93,44,92,
-    2,125,0,125,1,124,1,100,1,117,0,114,40,116,1,106,
-    2,124,0,61,0,113,14,116,4,124,1,100,2,131,2,114,
-    58,124,1,160,5,161,0,1,0,113,14,100,1,83,0,41,
-    3,122,125,67,97,108,108,32,116,104,101,32,105,110,118,97,
-    108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,32,
-    109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,97,
-    116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,115,
-    10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,32,
-    105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,111,
-    114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,101,
-    114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,46,
-    78,218,17,105,110,118,97,108,105,100,97,116,101,95,99,97,
-    99,104,101,115,41,6,218,4,108,105,115,116,114,16,0,0,
-    0,218,19,112,97,116,104,95,105,109,112,111,114,116,101,114,
-    95,99,97,99,104,101,218,5,105,116,101,109,115,114,140,0,
-    0,0,114,62,1,0,0,41,2,114,128,0,0,0,218,6,
-    102,105,110,100,101,114,114,7,0,0,0,114,7,0,0,0,
-    114,8,0,0,0,114,62,1,0,0,245,4,0,0,115,16,
-    0,0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,
-    252,255,128,122,28,80,97,116,104,70,105,110,100,101,114,46,
-    105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,
-    115,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,
-    0,0,9,0,0,0,67,0,0,0,115,76,0,0,0,116,
-    0,106,1,100,1,117,1,114,28,116,0,106,1,115,28,116,
-    2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68,
-    0,93,34,125,1,122,14,124,1,124,0,131,1,87,0,2,
-    0,1,0,83,0,4,0,116,5,121,74,1,0,1,0,1,
-    0,89,0,113,34,100,1,83,0,119,0,41,3,122,46,83,
-    101,97,114,99,104,32,115,121,115,46,112,97,116,104,95,104,
-    111,111,107,115,32,102,111,114,32,97,32,102,105,110,100,101,
-    114,32,102,111,114,32,39,112,97,116,104,39,46,78,122,23,
-    115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,105,
-    115,32,101,109,112,116,121,41,6,114,16,0,0,0,218,10,
-    112,97,116,104,95,104,111,111,107,115,114,88,0,0,0,114,
-    89,0,0,0,114,149,0,0,0,114,129,0,0,0,41,2,
-    114,58,0,0,0,90,4,104,111,111,107,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,
-    104,95,104,111,111,107,115,255,4,0,0,115,20,0,0,0,
-    16,3,12,1,10,1,2,1,14,1,12,1,4,1,4,2,
-    2,253,255,128,122,22,80,97,116,104,70,105,110,100,101,114,
-    46,95,112,97,116,104,95,104,111,111,107,115,99,2,0,0,
-    0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,
-    0,67,0,0,0,115,100,0,0,0,124,1,100,1,107,2,
-    114,40,122,12,116,0,160,1,161,0,125,1,87,0,110,18,
-    4,0,116,2,121,98,1,0,1,0,1,0,89,0,100,2,
-    83,0,122,16,116,3,106,4,124,1,25,0,125,2,87,0,
-    124,2,83,0,4,0,116,5,121,96,1,0,1,0,1,0,
-    124,0,160,6,124,1,161,1,125,2,124,2,116,3,106,4,
-    124,1,60,0,89,0,124,2,83,0,119,0,119,0,41,3,
-    122,210,71,101,116,32,116,104,101,32,102,105,110,100,101,114,
-    32,102,111,114,32,116,104,101,32,112,97,116,104,32,101,110,
-    116,114,121,32,102,114,111,109,32,115,121,115,46,112,97,116,
-    104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,
-    46,10,10,32,32,32,32,32,32,32,32,73,102,32,116,104,
-    101,32,112,97,116,104,32,101,110,116,114,121,32,105,115,32,
-    110,111,116,32,105,110,32,116,104,101,32,99,97,99,104,101,
-    44,32,102,105,110,100,32,116,104,101,32,97,112,112,114,111,
-    112,114,105,97,116,101,32,102,105,110,100,101,114,10,32,32,
-    32,32,32,32,32,32,97,110,100,32,99,97,99,104,101,32,
-    105,116,46,32,73,102,32,110,111,32,102,105,110,100,101,114,
-    32,105,115,32,97,118,97,105,108,97,98,108,101,44,32,115,
-    116,111,114,101,32,78,111,110,101,46,10,10,32,32,32,32,
-    32,32,32,32,114,10,0,0,0,78,41,7,114,19,0,0,
-    0,114,70,0,0,0,218,17,70,105,108,101,78,111,116,70,
-    111,117,110,100,69,114,114,111,114,114,16,0,0,0,114,64,
-    1,0,0,218,8,75,101,121,69,114,114,111,114,114,68,1,
-    0,0,41,3,114,209,0,0,0,114,58,0,0,0,114,66,
-    1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,218,20,95,112,97,116,104,95,105,109,112,111,114,116,
-    101,114,95,99,97,99,104,101,12,5,0,0,115,30,0,0,
-    0,8,8,2,1,12,1,12,1,6,3,2,1,12,1,4,
-    4,12,253,10,1,12,1,4,1,2,253,2,250,255,128,122,
-    31,80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,
-    104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,
-    99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
-    0,4,0,0,0,67,0,0,0,115,82,0,0,0,116,0,
-    124,2,100,1,131,2,114,26,124,2,160,1,124,1,161,1,
-    92,2,125,3,125,4,110,14,124,2,160,2,124,1,161,1,
-    125,3,103,0,125,4,124,3,100,0,117,1,114,60,116,3,
-    160,4,124,1,124,3,161,2,83,0,116,3,160,5,124,1,
-    100,0,161,2,125,5,124,4,124,5,95,6,124,5,83,0,
-    41,2,78,114,148,0,0,0,41,7,114,140,0,0,0,114,
-    148,0,0,0,114,217,0,0,0,114,146,0,0,0,114,212,
-    0,0,0,114,194,0,0,0,114,189,0,0,0,41,6,114,
-    209,0,0,0,114,150,0,0,0,114,66,1,0,0,114,151,
-    0,0,0,114,152,0,0,0,114,198,0,0,0,114,7,0,
-    0,0,114,7,0,0,0,114,8,0,0,0,218,16,95,108,
-    101,103,97,99,121,95,103,101,116,95,115,112,101,99,34,5,
-    0,0,115,20,0,0,0,10,4,16,1,10,2,4,1,8,
-    1,12,1,12,1,6,1,4,1,255,128,122,27,80,97,116,
-    104,70,105,110,100,101,114,46,95,108,101,103,97,99,121,95,
-    103,101,116,95,115,112,101,99,78,99,4,0,0,0,0,0,
-    0,0,0,0,0,0,9,0,0,0,5,0,0,0,67,0,
-    0,0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,
-    134,125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,
-    28,113,8,124,0,160,3,124,5,161,1,125,6,124,6,100,
-    1,117,1,114,142,116,4,124,6,100,2,131,2,114,70,124,
-    6,160,5,124,1,124,3,161,2,125,7,110,12,124,0,160,
-    6,124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,
-    92,113,8,124,7,106,7,100,1,117,1,114,110,124,7,2,
-    0,1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,
-    0,114,132,116,9,100,3,131,1,130,1,124,4,160,10,124,
-    8,161,1,1,0,113,8,116,11,160,12,124,1,100,1,161,
-    2,125,7,124,4,124,7,95,8,124,7,83,0,41,4,122,
-    63,70,105,110,100,32,116,104,101,32,108,111,97,100,101,114,
-    32,111,114,32,110,97,109,101,115,112,97,99,101,95,112,97,
-    116,104,32,102,111,114,32,116,104,105,115,32,109,111,100,117,
-    108,101,47,112,97,99,107,97,103,101,32,110,97,109,101,46,
-    78,114,214,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,172,0,
-    0,0,114,97,0,0,0,218,5,98,121,116,101,115,114,71,
-    1,0,0,114,140,0,0,0,114,214,0,0,0,114,72,1,
-    0,0,114,151,0,0,0,114,189,0,0,0,114,129,0,0,
-    0,114,178,0,0,0,114,146,0,0,0,114,194,0,0,0,
-    41,9,114,209,0,0,0,114,150,0,0,0,114,58,0,0,
-    0,114,213,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,66,1,
-    0,0,114,198,0,0,0,114,152,0,0,0,114,7,0,0,
-    0,114,7,0,0,0,114,8,0,0,0,218,9,95,103,101,
-    116,95,115,112,101,99,49,5,0,0,115,44,0,0,0,4,
-    5,8,1,14,1,2,1,10,1,8,1,10,1,14,1,12,
-    2,8,1,2,1,10,1,8,1,6,1,8,1,8,1,10,
-    5,2,128,12,2,6,1,4,1,255,128,122,20,80,97,116,
-    104,70,105,110,100,101,114,46,95,103,101,116,95,115,112,101,
-    99,99,4,0,0,0,0,0,0,0,0,0,0,0,6,0,
-    0,0,5,0,0,0,67,0,0,0,115,94,0,0,0,124,
-    2,100,1,117,0,114,14,116,0,106,1,125,2,124,0,160,
-    2,124,1,124,2,124,3,161,3,125,4,124,4,100,1,117,
-    0,114,40,100,1,83,0,124,4,106,3,100,1,117,0,114,
-    90,124,4,106,4,125,5,124,5,114,86,100,1,124,4,95,
-    5,116,6,124,1,124,5,124,0,106,2,131,3,124,4,95,
-    4,124,4,83,0,100,1,83,0,124,4,83,0,41,2,122,
-    141,84,114,121,32,116,111,32,102,105,110,100,32,97,32,115,
-    112,101,99,32,102,111,114,32,39,102,117,108,108,110,97,109,
-    101,39,32,111,110,32,115,121,115,46,112,97,116,104,32,111,
-    114,32,39,112,97,116,104,39,46,10,10,32,32,32,32,32,
-    32,32,32,84,104,101,32,115,101,97,114,99,104,32,105,115,
-    32,98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,
-    116,104,95,104,111,111,107,115,32,97,110,100,32,115,121,115,
-    46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,
-    97,99,104,101,46,10,32,32,32,32,32,32,32,32,78,41,
-    7,114,16,0,0,0,114,58,0,0,0,114,75,1,0,0,
-    114,151,0,0,0,114,189,0,0,0,114,192,0,0,0,114,
-    32,1,0,0,41,6,114,209,0,0,0,114,150,0,0,0,
-    114,58,0,0,0,114,213,0,0,0,114,198,0,0,0,114,
-    74,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,214,0,0,0,81,5,0,0,115,28,0,0,
-    0,8,6,6,1,14,1,8,1,4,1,10,1,6,1,4,
-    1,6,3,16,1,4,1,4,2,4,2,255,128,122,20,80,
-    97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,115,
-    112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0,
-    4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0,
-    0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100,
-    1,117,0,114,24,100,1,83,0,124,3,106,1,83,0,41,
-    2,122,170,102,105,110,100,32,116,104,101,32,109,111,100,117,
-    108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,111,
-    114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,111,
-    110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,
-    32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,115,
-    46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,
-    97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,84,
-    104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,
-    112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102,
-    105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,
-    97,100,46,10,10,32,32,32,32,32,32,32,32,78,114,215,
-    0,0,0,114,216,0,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,8,0,0,0,114,217,0,0,0,105,5,0,0,
-    115,10,0,0,0,12,8,8,1,4,1,6,1,255,128,122,
-    22,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,
-    95,109,111,100,117,108,101,99,0,0,0,0,0,0,0,0,
-    0,0,0,0,3,0,0,0,4,0,0,0,79,0,0,0,
-    115,28,0,0,0,100,1,100,2,108,0,109,1,125,2,1,
-    0,124,2,106,2,124,0,105,0,124,1,164,1,142,1,83,
-    0,41,4,97,32,1,0,0,10,32,32,32,32,32,32,32,
-    32,70,105,110,100,32,100,105,115,116,114,105,98,117,116,105,
-    111,110,115,46,10,10,32,32,32,32,32,32,32,32,82,101,
-    116,117,114,110,32,97,110,32,105,116,101,114,97,98,108,101,
-    32,111,102,32,97,108,108,32,68,105,115,116,114,105,98,117,
-    116,105,111,110,32,105,110,115,116,97,110,99,101,115,32,99,
-    97,112,97,98,108,101,32,111,102,10,32,32,32,32,32,32,
-    32,32,108,111,97,100,105,110,103,32,116,104,101,32,109,101,
-    116,97,100,97,116,97,32,102,111,114,32,112,97,99,107,97,
-    103,101,115,32,109,97,116,99,104,105,110,103,32,96,96,99,
-    111,110,116,101,120,116,46,110,97,109,101,96,96,10,32,32,
-    32,32,32,32,32,32,40,111,114,32,97,108,108,32,110,97,
-    109,101,115,32,105,102,32,96,96,78,111,110,101,96,96,32,
-    105,110,100,105,99,97,116,101,100,41,32,97,108,111,110,103,
-    32,116,104,101,32,112,97,116,104,115,32,105,110,32,116,104,
-    101,32,108,105,115,116,10,32,32,32,32,32,32,32,32,111,
-    102,32,100,105,114,101,99,116,111,114,105,101,115,32,96,96,
-    99,111,110,116,101,120,116,46,112,97,116,104,96,96,46,10,
-    32,32,32,32,32,32,32,32,114,0,0,0,0,41,1,218,
-    18,77,101,116,97,100,97,116,97,80,97,116,104,70,105,110,
-    100,101,114,78,41,3,90,18,105,109,112,111,114,116,108,105,
-    98,46,109,101,116,97,100,97,116,97,114,76,1,0,0,218,
-    18,102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,
-    111,110,115,41,3,114,131,0,0,0,114,132,0,0,0,114,
-    76,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,114,77,1,0,0,118,5,0,0,115,6,0,0,
-    0,12,10,16,1,255,128,122,29,80,97,116,104,70,105,110,
-    100,101,114,46,102,105,110,100,95,100,105,115,116,114,105,98,
-    117,116,105,111,110,115,41,1,78,41,2,78,78,41,1,78,
-    41,14,114,137,0,0,0,114,136,0,0,0,114,138,0,0,
-    0,114,139,0,0,0,114,220,0,0,0,114,62,1,0,0,
-    114,68,1,0,0,114,221,0,0,0,114,71,1,0,0,114,
-    72,1,0,0,114,75,1,0,0,114,214,0,0,0,114,217,
-    0,0,0,114,77,1,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,7,0,0,0,114,8,0,0,0,114,61,1,0,
-    0,241,4,0,0,115,38,0,0,0,8,0,4,2,2,2,
-    10,1,2,9,10,1,2,12,10,1,2,21,10,1,2,14,
-    12,1,2,31,12,1,2,23,12,1,2,12,14,1,255,128,
-    114,61,1,0,0,99,0,0,0,0,0,0,0,0,0,0,
-    0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,90,
-    0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
-    2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,101,
-    6,90,7,100,6,100,7,132,0,90,8,100,8,100,9,132,
-    0,90,9,100,19,100,11,100,12,132,1,90,10,100,13,100,
-    14,132,0,90,11,101,12,100,15,100,16,132,0,131,1,90,
-    13,100,17,100,18,132,0,90,14,100,10,83,0,41,20,218,
-    10,70,105,108,101,70,105,110,100,101,114,122,172,70,105,108,
-    101,45,98,97,115,101,100,32,102,105,110,100,101,114,46,10,
-    10,32,32,32,32,73,110,116,101,114,97,99,116,105,111,110,
-    115,32,119,105,116,104,32,116,104,101,32,102,105,108,101,32,
-    115,121,115,116,101,109,32,97,114,101,32,99,97,99,104,101,
-    100,32,102,111,114,32,112,101,114,102,111,114,109,97,110,99,
-    101,44,32,98,101,105,110,103,10,32,32,32,32,114,101,102,
-    114,101,115,104,101,100,32,119,104,101,110,32,116,104,101,32,
-    100,105,114,101,99,116,111,114,121,32,116,104,101,32,102,105,
-    110,100,101,114,32,105,115,32,104,97,110,100,108,105,110,103,
-    32,104,97,115,32,98,101,101,110,32,109,111,100,105,102,105,
-    101,100,46,10,10,32,32,32,32,99,2,0,0,0,0,0,
-    0,0,0,0,0,0,5,0,0,0,6,0,0,0,7,0,
-    0,0,115,84,0,0,0,103,0,125,3,124,2,68,0,93,
-    32,92,2,137,0,125,4,124,3,160,0,135,0,102,1,100,
-    1,100,2,132,8,124,4,68,0,131,1,161,1,1,0,113,
-    8,124,3,124,0,95,1,124,1,112,54,100,3,124,0,95,
-    2,100,4,124,0,95,3,116,4,131,0,124,0,95,5,116,
-    4,131,0,124,0,95,6,100,5,83,0,41,6,122,154,73,
-    110,105,116,105,97,108,105,122,101,32,119,105,116,104,32,116,
-    104,101,32,112,97,116,104,32,116,111,32,115,101,97,114,99,
-    104,32,111,110,32,97,110,100,32,97,32,118,97,114,105,97,
-    98,108,101,32,110,117,109,98,101,114,32,111,102,10,32,32,
-    32,32,32,32,32,32,50,45,116,117,112,108,101,115,32,99,
-    111,110,116,97,105,110,105,110,103,32,116,104,101,32,108,111,
-    97,100,101,114,32,97,110,100,32,116,104,101,32,102,105,108,
-    101,32,115,117,102,102,105,120,101,115,32,116,104,101,32,108,
-    111,97,100,101,114,10,32,32,32,32,32,32,32,32,114,101,
-    99,111,103,110,105,122,101,115,46,99,1,0,0,0,0,0,
-    0,0,0,0,0,0,2,0,0,0,3,0,0,0,51,0,
-    0,0,115,22,0,0,0,124,0,93,14,125,1,124,1,136,
-    0,102,2,86,0,1,0,113,2,100,0,83,0,114,121,0,
-    0,0,114,7,0,0,0,114,28,1,0,0,169,1,114,151,
-    0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0,
-    0,0,147,5,0,0,114,14,0,0,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,86,0,0,0,114,116,0,0,0,78,41,7,
-    114,178,0,0,0,218,8,95,108,111,97,100,101,114,115,114,
-    58,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,130,0,0,0,114,
-    58,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,200,0,
-    0,0,114,7,0,0,0,114,79,1,0,0,114,8,0,0,
-    0,114,223,0,0,0,141,5,0,0,115,18,0,0,0,4,
-    4,12,1,26,1,6,1,10,2,6,1,8,1,12,1,255,
-    128,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,
-    105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,
-    0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,
-    10,0,0,0,100,1,124,0,95,0,100,2,83,0,41,3,
-    122,31,73,110,118,97,108,105,100,97,116,101,32,116,104,101,
-    32,100,105,114,101,99,116,111,114,121,32,109,116,105,109,101,
-    46,114,116,0,0,0,78,41,1,114,81,1,0,0,114,8,
-    1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,62,1,0,0,155,5,0,0,114,69,0,0,0,
-    122,28,70,105,108,101,70,105,110,100,101,114,46,105,110,118,
-    97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,
-    0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,
-    0,0,0,67,0,0,0,115,42,0,0,0,124,0,160,0,
-    124,1,161,1,125,2,124,2,100,1,117,0,114,26,100,1,
-    103,0,102,2,83,0,124,2,106,1,124,2,106,2,112,38,
-    103,0,102,2,83,0,41,2,122,197,84,114,121,32,116,111,
-    32,102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,
-    111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,
-    32,109,111,100,117,108,101,44,32,111,114,32,116,104,101,32,
-    110,97,109,101,115,112,97,99,101,10,32,32,32,32,32,32,
-    32,32,112,97,99,107,97,103,101,32,112,111,114,116,105,111,
-    110,115,46,32,82,101,116,117,114,110,115,32,40,108,111,97,
-    100,101,114,44,32,108,105,115,116,45,111,102,45,112,111,114,
-    116,105,111,110,115,41,46,10,10,32,32,32,32,32,32,32,
-    32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,
-    100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,
-    32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,
-    116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,
-    41,3,114,214,0,0,0,114,151,0,0,0,114,189,0,0,
-    0,41,3,114,130,0,0,0,114,150,0,0,0,114,198,0,
-    0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,
-    0,114,148,0,0,0,161,5,0,0,115,10,0,0,0,10,
-    7,8,1,8,1,16,1,255,128,122,22,70,105,108,101,70,
-    105,110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,
-    114,99,6,0,0,0,0,0,0,0,0,0,0,0,7,0,
-    0,0,6,0,0,0,67,0,0,0,115,26,0,0,0,124,
-    1,124,2,124,3,131,2,125,6,116,0,124,2,124,3,124,
-    6,124,4,100,1,141,4,83,0,41,2,78,114,188,0,0,
-    0,41,1,114,201,0,0,0,41,7,114,130,0,0,0,114,
-    199,0,0,0,114,150,0,0,0,114,58,0,0,0,90,4,
-    115,109,115,108,114,213,0,0,0,114,151,0,0,0,114,7,
-    0,0,0,114,7,0,0,0,114,8,0,0,0,114,75,1,
-    0,0,173,5,0,0,115,10,0,0,0,10,1,8,1,2,
-    1,6,255,255,128,122,20,70,105,108,101,70,105,110,100,101,
-    114,46,95,103,101,116,95,115,112,101,99,78,99,3,0,0,
-    0,0,0,0,0,0,0,0,0,14,0,0,0,8,0,0,
-    0,67,0,0,0,115,100,1,0,0,100,1,125,3,124,1,
-    160,0,100,2,161,1,100,3,25,0,125,4,122,24,116,1,
-    124,0,106,2,112,34,116,3,160,4,161,0,131,1,106,5,
-    125,5,87,0,110,20,4,0,116,6,144,1,121,98,1,0,
-    1,0,1,0,100,4,125,5,89,0,124,5,124,0,106,7,
-    107,3,114,88,124,0,160,8,161,0,1,0,124,5,124,0,
-    95,7,116,9,131,0,114,110,124,0,106,10,125,6,124,4,
-    160,11,161,0,125,7,110,10,124,0,106,12,125,6,124,4,
-    125,7,124,7,124,6,118,0,114,214,116,13,124,0,106,2,
-    124,4,131,2,125,8,124,0,106,14,68,0,93,58,92,2,
-    125,9,125,10,100,5,124,9,23,0,125,11,116,13,124,8,
-    124,11,131,2,125,12,116,15,124,12,131,1,114,204,124,0,
-    160,16,124,10,124,1,124,12,124,8,103,1,124,2,161,5,
-    2,0,1,0,83,0,113,146,116,17,124,8,131,1,125,3,
-    124,0,106,14,68,0,93,86,92,2,125,9,125,10,116,13,
-    124,0,106,2,124,4,124,9,23,0,131,2,125,12,116,18,
-    106,19,100,6,124,12,100,3,100,7,141,3,1,0,124,7,
-    124,9,23,0,124,6,118,0,144,1,114,50,116,15,124,12,
-    131,1,144,1,114,50,124,0,160,16,124,10,124,1,124,12,
-    100,8,124,2,161,5,2,0,1,0,83,0,113,220,124,3,
-    144,1,114,94,116,18,160,19,100,9,124,8,161,2,1,0,
-    116,18,160,20,124,1,100,8,161,2,125,13,124,8,103,1,
-    124,13,95,21,124,13,83,0,100,8,83,0,119,0,41,10,
-    122,111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,
-    115,112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,
-    99,105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,
-    32,32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,
-    116,104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,
-    99,44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,
-    116,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,
-    32,70,114,86,0,0,0,114,45,0,0,0,114,116,0,0,
-    0,114,223,0,0,0,122,9,116,114,121,105,110,103,32,123,
-    125,41,1,90,9,118,101,114,98,111,115,105,116,121,78,122,
-    25,112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,
-    97,99,101,32,102,111,114,32,123,125,41,22,114,55,0,0,
-    0,114,63,0,0,0,114,58,0,0,0,114,19,0,0,0,
-    114,70,0,0,0,114,21,1,0,0,114,64,0,0,0,114,
-    81,1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,
-    101,114,22,0,0,0,114,84,1,0,0,114,117,0,0,0,
-    114,83,1,0,0,114,54,0,0,0,114,80,1,0,0,114,
-    68,0,0,0,114,75,1,0,0,114,71,0,0,0,114,146,
-    0,0,0,114,160,0,0,0,114,194,0,0,0,114,189,0,
-    0,0,41,14,114,130,0,0,0,114,150,0,0,0,114,213,
-    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,180,
-    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,29,1,0,0,114,199,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,198,0,0,0,114,7,0,0,
-    0,114,7,0,0,0,114,8,0,0,0,114,214,0,0,0,
-    178,5,0,0,115,80,0,0,0,4,5,14,1,2,1,24,
-    1,14,1,6,1,10,1,8,1,6,1,6,2,6,1,10,
-    1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8,
-    1,24,1,2,255,8,5,14,2,16,1,16,1,14,1,10,
-    1,10,1,4,1,8,255,2,128,6,2,12,1,12,1,8,
-    1,4,1,4,1,2,219,255,128,122,20,70,105,108,101,70,
-    105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,
-    1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,
-    10,0,0,0,67,0,0,0,115,190,0,0,0,124,0,106,
-    0,125,1,122,22,116,1,160,2,124,1,112,22,116,1,160,
-    3,161,0,161,1,125,2,87,0,110,24,4,0,116,4,116,
-    5,116,6,102,3,121,188,1,0,1,0,1,0,103,0,125,
-    2,89,0,116,7,106,8,160,9,100,1,161,1,115,78,116,
-    10,124,2,131,1,124,0,95,11,110,74,116,10,131,0,125,
-    3,124,2,68,0,93,56,125,4,124,4,160,12,100,2,161,
-    1,92,3,125,5,125,6,125,7,124,6,114,130,100,3,160,
-    13,124,5,124,7,160,14,161,0,161,2,125,8,110,4,124,
-    5,125,8,124,3,160,15,124,8,161,1,1,0,113,88,124,
-    3,124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,
-    184,100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,
-    17,100,6,83,0,100,6,83,0,119,0,41,7,122,68,70,
-    105,108,108,32,116,104,101,32,99,97,99,104,101,32,111,102,
-    32,112,111,116,101,110,116,105,97,108,32,109,111,100,117,108,
-    101,115,32,97,110,100,32,112,97,99,107,97,103,101,115,32,
-    102,111,114,32,116,104,105,115,32,100,105,114,101,99,116,111,
-    114,121,46,114,15,0,0,0,114,86,0,0,0,114,76,0,
-    0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,
-    0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,0,
-    104,0,124,0,93,12,125,1,124,1,160,0,161,0,146,2,
-    113,4,83,0,114,7,0,0,0,41,1,114,117,0,0,0,
-    41,2,114,5,0,0,0,90,2,102,110,114,7,0,0,0,
-    114,7,0,0,0,114,8,0,0,0,114,13,0,0,0,255,
-    5,0,0,115,4,0,0,0,20,0,255,128,122,41,70,105,
+    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,214,0,0,0,
+    114,151,0,0,0,114,189,0,0,0,41,3,114,130,0,0,
+    0,114,150,0,0,0,114,198,0,0,0,114,7,0,0,0,
+    114,7,0,0,0,114,8,0,0,0,114,148,0,0,0,165,
+    5,0,0,115,10,0,0,0,10,7,8,1,8,1,16,1,
+    255,128,122,22,70,105,108,101,70,105,110,100,101,114,46,102,
+    105,110,100,95,108,111,97,100,101,114,99,6,0,0,0,0,
+    0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,67,
+    0,0,0,115,26,0,0,0,124,1,124,2,124,3,131,2,
+    125,6,116,0,124,2,124,3,124,6,124,4,100,1,141,4,
+    83,0,41,2,78,114,188,0,0,0,41,1,114,201,0,0,
+    0,41,7,114,130,0,0,0,114,199,0,0,0,114,150,0,
+    0,0,114,58,0,0,0,90,4,115,109,115,108,114,213,0,
+    0,0,114,151,0,0,0,114,7,0,0,0,114,7,0,0,
+    0,114,8,0,0,0,114,77,1,0,0,177,5,0,0,115,
+    10,0,0,0,10,1,8,1,2,1,6,255,255,128,122,20,
+    70,105,108,101,70,105,110,100,101,114,46,95,103,101,116,95,
+    115,112,101,99,78,99,3,0,0,0,0,0,0,0,0,0,
+    0,0,14,0,0,0,8,0,0,0,67,0,0,0,115,100,
+    1,0,0,100,1,125,3,124,1,160,0,100,2,161,1,100,
+    3,25,0,125,4,122,24,116,1,124,0,106,2,112,34,116,
+    3,160,4,161,0,131,1,106,5,125,5,87,0,110,20,4,
+    0,116,6,144,1,121,98,1,0,1,0,1,0,100,4,125,
+    5,89,0,124,5,124,0,106,7,107,3,114,88,124,0,160,
+    8,161,0,1,0,124,5,124,0,95,7,116,9,131,0,114,
+    110,124,0,106,10,125,6,124,4,160,11,161,0,125,7,110,
+    10,124,0,106,12,125,6,124,4,125,7,124,7,124,6,118,
+    0,114,214,116,13,124,0,106,2,124,4,131,2,125,8,124,
+    0,106,14,68,0,93,58,92,2,125,9,125,10,100,5,124,
+    9,23,0,125,11,116,13,124,8,124,11,131,2,125,12,116,
+    15,124,12,131,1,114,204,124,0,160,16,124,10,124,1,124,
+    12,124,8,103,1,124,2,161,5,2,0,1,0,83,0,113,
+    146,116,17,124,8,131,1,125,3,124,0,106,14,68,0,93,
+    86,92,2,125,9,125,10,116,13,124,0,106,2,124,4,124,
+    9,23,0,131,2,125,12,116,18,106,19,100,6,124,12,100,
+    3,100,7,141,3,1,0,124,7,124,9,23,0,124,6,118,
+    0,144,1,114,50,116,15,124,12,131,1,144,1,114,50,124,
+    0,160,16,124,10,124,1,124,12,100,8,124,2,161,5,2,
+    0,1,0,83,0,113,220,124,3,144,1,114,94,116,18,160,
+    19,100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,
+    8,161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,
+    0,100,8,83,0,119,0,41,10,122,111,84,114,121,32,116,
+    111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,111,
+    114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,
+    109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,
+    32,82,101,116,117,114,110,115,32,116,104,101,32,109,97,116,
+    99,104,105,110,103,32,115,112,101,99,44,32,111,114,32,78,
+    111,110,101,32,105,102,32,110,111,116,32,102,111,117,110,100,
+    46,10,32,32,32,32,32,32,32,32,70,114,86,0,0,0,
+    114,45,0,0,0,114,116,0,0,0,114,223,0,0,0,122,
+    9,116,114,121,105,110,103,32,123,125,41,1,90,9,118,101,
+    114,98,111,115,105,116,121,78,122,25,112,111,115,115,105,98,
+    108,101,32,110,97,109,101,115,112,97,99,101,32,102,111,114,
+    32,123,125,41,22,114,55,0,0,0,114,63,0,0,0,114,
+    58,0,0,0,114,19,0,0,0,114,70,0,0,0,114,22,
+    1,0,0,114,64,0,0,0,114,83,1,0,0,218,11,95,
+    102,105,108,108,95,99,97,99,104,101,114,22,0,0,0,114,
+    86,1,0,0,114,117,0,0,0,114,85,1,0,0,114,54,
+    0,0,0,114,82,1,0,0,114,68,0,0,0,114,77,1,
+    0,0,114,71,0,0,0,114,146,0,0,0,114,160,0,0,
+    0,114,194,0,0,0,114,189,0,0,0,41,14,114,130,0,
+    0,0,114,150,0,0,0,114,213,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,180,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,30,1,0,
+    0,114,199,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,198,0,0,0,114,7,0,0,0,114,7,0,0,0,114,
+    8,0,0,0,114,214,0,0,0,182,5,0,0,115,80,0,
+    0,0,4,5,14,1,2,1,24,1,14,1,6,1,10,1,
+    8,1,6,1,6,2,6,1,10,1,6,2,4,1,8,2,
+    12,1,14,1,8,1,10,1,8,1,24,1,2,255,8,5,
+    14,2,16,1,16,1,14,1,10,1,10,1,4,1,8,255,
+    2,128,6,2,12,1,12,1,8,1,4,1,4,1,2,219,
+    255,128,122,20,70,105,108,101,70,105,110,100,101,114,46,102,
+    105,110,100,95,115,112,101,99,99,1,0,0,0,0,0,0,
+    0,0,0,0,0,9,0,0,0,10,0,0,0,67,0,0,
+    0,115,190,0,0,0,124,0,106,0,125,1,122,22,116,1,
+    160,2,124,1,112,22,116,1,160,3,161,0,161,1,125,2,
+    87,0,110,24,4,0,116,4,116,5,116,6,102,3,121,188,
+    1,0,1,0,1,0,103,0,125,2,89,0,116,7,106,8,
+    160,9,100,1,161,1,115,78,116,10,124,2,131,1,124,0,
+    95,11,110,74,116,10,131,0,125,3,124,2,68,0,93,56,
+    125,4,124,4,160,12,100,2,161,1,92,3,125,5,125,6,
+    125,7,124,6,114,130,100,3,160,13,124,5,124,7,160,14,
+    161,0,161,2,125,8,110,4,124,5,125,8,124,3,160,15,
+    124,8,161,1,1,0,113,88,124,3,124,0,95,11,116,7,
+    106,8,160,9,116,16,161,1,114,184,100,4,100,5,132,0,
+    124,2,68,0,131,1,124,0,95,17,100,6,83,0,100,6,
+    83,0,119,0,41,7,122,68,70,105,108,108,32,116,104,101,
+    32,99,97,99,104,101,32,111,102,32,112,111,116,101,110,116,
+    105,97,108,32,109,111,100,117,108,101,115,32,97,110,100,32,
+    112,97,99,107,97,103,101,115,32,102,111,114,32,116,104,105,
+    115,32,100,105,114,101,99,116,111,114,121,46,114,15,0,0,
+    0,114,86,0,0,0,114,76,0,0,0,99,1,0,0,0,
+    0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,
+    83,0,0,0,115,20,0,0,0,104,0,124,0,93,12,125,
+    1,124,1,160,0,161,0,146,2,113,4,83,0,114,7,0,
+    0,0,41,1,114,117,0,0,0,41,2,114,5,0,0,0,
+    90,2,102,110,114,7,0,0,0,114,7,0,0,0,114,8,
+    0,0,0,114,13,0,0,0,3,6,0,0,115,4,0,0,
+    0,20,0,255,128,122,41,70,105,108,101,70,105,110,100,101,
+    114,46,95,102,105,108,108,95,99,97,99,104,101,46,60,108,
+    111,99,97,108,115,62,46,60,115,101,116,99,111,109,112,62,
+    78,41,18,114,58,0,0,0,114,19,0,0,0,90,7,108,
+    105,115,116,100,105,114,114,70,0,0,0,114,71,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,16,0,0,0,114,26,0,0,0,114,
+    27,0,0,0,114,84,1,0,0,114,85,1,0,0,114,112,
+    0,0,0,114,77,0,0,0,114,117,0,0,0,218,3,97,
+    100,100,114,28,0,0,0,114,86,1,0,0,41,9,114,130,
+    0,0,0,114,58,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,56,1,0,0,114,128,
+    0,0,0,114,40,1,0,0,114,30,1,0,0,90,8,110,
+    101,119,95,110,97,109,101,114,7,0,0,0,114,7,0,0,
+    0,114,8,0,0,0,114,88,1,0,0,230,5,0,0,115,
+    40,0,0,0,6,2,2,1,22,1,18,1,6,3,12,3,
+    12,1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,
+    6,1,12,1,20,1,4,255,2,233,255,128,122,22,70,105,
     108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,
-    97,99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,
-    101,116,99,111,109,112,62,78,41,18,114,58,0,0,0,114,
-    19,0,0,0,90,7,108,105,115,116,100,105,114,114,70,0,
-    0,0,114,69,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,16,0,0,
-    0,114,26,0,0,0,114,27,0,0,0,114,82,1,0,0,
-    114,83,1,0,0,114,112,0,0,0,114,77,0,0,0,114,
-    117,0,0,0,218,3,97,100,100,114,28,0,0,0,114,84,
-    1,0,0,41,9,114,130,0,0,0,114,58,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,55,1,0,0,114,128,0,0,0,114,39,1,0,0,114,
-    29,1,0,0,90,8,110,101,119,95,110,97,109,101,114,7,
-    0,0,0,114,7,0,0,0,114,8,0,0,0,114,86,1,
-    0,0,226,5,0,0,115,40,0,0,0,6,2,2,1,22,
-    1,18,1,6,3,12,3,12,1,6,7,8,1,16,1,4,
-    1,18,1,4,2,12,1,6,1,12,1,20,1,4,255,2,
-    233,255,128,122,22,70,105,108,101,70,105,110,100,101,114,46,
-    95,102,105,108,108,95,99,97,99,104,101,99,1,0,0,0,
-    0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
-    7,0,0,0,115,18,0,0,0,135,0,135,1,102,2,100,
-    1,100,2,132,8,125,2,124,2,83,0,41,4,97,20,1,
-    0,0,65,32,99,108,97,115,115,32,109,101,116,104,111,100,
-    32,119,104,105,99,104,32,114,101,116,117,114,110,115,32,97,
-    32,99,108,111,115,117,114,101,32,116,111,32,117,115,101,32,
-    111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,
-    10,32,32,32,32,32,32,32,32,119,104,105,99,104,32,119,
-    105,108,108,32,114,101,116,117,114,110,32,97,110,32,105,110,
-    115,116,97,110,99,101,32,117,115,105,110,103,32,116,104,101,
-    32,115,112,101,99,105,102,105,101,100,32,108,111,97,100,101,
-    114,115,32,97,110,100,32,116,104,101,32,112,97,116,104,10,
-    32,32,32,32,32,32,32,32,99,97,108,108,101,100,32,111,
-    110,32,116,104,101,32,99,108,111,115,117,114,101,46,10,10,
-    32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,
-    97,116,104,32,99,97,108,108,101,100,32,111,110,32,116,104,
-    101,32,99,108,111,115,117,114,101,32,105,115,32,110,111,116,
-    32,97,32,100,105,114,101,99,116,111,114,121,44,32,73,109,
-    112,111,114,116,69,114,114,111,114,32,105,115,10,32,32,32,
-    32,32,32,32,32,114,97,105,115,101,100,46,10,10,32,32,
-    32,32,32,32,32,32,99,1,0,0,0,0,0,0,0,0,
-    0,0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,
-    36,0,0,0,116,0,124,0,131,1,115,20,116,1,100,1,
-    124,0,100,2,141,2,130,1,136,0,124,0,103,1,136,1,
-    162,1,82,0,142,0,83,0,41,4,122,45,80,97,116,104,
-    32,104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,
-    108,105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,
-    108,101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,
-    100,105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,
-    115,117,112,112,111,114,116,101,100,114,62,0,0,0,78,41,
-    2,114,71,0,0,0,114,129,0,0,0,114,62,0,0,0,
-    169,2,114,209,0,0,0,114,85,1,0,0,114,7,0,0,
-    0,114,8,0,0,0,218,24,112,97,116,104,95,104,111,111,
-    107,95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,
-    11,6,0,0,115,8,0,0,0,8,2,12,1,16,1,255,
-    128,122,54,70,105,108,101,70,105,110,100,101,114,46,112,97,
-    116,104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,
-    46,112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,
-    105,108,101,70,105,110,100,101,114,78,114,7,0,0,0,41,
-    3,114,209,0,0,0,114,85,1,0,0,114,91,1,0,0,
-    114,7,0,0,0,114,90,1,0,0,114,8,0,0,0,218,
-    9,112,97,116,104,95,104,111,111,107,1,6,0,0,115,6,
-    0,0,0,14,10,4,6,255,128,122,20,70,105,108,101,70,
-    105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,99,
+    97,99,104,101,99,1,0,0,0,0,0,0,0,0,0,0,
+    0,3,0,0,0,3,0,0,0,7,0,0,0,115,18,0,
+    0,0,135,0,135,1,102,2,100,1,100,2,132,8,125,2,
+    124,2,83,0,41,4,97,20,1,0,0,65,32,99,108,97,
+    115,115,32,109,101,116,104,111,100,32,119,104,105,99,104,32,
+    114,101,116,117,114,110,115,32,97,32,99,108,111,115,117,114,
+    101,32,116,111,32,117,115,101,32,111,110,32,115,121,115,46,
+    112,97,116,104,95,104,111,111,107,10,32,32,32,32,32,32,
+    32,32,119,104,105,99,104,32,119,105,108,108,32,114,101,116,
+    117,114,110,32,97,110,32,105,110,115,116,97,110,99,101,32,
+    117,115,105,110,103,32,116,104,101,32,115,112,101,99,105,102,
+    105,101,100,32,108,111,97,100,101,114,115,32,97,110,100,32,
+    116,104,101,32,112,97,116,104,10,32,32,32,32,32,32,32,
+    32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,99,
+    108,111,115,117,114,101,46,10,10,32,32,32,32,32,32,32,
+    32,73,102,32,116,104,101,32,112,97,116,104,32,99,97,108,
+    108,101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,
+    114,101,32,105,115,32,110,111,116,32,97,32,100,105,114,101,
+    99,116,111,114,121,44,32,73,109,112,111,114,116,69,114,114,
+    111,114,32,105,115,10,32,32,32,32,32,32,32,32,114,97,
+    105,115,101,100,46,10,10,32,32,32,32,32,32,32,32,99,
     1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
-    3,0,0,0,67,0,0,0,114,52,1,0,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,77,0,0,0,114,58,0,0,0,114,8,
-    1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
-    0,0,114,53,1,0,0,19,6,0,0,114,46,1,0,0,
-    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,137,0,0,0,114,
-    136,0,0,0,114,138,0,0,0,114,139,0,0,0,114,223,
-    0,0,0,114,62,1,0,0,114,154,0,0,0,114,217,0,
-    0,0,114,148,0,0,0,114,75,1,0,0,114,214,0,0,
-    0,114,86,1,0,0,114,221,0,0,0,114,92,1,0,0,
-    114,53,1,0,0,114,7,0,0,0,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,114,78,1,0,0,132,5,
-    0,0,115,26,0,0,0,8,0,4,2,8,7,8,14,4,
-    4,8,2,8,12,10,5,8,48,2,31,10,1,12,17,255,
-    128,114,78,1,0,0,99,4,0,0,0,0,0,0,0,0,
-    0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,
-    144,0,0,0,124,0,160,0,100,1,161,1,125,4,124,0,
-    160,0,100,2,161,1,125,5,124,4,115,66,124,5,114,36,
-    124,5,106,1,125,4,110,30,124,2,124,3,107,2,114,56,
-    116,2,124,1,124,2,131,2,125,4,110,10,116,3,124,1,
-    124,2,131,2,125,4,124,5,115,84,116,4,124,1,124,2,
-    124,4,100,3,141,3,125,5,122,38,124,5,124,0,100,2,
-    60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,4,
-    60,0,124,3,124,0,100,5,60,0,87,0,100,0,83,0,
-    4,0,116,5,121,142,1,0,1,0,1,0,89,0,100,0,
-    83,0,119,0,41,6,78,218,10,95,95,108,111,97,100,101,
-    114,95,95,218,8,95,95,115,112,101,99,95,95,114,79,1,
-    0,0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,
-    99,97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,
-    151,0,0,0,114,26,1,0,0,114,20,1,0,0,114,201,
-    0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,
-    90,2,110,115,114,128,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,151,
-    0,0,0,114,198,0,0,0,114,7,0,0,0,114,7,0,
-    0,0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,
-    95,109,111,100,117,108,101,25,6,0,0,115,38,0,0,0,
-    10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,
-    4,1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,
-    6,2,2,254,255,128,114,97,1,0,0,99,0,0,0,0,
-    0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
-    67,0,0,0,115,38,0,0,0,116,0,116,1,160,2,161,
-    0,102,2,125,0,116,3,116,4,102,2,125,1,116,5,116,
-    6,102,2,125,2,124,0,124,1,124,2,103,3,83,0,41,
-    2,122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,
-    116,32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,
-    109,111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,
-    10,32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,
-    115,32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,
-    114,44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,
-    32,32,78,41,7,114,17,1,0,0,114,174,0,0,0,218,
-    18,101,120,116,101,110,115,105,111,110,95,115,117,102,102,105,
-    120,101,115,114,20,1,0,0,114,113,0,0,0,114,26,1,
-    0,0,114,101,0,0,0,41,3,90,10,101,120,116,101,110,
-    115,105,111,110,115,90,6,115,111,117,114,99,101,90,8,98,
-    121,116,101,99,111,100,101,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,114,195,0,0,0,48,6,0,0,115,
-    10,0,0,0,12,5,8,1,8,1,10,1,255,128,114,195,
-    0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
-    1,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,
-    0,124,0,97,0,100,0,83,0,114,121,0,0,0,41,1,
-    114,146,0,0,0,41,1,218,17,95,98,111,111,116,115,116,
-    114,97,112,95,109,111,100,117,108,101,114,7,0,0,0,114,
-    7,0,0,0,114,8,0,0,0,218,21,95,115,101,116,95,
-    98,111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,
-    59,6,0,0,115,4,0,0,0,8,2,255,128,114,100,1,
-    0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,
-    0,0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,
-    116,0,124,0,131,1,1,0,116,1,131,0,125,1,116,2,
-    106,3,160,4,116,5,106,6,124,1,142,0,103,1,161,1,
-    1,0,116,2,106,7,160,8,116,9,161,1,1,0,100,1,
-    83,0,41,2,122,41,73,110,115,116,97,108,108,32,116,104,
-    101,32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,
-    111,114,116,32,99,111,109,112,111,110,101,110,116,115,46,78,
-    41,10,114,100,1,0,0,114,195,0,0,0,114,16,0,0,
-    0,114,67,1,0,0,114,178,0,0,0,114,78,1,0,0,
-    114,92,1,0,0,218,9,109,101,116,97,95,112,97,116,104,
-    114,197,0,0,0,114,61,1,0,0,41,2,114,99,1,0,
-    0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,
-    100,101,114,115,114,7,0,0,0,114,7,0,0,0,114,8,
-    0,0,0,218,8,95,105,110,115,116,97,108,108,64,6,0,
-    0,115,10,0,0,0,8,2,6,1,20,1,16,1,255,128,
-    114,102,1,0,0,41,1,114,75,0,0,0,41,1,78,41,
-    3,78,78,78,41,2,114,0,0,0,0,114,0,0,0,0,
-    41,1,84,41,1,78,41,1,78,41,83,114,139,0,0,0,
-    114,146,0,0,0,114,174,0,0,0,114,79,0,0,0,114,
-    16,0,0,0,114,88,0,0,0,114,171,0,0,0,114,26,
-    0,0,0,114,218,0,0,0,90,2,110,116,114,19,0,0,
-    0,114,203,0,0,0,90,5,112,111,115,105,120,114,48,0,
-    0,0,218,3,97,108,108,114,51,0,0,0,114,52,0,0,
-    0,114,73,0,0,0,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0,
-    0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0,
-    114,54,0,0,0,114,61,0,0,0,114,63,0,0,0,114,
-    67,0,0,0,114,68,0,0,0,114,71,0,0,0,114,74,
-    0,0,0,114,84,0,0,0,218,4,116,121,112,101,218,8,
-    95,95,99,111,100,101,95,95,114,173,0,0,0,114,35,0,
-    0,0,114,159,0,0,0,114,34,0,0,0,114,40,0,0,
-    0,114,251,0,0,0,114,104,0,0,0,114,100,0,0,0,
-    114,113,0,0,0,114,197,0,0,0,114,98,1,0,0,114,
-    219,0,0,0,114,101,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,
-    109,0,0,0,114,114,0,0,0,114,120,0,0,0,114,124,
-    0,0,0,114,126,0,0,0,114,147,0,0,0,114,154,0,
-    0,0,114,163,0,0,0,114,167,0,0,0,114,169,0,0,
-    0,114,176,0,0,0,114,181,0,0,0,114,182,0,0,0,
-    114,187,0,0,0,218,6,111,98,106,101,99,116,114,196,0,
-    0,0,114,201,0,0,0,114,202,0,0,0,114,222,0,0,
-    0,114,236,0,0,0,114,254,0,0,0,114,20,1,0,0,
-    114,26,1,0,0,114,17,1,0,0,114,32,1,0,0,114,
-    58,1,0,0,114,61,1,0,0,114,78,1,0,0,114,97,
-    1,0,0,114,195,0,0,0,114,100,1,0,0,114,102,1,
-    0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,
-    0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62,
-    1,0,0,0,115,172,0,0,0,4,0,4,22,8,3,8,
-    1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8,
-    2,4,3,10,1,6,2,22,2,8,1,10,1,14,1,4,
-    4,4,1,2,1,2,1,4,255,8,4,6,16,8,3,8,
-    5,8,5,8,6,8,6,8,12,8,10,8,9,8,5,8,
-    7,10,9,10,22,0,127,16,25,12,1,4,2,4,1,6,
-    2,6,1,10,1,8,2,6,2,8,2,16,2,8,71,8,
-    40,8,19,8,12,8,12,8,31,8,17,8,33,8,28,10,
-    24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,
-    68,14,64,16,30,0,127,14,17,18,50,18,45,18,25,14,
-    53,14,63,14,43,0,127,14,20,0,127,10,22,8,23,8,
-    11,12,5,255,128,
+    4,0,0,0,19,0,0,0,115,36,0,0,0,116,0,124,
+    0,131,1,115,20,116,1,100,1,124,0,100,2,141,2,130,
+    1,136,0,124,0,103,1,136,1,162,1,82,0,142,0,83,
+    0,41,4,122,45,80,97,116,104,32,104,111,111,107,32,102,
+    111,114,32,105,109,112,111,114,116,108,105,98,46,109,97,99,
+    104,105,110,101,114,121,46,70,105,108,101,70,105,110,100,101,
+    114,46,122,30,111,110,108,121,32,100,105,114,101,99,116,111,
+    114,105,101,115,32,97,114,101,32,115,117,112,112,111,114,116,
+    101,100,114,62,0,0,0,78,41,2,114,71,0,0,0,114,
+    129,0,0,0,114,62,0,0,0,169,2,114,209,0,0,0,
+    114,87,1,0,0,114,7,0,0,0,114,8,0,0,0,218,
+    24,112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,
+    105,108,101,70,105,110,100,101,114,15,6,0,0,115,8,0,
+    0,0,8,2,12,1,16,1,255,128,122,54,70,105,108,101,
+    70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,
+    46,60,108,111,99,97,108,115,62,46,112,97,116,104,95,104,
+    111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,100,
+    101,114,78,114,7,0,0,0,41,3,114,209,0,0,0,114,
+    87,1,0,0,114,93,1,0,0,114,7,0,0,0,114,92,
+    1,0,0,114,8,0,0,0,218,9,112,97,116,104,95,104,
+    111,111,107,5,6,0,0,115,6,0,0,0,14,10,4,6,
+    255,128,122,20,70,105,108,101,70,105,110,100,101,114,46,112,
+    97,116,104,95,104,111,111,107,99,1,0,0,0,0,0,0,
+    0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
+    0,114,53,1,0,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,77,0,
+    0,0,114,58,0,0,0,114,8,1,0,0,114,7,0,0,
+    0,114,7,0,0,0,114,8,0,0,0,114,54,1,0,0,
+    23,6,0,0,114,47,1,0,0,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,137,0,0,0,114,136,0,0,0,114,138,0,
+    0,0,114,139,0,0,0,114,223,0,0,0,114,64,1,0,
+    0,114,154,0,0,0,114,217,0,0,0,114,148,0,0,0,
+    114,77,1,0,0,114,214,0,0,0,114,88,1,0,0,114,
+    221,0,0,0,114,94,1,0,0,114,54,1,0,0,114,7,
+    0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
+    0,0,114,80,1,0,0,136,5,0,0,115,26,0,0,0,
+    8,0,4,2,8,7,8,14,4,4,8,2,8,12,10,5,
+    8,48,2,31,10,1,12,17,255,128,114,80,1,0,0,99,
+    4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,
+    8,0,0,0,67,0,0,0,115,144,0,0,0,124,0,160,
+    0,100,1,161,1,125,4,124,0,160,0,100,2,161,1,125,
+    5,124,4,115,66,124,5,114,36,124,5,106,1,125,4,110,
+    30,124,2,124,3,107,2,114,56,116,2,124,1,124,2,131,
+    2,125,4,110,10,116,3,124,1,124,2,131,2,125,4,124,
+    5,115,84,116,4,124,1,124,2,124,4,100,3,141,3,125,
+    5,122,38,124,5,124,0,100,2,60,0,124,4,124,0,100,
+    1,60,0,124,2,124,0,100,4,60,0,124,3,124,0,100,
+    5,60,0,87,0,100,0,83,0,4,0,116,5,121,142,1,
+    0,1,0,1,0,89,0,100,0,83,0,119,0,41,6,78,
+    218,10,95,95,108,111,97,100,101,114,95,95,218,8,95,95,
+    115,112,101,99,95,95,114,81,1,0,0,90,8,95,95,102,
+    105,108,101,95,95,90,10,95,95,99,97,99,104,101,100,95,
+    95,41,6,218,3,103,101,116,114,151,0,0,0,114,27,1,
+    0,0,114,21,1,0,0,114,201,0,0,0,218,9,69,120,
+    99,101,112,116,105,111,110,41,6,90,2,110,115,114,128,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,151,0,0,0,114,198,0,0,
+    0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,
+    218,14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,
+    29,6,0,0,115,38,0,0,0,10,2,10,1,4,1,4,
+    1,8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,
+    1,8,1,8,1,14,1,12,1,6,2,2,254,255,128,114,
+    99,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+    0,3,0,0,0,3,0,0,0,67,0,0,0,115,38,0,
+    0,0,116,0,116,1,160,2,161,0,102,2,125,0,116,3,
+    116,4,102,2,125,1,116,5,116,6,102,2,125,2,124,0,
+    124,1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,
+    114,110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,
+    108,101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,
+    108,111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,
+    99,104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,
+    108,101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,
+    105,120,101,115,41,46,10,32,32,32,32,78,41,7,114,17,
+    1,0,0,114,174,0,0,0,218,18,101,120,116,101,110,115,
+    105,111,110,95,115,117,102,102,105,120,101,115,114,21,1,0,
+    0,114,113,0,0,0,114,27,1,0,0,114,101,0,0,0,
+    41,3,90,10,101,120,116,101,110,115,105,111,110,115,90,6,
+    115,111,117,114,99,101,90,8,98,121,116,101,99,111,100,101,
+    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
+    195,0,0,0,52,6,0,0,115,10,0,0,0,12,5,8,
+    1,8,1,10,1,255,128,114,195,0,0,0,99,1,0,0,
+    0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,
+    0,67,0,0,0,115,8,0,0,0,124,0,97,0,100,0,
+    83,0,114,121,0,0,0,41,1,114,146,0,0,0,41,1,
+    218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,
+    117,108,101,114,7,0,0,0,114,7,0,0,0,114,8,0,
+    0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114,
+    97,112,95,109,111,100,117,108,101,63,6,0,0,115,4,0,
+    0,0,8,2,255,128,114,102,1,0,0,99,1,0,0,0,
+    0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,
+    67,0,0,0,115,50,0,0,0,116,0,124,0,131,1,1,
+    0,116,1,131,0,125,1,116,2,106,3,160,4,116,5,106,
+    6,124,1,142,0,103,1,161,1,1,0,116,2,106,7,160,
+    8,116,9,161,1,1,0,100,1,83,0,41,2,122,41,73,
+    110,115,116,97,108,108,32,116,104,101,32,112,97,116,104,45,
+    98,97,115,101,100,32,105,109,112,111,114,116,32,99,111,109,
+    112,111,110,101,110,116,115,46,78,41,10,114,102,1,0,0,
+    114,195,0,0,0,114,16,0,0,0,114,69,1,0,0,114,
+    178,0,0,0,114,80,1,0,0,114,94,1,0,0,218,9,
+    109,101,116,97,95,112,97,116,104,114,197,0,0,0,114,63,
+    1,0,0,41,2,114,101,1,0,0,90,17,115,117,112,112,
+    111,114,116,101,100,95,108,111,97,100,101,114,115,114,7,0,
+    0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,105,
+    110,115,116,97,108,108,68,6,0,0,115,10,0,0,0,8,
+    2,6,1,20,1,16,1,255,128,114,104,1,0,0,41,1,
+    114,75,0,0,0,41,1,78,41,3,78,78,78,41,2,114,
+    0,0,0,0,114,0,0,0,0,41,1,84,41,1,78,41,
+    1,78,41,83,114,139,0,0,0,114,146,0,0,0,114,174,
+    0,0,0,114,79,0,0,0,114,16,0,0,0,114,88,0,
+    0,0,114,171,0,0,0,114,26,0,0,0,114,218,0,0,
+    0,90,2,110,116,114,19,0,0,0,114,203,0,0,0,90,
+    5,112,111,115,105,120,114,48,0,0,0,218,3,97,108,108,
+    114,51,0,0,0,114,52,0,0,0,114,73,0,0,0,114,
+    29,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,28,0,0,0,
+    114,30,0,0,0,114,22,0,0,0,114,37,0,0,0,114,
+    43,0,0,0,114,46,0,0,0,114,54,0,0,0,114,61,
+    0,0,0,114,63,0,0,0,114,67,0,0,0,114,68,0,
+    0,0,114,71,0,0,0,114,74,0,0,0,114,84,0,0,
+    0,218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,
+    95,114,173,0,0,0,114,35,0,0,0,114,159,0,0,0,
+    114,34,0,0,0,114,40,0,0,0,114,251,0,0,0,114,
+    104,0,0,0,114,100,0,0,0,114,113,0,0,0,114,197,
+    0,0,0,114,100,1,0,0,114,219,0,0,0,114,101,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,109,0,0,0,114,114,0,
+    0,0,114,120,0,0,0,114,124,0,0,0,114,126,0,0,
+    0,114,147,0,0,0,114,154,0,0,0,114,163,0,0,0,
+    114,167,0,0,0,114,169,0,0,0,114,176,0,0,0,114,
+    181,0,0,0,114,182,0,0,0,114,187,0,0,0,218,6,
+    111,98,106,101,99,116,114,196,0,0,0,114,201,0,0,0,
+    114,202,0,0,0,114,222,0,0,0,114,236,0,0,0,114,
+    254,0,0,0,114,21,1,0,0,114,27,1,0,0,114,17,
+    1,0,0,114,33,1,0,0,114,59,1,0,0,114,63,1,
+    0,0,114,80,1,0,0,114,99,1,0,0,114,195,0,0,
+    0,114,102,1,0,0,114,104,1,0,0,114,7,0,0,0,
+    114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,
+    8,60,109,111,100,117,108,101,62,1,0,0,0,115,172,0,
+    0,0,4,0,4,22,8,3,8,1,8,1,8,1,8,1,
+    10,3,4,1,8,1,10,1,8,2,4,3,10,1,6,2,
+    22,2,8,1,10,1,14,1,4,4,4,1,2,1,2,1,
+    4,255,8,4,6,16,8,3,8,5,8,5,8,6,8,6,
+    8,12,8,10,8,9,8,5,8,7,10,9,10,22,0,127,
+    16,25,12,1,4,2,4,1,6,2,6,1,10,1,8,2,
+    6,2,8,2,16,2,8,71,8,40,8,19,8,12,8,12,
+    8,31,8,17,8,33,8,28,10,24,10,13,10,10,8,11,
+    6,14,4,3,2,1,12,255,14,68,14,64,16,30,0,127,
+    14,17,18,50,18,45,18,25,14,53,14,63,14,47,0,127,
+    14,20,0,127,10,22,8,23,8,11,12,5,255,128,
 };



More information about the Python-checkins mailing list