summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/importlib.metadata.rst257
-rw-r--r--Doc/library/modules.rst1
-rw-r--r--Doc/tools/susp-ignored.csv3
-rw-r--r--Lib/importlib/_bootstrap_external.py52
-rw-r--r--Lib/importlib/metadata/__init__.py394
-rw-r--r--Lib/test/test_importlib/data/__init__.py0
-rw-r--r--Lib/test/test_importlib/data/example-21.12-py3-none-any.whlbin0 -> 1453 bytes
-rw-r--r--Lib/test/test_importlib/data/example-21.12-py3.6.eggbin0 -> 1492 bytes
-rw-r--r--Lib/test/test_importlib/fixtures.py199
-rw-r--r--Lib/test/test_importlib/test_main.py158
-rw-r--r--Lib/test/test_importlib/test_metadata_api.py151
-rw-r--r--Lib/test/test_importlib/test_zip.py56
-rw-r--r--Misc/NEWS.d/next/Library/2019-05-11-02-30-45.bpo-34632.8MXa7T.rst1
l---------Python.framework/Resources1
-rw-r--r--Python/importlib_external.h1413
15 files changed, 2048 insertions, 638 deletions
diff --git a/Doc/library/importlib.metadata.rst b/Doc/library/importlib.metadata.rst
new file mode 100644
index 0000000..3d10b5a
--- /dev/null
+++ b/Doc/library/importlib.metadata.rst
@@ -0,0 +1,257 @@
+.. _using:
+
+==========================
+ Using importlib.metadata
+==========================
+
+.. note::
+ This functionality is provisional and may deviate from the usual
+ version semantics of the standard library.
+
+``importlib.metadata`` is a library that provides for access to installed
+package metadata. Built in part on Python's import system, this library
+intends to replace similar functionality in the `entry point
+API`_ and `metadata API`_ of ``pkg_resources``. Along with
+``importlib.resources`` in `Python 3.7
+and newer`_ (backported as `importlib_resources`_ for older versions of
+Python), this can eliminate the need to use the older and less efficient
+``pkg_resources`` package.
+
+By "installed package" we generally mean a third-party package installed into
+Python's ``site-packages`` directory via tools such as `pip
+<https://pypi.org/project/pip/>`_. Specifically,
+it means a package with either a discoverable ``dist-info`` or ``egg-info``
+directory, and metadata defined by `PEP 566`_ or its older specifications.
+By default, package metadata can live on the file system or in zip archives on
+``sys.path``. Through an extension mechanism, the metadata can live almost
+anywhere.
+
+
+Overview
+========
+
+Let's say you wanted to get the version string for a package you've installed
+using ``pip``. We start by creating a virtual environment and installing
+something into it::
+
+.. highlight:: none
+
+ $ python3 -m venv example
+ $ source example/bin/activate
+ (example) $ pip install wheel
+
+You can get the version string for ``wheel`` by running the following::
+
+.. highlight:: none
+
+ (example) $ python
+ >>> from importlib.metadata import version # doctest: +SKIP
+ >>> version('wheel') # doctest: +SKIP
+ '0.32.3'
+
+You can also get the set of entry points keyed by group, such as
+``console_scripts``, ``distutils.commands`` and others. Each group contains a
+sequence of :ref:`EntryPoint <entry-points>` objects.
+
+You can get the :ref:`metadata for a distribution <metadata>`::
+
+ >>> list(metadata('wheel')) # doctest: +SKIP
+ ['Metadata-Version', 'Name', 'Version', 'Summary', 'Home-page', 'Author', 'Author-email', 'Maintainer', 'Maintainer-email', 'License', 'Project-URL', 'Project-URL', 'Project-URL', 'Keywords', 'Platform', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Classifier', 'Requires-Python', 'Provides-Extra', 'Requires-Dist', 'Requires-Dist']
+
+You can also get a :ref:`distribution's version number <version>`, list its
+:ref:`constituent files <files>`, and get a list of the distribution's
+:ref:`requirements`.
+
+
+Functional API
+==============
+
+This package provides the following functionality via its public API.
+
+
+.. _entry-points:
+
+Entry points
+------------
+
+The ``entry_points()`` function returns a dictionary of all entry points,
+keyed by group. Entry points are represented by ``EntryPoint`` instances;
+each ``EntryPoint`` has a ``.name``, ``.group``, and ``.value`` attributes and
+a ``.load()`` method to resolve the value.
+
+ >>> eps = entry_points() # doctest: +SKIP
+ >>> list(eps) # doctest: +SKIP
+ ['console_scripts', 'distutils.commands', 'distutils.setup_keywords', 'egg_info.writers', 'setuptools.installation']
+ >>> scripts = eps['console_scripts'] # doctest: +SKIP
+ >>> wheel = [ep for ep in scripts if ep.name == 'wheel'][0] # doctest: +SKIP
+ >>> wheel # doctest: +SKIP
+ EntryPoint(name='wheel', value='wheel.cli:main', group='console_scripts')
+ >>> main = wheel.load() # doctest: +SKIP
+ >>> main # doctest: +SKIP
+ <function main at 0x103528488>
+
+The ``group`` and ``name`` are arbitrary values defined by the package author
+and usually a client will wish to resolve all entry points for a particular
+group. Read `the setuptools docs
+<https://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins>`_
+for more information on entrypoints, their definition, and usage.
+
+
+.. _metadata:
+
+Distribution metadata
+---------------------
+
+Every distribution includes some metadata, which you can extract using the
+``metadata()`` function::
+
+ >>> wheel_metadata = metadata('wheel') # doctest: +SKIP
+
+The keys of the returned data structure [#f1]_ name the metadata keywords, and
+their values are returned unparsed from the distribution metadata::
+
+ >>> wheel_metadata['Requires-Python'] # doctest: +SKIP
+ '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*'
+
+
+.. _version:
+
+Distribution versions
+---------------------
+
+The ``version()`` function is the quickest way to get a distribution's version
+number, as a string::
+
+ >>> version('wheel') # doctest: +SKIP
+ '0.32.3'
+
+
+.. _files:
+
+Distribution files
+------------------
+
+You can also get the full set of files contained within a distribution. The
+``files()`` function takes a distribution package name and returns all of the
+files installed by this distribution. Each file object returned is a
+``PackagePath``, a `pathlib.Path`_ derived object with additional ``dist``,
+``size``, and ``hash`` properties as indicated by the metadata. For example::
+
+ >>> util = [p for p in files('wheel') if 'util.py' in str(p)][0] # doctest: +SKIP
+ >>> util # doctest: +SKIP
+ PackagePath('wheel/util.py')
+ >>> util.size # doctest: +SKIP
+ 859
+ >>> util.dist # doctest: +SKIP
+ <importlib.metadata._hooks.PathDistribution object at 0x101e0cef0>
+ >>> util.hash # doctest: +SKIP
+ <FileHash mode: sha256 value: bYkw5oMccfazVCoYQwKkkemoVyMAFoR34mmKBx8R1NI>
+
+Once you have the file, you can also read its contents::
+
+ >>> print(util.read_text()) # doctest: +SKIP
+ import base64
+ import sys
+ ...
+ def as_bytes(s):
+ if isinstance(s, text_type):
+ return s.encode('utf-8')
+ return s
+
+
+.. _requirements:
+
+Distribution requirements
+-------------------------
+
+To get the full set of requirements for a distribution, use the ``requires()``
+function. Note that this returns an iterator::
+
+ >>> list(requires('wheel')) # doctest: +SKIP
+ ["pytest (>=3.0.0) ; extra == 'test'"]
+
+
+Distributions
+=============
+
+While the above API is the most common and convenient usage, you can get all
+of that information from the ``Distribution`` class. A ``Distribution`` is an
+abstract object that represents the metadata for a Python package. You can
+get the ``Distribution`` instance::
+
+ >>> from importlib.metadata import distribution # doctest: +SKIP
+ >>> dist = distribution('wheel') # doctest: +SKIP
+
+Thus, an alternative way to get the version number is through the
+``Distribution`` instance::
+
+ >>> dist.version # doctest: +SKIP
+ '0.32.3'
+
+There are all kinds of additional metadata available on the ``Distribution``
+instance::
+
+ >>> d.metadata['Requires-Python'] # doctest: +SKIP
+ '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*'
+ >>> d.metadata['License'] # doctest: +SKIP
+ 'MIT'
+
+The full set of available metadata is not described here. See `PEP 566
+<https://www.python.org/dev/peps/pep-0566/>`_ for additional details.
+
+
+Extending the search algorithm
+==============================
+
+Because package metadata is not available through ``sys.path`` searches, or
+package loaders directly, the metadata for a package is found through import
+system `finders`_. To find a distribution package's metadata,
+``importlib.metadata`` queries the list of `meta path finders`_ on
+`sys.meta_path`_.
+
+By default ``importlib.metadata`` installs a finder for distribution packages
+found on the file system. This finder doesn't actually find any *packages*,
+but it can find the packages' metadata.
+
+The abstract class :py:class:`importlib.abc.MetaPathFinder` defines the
+interface expected of finders by Python's import system.
+``importlib.metadata`` extends this protocol by looking for an optional
+``find_distributions`` callable on the finders from
+``sys.meta_path``. If the finder has this method, it must return
+an iterator over instances of the ``Distribution`` abstract class. This
+method must have the signature::
+
+ def find_distributions(name=None, path=None):
+ """Return an iterable of all Distribution instances capable of
+ loading the metadata for packages matching the name
+ (or all names if not supplied) along the paths in the list
+ of directories ``path`` (defaults to sys.path).
+ """
+
+What this means in practice is that to support finding distribution package
+metadata in locations other than the file system, you should derive from
+``Distribution`` and implement the ``load_metadata()`` method. This takes a
+single argument which is the name of the package whose metadata is being
+found. This instance of the ``Distribution`` base abstract class is what your
+finder's ``find_distributions()`` method should return.
+
+
+.. _`entry point API`: https://setuptools.readthedocs.io/en/latest/pkg_resources.html#entry-points
+.. _`metadata API`: https://setuptools.readthedocs.io/en/latest/pkg_resources.html#metadata-api
+.. _`Python 3.7 and newer`: https://docs.python.org/3/library/importlib.html#module-importlib.resources
+.. _`importlib_resources`: https://importlib-resources.readthedocs.io/en/latest/index.html
+.. _`PEP 566`: https://www.python.org/dev/peps/pep-0566/
+.. _`finders`: https://docs.python.org/3/reference/import.html#finders-and-loaders
+.. _`meta path finders`: https://docs.python.org/3/glossary.html#term-meta-path-finder
+.. _`sys.meta_path`: https://docs.python.org/3/library/sys.html#sys.meta_path
+.. _`pathlib.Path`: https://docs.python.org/3/library/pathlib.html#pathlib.Path
+
+
+.. rubric:: Footnotes
+
+.. [#f1] Technically, the returned distribution metadata object is an
+ `email.message.Message
+ <https://docs.python.org/3/library/email.message.html#email.message.EmailMessage>`_
+ instance, but this is an implementation detail, and not part of the
+ stable API. You should only use dictionary-like methods and syntax
+ to access the metadata contents.
diff --git a/Doc/library/modules.rst b/Doc/library/modules.rst
index 6b2a40a..565ce05 100644
--- a/Doc/library/modules.rst
+++ b/Doc/library/modules.rst
@@ -17,3 +17,4 @@ The full list of modules described in this chapter is:
modulefinder.rst
runpy.rst
importlib.rst
+ importlib.metadata.rst
diff --git a/Doc/tools/susp-ignored.csv b/Doc/tools/susp-ignored.csv
index 31b2266..85ff9d0 100644
--- a/Doc/tools/susp-ignored.csv
+++ b/Doc/tools/susp-ignored.csv
@@ -350,3 +350,6 @@ whatsnew/3.7,,::,error::BytesWarning
whatsnew/changelog,,::,error::BytesWarning
whatsnew/changelog,,::,default::BytesWarning
whatsnew/changelog,,::,default::DeprecationWarning
+library/importlib.metadata,,.. highlight:,.. highlight:: none
+library/importlib.metadata,,:main,"EntryPoint(name='wheel', value='wheel.cli:main', group='console_scripts')"
+library/importlib.metadata,,`,of directories ``path`` (defaults to sys.path).
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
index 7da0cd0..9b5db81 100644
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -1363,6 +1363,58 @@ class PathFinder:
return None
return spec.loader
+ search_template = r'(?:{pattern}(-.*)?\.(dist|egg)-info|EGG-INFO)'
+
+ @classmethod
+ def find_distributions(cls, name=None, path=None):
+ """
+ Find distributions.
+
+ Return an iterable of all Distribution instances capable of
+ loading the metadata for packages matching the ``name``
+ (or all names if not supplied) along the paths in the list
+ of directories ``path`` (defaults to sys.path).
+ """
+ import re
+ from importlib.metadata import PathDistribution
+ if path is None:
+ path = sys.path
+ pattern = '.*' if name is None else re.escape(name)
+ found = cls._search_paths(pattern, path)
+ return map(PathDistribution, found)
+
+ @classmethod
+ def _search_paths(cls, pattern, paths):
+ """Find metadata directories in paths heuristically."""
+ import itertools
+ return itertools.chain.from_iterable(
+ cls._search_path(path, pattern)
+ for path in map(cls._switch_path, paths)
+ )
+
+ @staticmethod
+ def _switch_path(path):
+ from contextlib import suppress
+ import zipfile
+ from pathlib import Path
+ with suppress(Exception):
+ return zipfile.Path(path)
+ return Path(path)
+
+ @classmethod
+ def _predicate(cls, pattern, root, item):
+ import re
+ return re.match(pattern, str(item.name), flags=re.IGNORECASE)
+
+ @classmethod
+ def _search_path(cls, root, pattern):
+ if not root.is_dir():
+ return ()
+ normalized = pattern.replace('-', '_')
+ matcher = cls.search_template.format(pattern=normalized)
+ return (item for item in root.iterdir()
+ if cls._predicate(matcher, root, item))
+
class FileFinder:
diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
new file mode 100644
index 0000000..24d45d2
--- /dev/null
+++ b/Lib/importlib/metadata/__init__.py
@@ -0,0 +1,394 @@
+import io
+import re
+import abc
+import csv
+import sys
+import email
+import pathlib
+import operator
+import functools
+import itertools
+import collections
+
+from configparser import ConfigParser
+from contextlib import suppress
+from importlib import import_module
+from importlib.abc import MetaPathFinder
+from itertools import starmap
+
+
+__all__ = [
+ 'Distribution',
+ 'PackageNotFoundError',
+ 'distribution',
+ 'distributions',
+ 'entry_points',
+ 'files',
+ 'metadata',
+ 'requires',
+ 'version',
+ ]
+
+
+class PackageNotFoundError(ModuleNotFoundError):
+ """The package was not found."""
+
+
+class EntryPoint(collections.namedtuple('EntryPointBase', 'name value group')):
+ """An entry point as defined by Python packaging conventions.
+
+ See `the packaging docs on entry points
+ <https://packaging.python.org/specifications/entry-points/>`_
+ for more information.
+ """
+
+ pattern = re.compile(
+ r'(?P<module>[\w.]+)\s*'
+ r'(:\s*(?P<attr>[\w.]+))?\s*'
+ r'(?P<extras>\[.*\])?\s*$'
+ )
+ """
+ A regular expression describing the syntax for an entry point,
+ which might look like:
+
+ - module
+ - package.module
+ - package.module:attribute
+ - package.module:object.attribute
+ - package.module:attr [extra1, extra2]
+
+ Other combinations are possible as well.
+
+ The expression is lenient about whitespace around the ':',
+ following the attr, and following any extras.
+ """
+
+ def load(self):
+ """Load the entry point from its definition. If only a module
+ is indicated by the value, return that module. Otherwise,
+ return the named object.
+ """
+ match = self.pattern.match(self.value)
+ module = import_module(match.group('module'))
+ attrs = filter(None, (match.group('attr') or '').split('.'))
+ return functools.reduce(getattr, attrs, module)
+
+ @property
+ def extras(self):
+ match = self.pattern.match(self.value)
+ return list(re.finditer(r'\w+', match.group('extras') or ''))
+
+ @classmethod
+ def _from_config(cls, config):
+ return [
+ cls(name, value, group)
+ for group in config.sections()
+ for name, value in config.items(group)
+ ]
+
+ @classmethod
+ def _from_text(cls, text):
+ config = ConfigParser()
+ try:
+ config.read_string(text)
+ except AttributeError: # pragma: nocover
+ # Python 2 has no read_string
+ config.readfp(io.StringIO(text))
+ return EntryPoint._from_config(config)
+
+ def __iter__(self):
+ """
+ Supply iter so one may construct dicts of EntryPoints easily.
+ """
+ return iter((self.name, self))
+
+
+class PackagePath(pathlib.PurePosixPath):
+ """A reference to a path in a package"""
+
+ def read_text(self, encoding='utf-8'):
+ with self.locate().open(encoding=encoding) as stream:
+ return stream.read()
+
+ def read_binary(self):
+ with self.locate().open('rb') as stream:
+ return stream.read()
+
+ def locate(self):
+ """Return a path-like object for this path"""
+ return self.dist.locate_file(self)
+
+
+class FileHash:
+ def __init__(self, spec):
+ self.mode, _, self.value = spec.partition('=')
+
+ def __repr__(self):
+ return '<FileHash mode: {} value: {}>'.format(self.mode, self.value)
+
+
+class Distribution:
+ """A Python distribution package."""
+
+ @abc.abstractmethod
+ def read_text(self, filename):
+ """Attempt to load metadata file given by the name.
+
+ :param filename: The name of the file in the distribution info.
+ :return: The text if found, otherwise None.
+ """
+
+ @abc.abstractmethod
+ def locate_file(self, path):
+ """
+ Given a path to a file in this distribution, return a path
+ to it.
+ """
+
+ @classmethod
+ def from_name(cls, name):
+ """Return the Distribution for the given package name.
+
+ :param name: The name of the distribution package to search for.
+ :return: The Distribution instance (or subclass thereof) for the named
+ package, if found.
+ :raises PackageNotFoundError: When the named package's distribution
+ metadata cannot be found.
+ """
+ for resolver in cls._discover_resolvers():
+ dists = resolver(name)
+ dist = next(dists, None)
+ if dist is not None:
+ return dist
+ else:
+ raise PackageNotFoundError(name)
+
+ @classmethod
+ def discover(cls):
+ """Return an iterable of Distribution objects for all packages.
+
+ :return: Iterable of Distribution objects for all packages.
+ """
+ return itertools.chain.from_iterable(
+ resolver()
+ for resolver in cls._discover_resolvers()
+ )
+
+ @staticmethod
+ def _discover_resolvers():
+ """Search the meta_path for resolvers."""
+ declared = (
+ getattr(finder, 'find_distributions', None)
+ for finder in sys.meta_path
+ )
+ return filter(None, declared)
+
+ @property
+ def metadata(self):
+ """Return the parsed metadata for this Distribution.
+
+ The returned object will have keys that name the various bits of
+ metadata. See PEP 566 for details.
+ """
+ text = (
+ self.read_text('METADATA')
+ or self.read_text('PKG-INFO')
+ # This last clause is here to support old egg-info files. Its
+ # effect is to just end up using the PathDistribution's self._path
+ # (which points to the egg-info file) attribute unchanged.
+ or self.read_text('')
+ )
+ return email.message_from_string(text)
+
+ @property
+ def version(self):
+ """Return the 'Version' metadata for the distribution package."""
+ return self.metadata['Version']
+
+ @property
+ def entry_points(self):
+ return EntryPoint._from_text(self.read_text('entry_points.txt'))
+
+ @property
+ def files(self):
+ file_lines = self._read_files_distinfo() or self._read_files_egginfo()
+
+ def make_file(name, hash=None, size_str=None):
+ result = PackagePath(name)
+ result.hash = FileHash(hash) if hash else None
+ result.size = int(size_str) if size_str else None
+ result.dist = self
+ return result
+
+ return file_lines and starmap(make_file, csv.reader(file_lines))
+
+ def _read_files_distinfo(self):
+ """
+ Read the lines of RECORD
+ """
+ text = self.read_text('RECORD')
+ return text and text.splitlines()
+
+ def _read_files_egginfo(self):
+ """
+ SOURCES.txt might contain literal commas, so wrap each line
+ in quotes.
+ """
+ text = self.read_text('SOURCES.txt')
+ return text and map('"{}"'.format, text.splitlines())
+
+ @property
+ def requires(self):
+ """Generated requirements specified for this Distribution"""
+ return self._read_dist_info_reqs() or self._read_egg_info_reqs()
+
+ def _read_dist_info_reqs(self):
+ spec = self.metadata['Requires-Dist']
+ return spec and filter(None, spec.splitlines())
+
+ def _read_egg_info_reqs(self):
+ source = self.read_text('requires.txt')
+ return source and self._deps_from_requires_text(source)
+
+ @classmethod
+ def _deps_from_requires_text(cls, source):
+ section_pairs = cls._read_sections(source.splitlines())
+ sections = {
+ section: list(map(operator.itemgetter('line'), results))
+ for section, results in
+ itertools.groupby(section_pairs, operator.itemgetter('section'))
+ }
+ return cls._convert_egg_info_reqs_to_simple_reqs(sections)
+
+ @staticmethod
+ def _read_sections(lines):
+ section = None
+ for line in filter(None, lines):
+ section_match = re.match(r'\[(.*)\]$', line)
+ if section_match:
+ section = section_match.group(1)
+ continue
+ yield locals()
+
+ @staticmethod
+ def _convert_egg_info_reqs_to_simple_reqs(sections):
+ """
+ Historically, setuptools would solicit and store 'extra'
+ requirements, including those with environment markers,
+ in separate sections. More modern tools expect each
+ dependency to be defined separately, with any relevant
+ extras and environment markers attached directly to that
+ requirement. This method converts the former to the
+ latter. See _test_deps_from_requires_text for an example.
+ """
+ def make_condition(name):
+ return name and 'extra == "{name}"'.format(name=name)
+
+ def parse_condition(section):
+ section = section or ''
+ extra, sep, markers = section.partition(':')
+ if extra and markers:
+ markers = '({markers})'.format(markers=markers)
+ conditions = list(filter(None, [markers, make_condition(extra)]))
+ return '; ' + ' and '.join(conditions) if conditions else ''
+
+ for section, deps in sections.items():
+ for dep in deps:
+ yield dep + parse_condition(section)
+
+
+class DistributionFinder(MetaPathFinder):
+ """
+ A MetaPathFinder capable of discovering installed distributions.
+ """
+
+ @abc.abstractmethod
+ def find_distributions(self, name=None, path=None):
+ """
+ Find distributions.
+
+ Return an iterable of all Distribution instances capable of
+ loading the metadata for packages matching the ``name``
+ (or all names if not supplied) along the paths in the list
+ of directories ``path`` (defaults to sys.path).
+ """
+
+
+class PathDistribution(Distribution):
+ def __init__(self, path):
+ """Construct a distribution from a path to the metadata directory."""
+ self._path = path
+
+ def read_text(self, filename):
+ with suppress(FileNotFoundError, NotADirectoryError, KeyError):
+ return self._path.joinpath(filename).read_text(encoding='utf-8')
+ read_text.__doc__ = Distribution.read_text.__doc__
+
+ def locate_file(self, path):
+ return self._path.parent / path
+
+
+def distribution(package):
+ """Get the ``Distribution`` instance for the given package.
+
+ :param package: The name of the package as a string.
+ :return: A ``Distribution`` instance (or subclass thereof).
+ """
+ return Distribution.from_name(package)
+
+
+def distributions():
+ """Get all ``Distribution`` instances in the current environment.
+
+ :return: An iterable of ``Distribution`` instances.
+ """
+ return Distribution.discover()
+
+
+def metadata(package):
+ """Get the metadata for the package.
+
+ :param package: The name of the distribution package to query.
+ :return: An email.Message containing the parsed metadata.
+ """
+ return Distribution.from_name(package).metadata
+
+
+def version(package):
+ """Get the version string for the named package.
+
+ :param package: The name of the distribution package to query.
+ :return: The version string for the package as defined in the package's
+ "Version" metadata key.
+ """
+ return distribution(package).version
+
+
+def entry_points():
+ """Return EntryPoint objects for all installed packages.
+
+ :return: EntryPoint objects for all installed packages.
+ """
+ eps = itertools.chain.from_iterable(
+ dist.entry_points for dist in distributions())
+ by_group = operator.attrgetter('group')
+ ordered = sorted(eps, key=by_group)
+ grouped = itertools.groupby(ordered, by_group)
+ return {
+ group: tuple(eps)
+ for group, eps in grouped
+ }
+
+
+def files(package):
+ return distribution(package).files
+
+
+def requires(package):
+ """
+ Return a list of requirements for the indicated distribution.
+
+ :return: An iterator of requirements, suitable for
+ packaging.requirement.Requirement.
+ """
+ return distribution(package).requires
diff --git a/Lib/test/test_importlib/data/__init__.py b/Lib/test/test_importlib/data/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Lib/test/test_importlib/data/__init__.py
diff --git a/Lib/test/test_importlib/data/example-21.12-py3-none-any.whl b/Lib/test/test_importlib/data/example-21.12-py3-none-any.whl
new file mode 100644
index 0000000..f92f771
--- /dev/null
+++ b/Lib/test/test_importlib/data/example-21.12-py3-none-any.whl
Binary files differ
diff --git a/Lib/test/test_importlib/data/example-21.12-py3.6.egg b/Lib/test/test_importlib/data/example-21.12-py3.6.egg
new file mode 100644
index 0000000..1d3f998
--- /dev/null
+++ b/Lib/test/test_importlib/data/example-21.12-py3.6.egg
Binary files differ
diff --git a/Lib/test/test_importlib/fixtures.py b/Lib/test/test_importlib/fixtures.py
new file mode 100644
index 0000000..3b926ba
--- /dev/null
+++ b/Lib/test/test_importlib/fixtures.py
@@ -0,0 +1,199 @@
+from __future__ import unicode_literals
+
+import os
+import sys
+import shutil
+import tempfile
+import textwrap
+import contextlib
+
+try:
+ from contextlib import ExitStack
+except ImportError:
+ from contextlib2 import ExitStack
+
+try:
+ import pathlib
+except ImportError:
+ import pathlib2 as pathlib
+
+
+__metaclass__ = type
+
+
+@contextlib.contextmanager
+def tempdir():
+ tmpdir = tempfile.mkdtemp()
+ try:
+ yield pathlib.Path(tmpdir)
+ finally:
+ shutil.rmtree(tmpdir)
+
+
+@contextlib.contextmanager
+def save_cwd():
+ orig = os.getcwd()
+ try:
+ yield
+ finally:
+ os.chdir(orig)
+
+
+@contextlib.contextmanager
+def tempdir_as_cwd():
+ with tempdir() as tmp:
+ with save_cwd():
+ os.chdir(str(tmp))
+ yield tmp
+
+
+class SiteDir:
+ def setUp(self):
+ self.fixtures = ExitStack()
+ self.addCleanup(self.fixtures.close)
+ self.site_dir = self.fixtures.enter_context(tempdir())
+
+
+class OnSysPath:
+ @staticmethod
+ @contextlib.contextmanager
+ def add_sys_path(dir):
+ sys.path[:0] = [str(dir)]
+ try:
+ yield
+ finally:
+ sys.path.remove(str(dir))
+
+ def setUp(self):
+ super(OnSysPath, self).setUp()
+ self.fixtures.enter_context(self.add_sys_path(self.site_dir))
+
+
+class DistInfoPkg(OnSysPath, SiteDir):
+ files = {
+ "distinfo_pkg-1.0.0.dist-info": {
+ "METADATA": """
+ Name: distinfo-pkg
+ Author: Steven Ma
+ Version: 1.0.0
+ Requires-Dist: wheel >= 1.0
+ Requires-Dist: pytest; extra == 'test'
+ """,
+ "RECORD": "mod.py,sha256=abc,20\n",
+ "entry_points.txt": """
+ [entries]
+ main = mod:main
+ """
+ },
+ "mod.py": """
+ def main():
+ print("hello world")
+ """,
+ }
+
+ def setUp(self):
+ super(DistInfoPkg, self).setUp()
+ build_files(DistInfoPkg.files, self.site_dir)
+
+
+class DistInfoPkgOffPath(SiteDir):
+ def setUp(self):
+ super(DistInfoPkgOffPath, self).setUp()
+ build_files(DistInfoPkg.files, self.site_dir)
+
+
+class EggInfoPkg(OnSysPath, SiteDir):
+ files = {
+ "egginfo_pkg.egg-info": {
+ "PKG-INFO": """
+ Name: egginfo-pkg
+ Author: Steven Ma
+ License: Unknown
+ Version: 1.0.0
+ Classifier: Intended Audience :: Developers
+ Classifier: Topic :: Software Development :: Libraries
+ """,
+ "SOURCES.txt": """
+ mod.py
+ egginfo_pkg.egg-info/top_level.txt
+ """,
+ "entry_points.txt": """
+ [entries]
+ main = mod:main
+ """,
+ "requires.txt": """
+ wheel >= 1.0; python_version >= "2.7"
+ [test]
+ pytest
+ """,
+ "top_level.txt": "mod\n"
+ },
+ "mod.py": """
+ def main():
+ print("hello world")
+ """,
+ }
+
+ def setUp(self):
+ super(EggInfoPkg, self).setUp()
+ build_files(EggInfoPkg.files, prefix=self.site_dir)
+
+
+class EggInfoFile(OnSysPath, SiteDir):
+ files = {
+ "egginfo_file.egg-info": """
+ Metadata-Version: 1.0
+ Name: egginfo_file
+ Version: 0.1
+ Summary: An example package
+ Home-page: www.example.com
+ Author: Eric Haffa-Vee
+ Author-email: eric@example.coms
+ License: UNKNOWN
+ Description: UNKNOWN
+ Platform: UNKNOWN
+ """,
+ }
+
+ def setUp(self):
+ super(EggInfoFile, self).setUp()
+ build_files(EggInfoFile.files, prefix=self.site_dir)
+
+
+def build_files(file_defs, prefix=pathlib.Path()):
+ """Build a set of files/directories, as described by the
+
+ file_defs dictionary. Each key/value pair in the dictionary is
+ interpreted as a filename/contents pair. If the contents value is a
+ dictionary, a directory is created, and the dictionary interpreted
+ as the files within it, recursively.
+
+ For example:
+
+ {"README.txt": "A README file",
+ "foo": {
+ "__init__.py": "",
+ "bar": {
+ "__init__.py": "",
+ },
+ "baz.py": "# Some code",
+ }
+ }
+ """
+ for name, contents in file_defs.items():
+ full_name = prefix / name
+ if isinstance(contents, dict):
+ full_name.mkdir()
+ build_files(contents, prefix=full_name)
+ else:
+ if isinstance(contents, bytes):
+ with full_name.open('wb') as f:
+ f.write(contents)
+ else:
+ with full_name.open('w') as f:
+ f.write(DALS(contents))
+
+
+def DALS(str):
+ "Dedent and left-strip"
+ return textwrap.dedent(str).lstrip()
diff --git a/Lib/test/test_importlib/test_main.py b/Lib/test/test_importlib/test_main.py
new file mode 100644
index 0000000..b70f944
--- /dev/null
+++ b/Lib/test/test_importlib/test_main.py
@@ -0,0 +1,158 @@
+# coding: utf-8
+
+import re
+import textwrap
+import unittest
+import importlib.metadata
+
+from . import fixtures
+from importlib.metadata import (
+ Distribution, EntryPoint,
+ PackageNotFoundError, distributions,
+ entry_points, metadata, version,
+ )
+
+
+class BasicTests(fixtures.DistInfoPkg, unittest.TestCase):
+ version_pattern = r'\d+\.\d+(\.\d)?'
+
+ def test_retrieves_version_of_self(self):
+ dist = Distribution.from_name('distinfo-pkg')
+ assert isinstance(dist.version, str)
+ assert re.match(self.version_pattern, dist.version)
+
+ def test_for_name_does_not_exist(self):
+ with self.assertRaises(PackageNotFoundError):
+ Distribution.from_name('does-not-exist')
+
+ def test_new_style_classes(self):
+ self.assertIsInstance(Distribution, type)
+
+
+class ImportTests(fixtures.DistInfoPkg, unittest.TestCase):
+ def test_import_nonexistent_module(self):
+ # Ensure that the MetadataPathFinder does not crash an import of a
+ # non-existant module.
+ with self.assertRaises(ImportError):
+ importlib.import_module('does_not_exist')
+
+ def test_resolve(self):
+ entries = dict(entry_points()['entries'])
+ ep = entries['main']
+ self.assertEqual(ep.load().__name__, "main")
+
+ def test_resolve_without_attr(self):
+ ep = EntryPoint(
+ name='ep',
+ value='importlib.metadata',
+ group='grp',
+ )
+ assert ep.load() is importlib.metadata
+
+
+class NameNormalizationTests(
+ fixtures.OnSysPath, fixtures.SiteDir, unittest.TestCase):
+ @staticmethod
+ def pkg_with_dashes(site_dir):
+ """
+ Create minimal metadata for a package with dashes
+ in the name (and thus underscores in the filename).
+ """
+ metadata_dir = site_dir / 'my_pkg.dist-info'
+ metadata_dir.mkdir()
+ metadata = metadata_dir / 'METADATA'
+ with metadata.open('w') as strm:
+ strm.write('Version: 1.0\n')
+ return 'my-pkg'
+
+ def test_dashes_in_dist_name_found_as_underscores(self):
+ """
+ For a package with a dash in the name, the dist-info metadata
+ uses underscores in the name. Ensure the metadata loads.
+ """
+ pkg_name = self.pkg_with_dashes(self.site_dir)
+ assert version(pkg_name) == '1.0'
+
+ @staticmethod
+ def pkg_with_mixed_case(site_dir):
+ """
+ Create minimal metadata for a package with mixed case
+ in the name.
+ """
+ metadata_dir = site_dir / 'CherryPy.dist-info'
+ metadata_dir.mkdir()
+ metadata = metadata_dir / 'METADATA'
+ with metadata.open('w') as strm:
+ strm.write('Version: 1.0\n')
+ return 'CherryPy'
+
+ def test_dist_name_found_as_any_case(self):
+ """
+ Ensure the metadata loads when queried with any case.
+ """
+ pkg_name = self.pkg_with_mixed_case(self.site_dir)
+ assert version(pkg_name) == '1.0'
+ assert version(pkg_name.lower()) == '1.0'
+ assert version(pkg_name.upper()) == '1.0'
+
+
+class NonASCIITests(fixtures.OnSysPath, fixtures.SiteDir, unittest.TestCase):
+ @staticmethod
+ def pkg_with_non_ascii_description(site_dir):
+ """
+ Create minimal metadata for a package with non-ASCII in
+ the description.
+ """
+ metadata_dir = site_dir / 'portend.dist-info'
+ metadata_dir.mkdir()
+ metadata = metadata_dir / 'METADATA'
+ with metadata.open('w', encoding='utf-8') as fp:
+ fp.write('Description: pôrˈtend\n')
+ return 'portend'
+
+ @staticmethod
+ def pkg_with_non_ascii_description_egg_info(site_dir):
+ """
+ Create minimal metadata for an egg-info package with
+ non-ASCII in the description.
+ """
+ metadata_dir = site_dir / 'portend.dist-info'
+ metadata_dir.mkdir()
+ metadata = metadata_dir / 'METADATA'
+ with metadata.open('w', encoding='utf-8') as fp:
+ fp.write(textwrap.dedent("""
+ Name: portend
+
+ pôrˈtend
+ """).lstrip())
+ return 'portend'
+
+ def test_metadata_loads(self):
+ pkg_name = self.pkg_with_non_ascii_description(self.site_dir)
+ meta = metadata(pkg_name)
+ assert meta['Description'] == 'pôrˈtend'
+
+ def test_metadata_loads_egg_info(self):
+ pkg_name = self.pkg_with_non_ascii_description_egg_info(self.site_dir)
+ meta = metadata(pkg_name)
+ assert meta.get_payload() == 'pôrˈtend\n'
+
+
+class DiscoveryTests(fixtures.EggInfoPkg,
+ fixtures.DistInfoPkg,
+ unittest.TestCase):
+
+ def test_package_discovery(self):
+ dists = list(distributions())
+ assert all(
+ isinstance(dist, Distribution)
+ for dist in dists
+ )
+ assert any(
+ dist.metadata['Name'] == 'egginfo-pkg'
+ for dist in dists
+ )
+ assert any(
+ dist.metadata['Name'] == 'distinfo-pkg'
+ for dist in dists
+ )
diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py
new file mode 100644
index 0000000..899777f
--- /dev/null
+++ b/Lib/test/test_importlib/test_metadata_api.py
@@ -0,0 +1,151 @@
+import re
+import textwrap
+import unittest
+import itertools
+
+from collections.abc import Iterator
+
+from . import fixtures
+from importlib.metadata import (
+ Distribution, PackageNotFoundError, distribution,
+ entry_points, files, metadata, requires, version,
+ )
+
+
+class APITests(
+ fixtures.EggInfoPkg,
+ fixtures.DistInfoPkg,
+ fixtures.EggInfoFile,
+ unittest.TestCase):
+
+ version_pattern = r'\d+\.\d+(\.\d)?'
+
+ def test_retrieves_version_of_self(self):
+ pkg_version = version('egginfo-pkg')
+ assert isinstance(pkg_version, str)
+ assert re.match(self.version_pattern, pkg_version)
+
+ def test_retrieves_version_of_distinfo_pkg(self):
+ pkg_version = version('distinfo-pkg')
+ assert isinstance(pkg_version, str)
+ assert re.match(self.version_pattern, pkg_version)
+
+ def test_for_name_does_not_exist(self):
+ with self.assertRaises(PackageNotFoundError):
+ distribution('does-not-exist')
+
+ def test_for_top_level(self):
+ self.assertEqual(
+ distribution('egginfo-pkg').read_text('top_level.txt').strip(),
+ 'mod')
+
+ def test_read_text(self):
+ top_level = [
+ path for path in files('egginfo-pkg')
+ if path.name == 'top_level.txt'
+ ][0]
+ self.assertEqual(top_level.read_text(), 'mod\n')
+
+ def test_entry_points(self):
+ entries = dict(entry_points()['entries'])
+ ep = entries['main']
+ self.assertEqual(ep.value, 'mod:main')
+ self.assertEqual(ep.extras, [])
+
+ def test_metadata_for_this_package(self):
+ md = metadata('egginfo-pkg')
+ assert md['author'] == 'Steven Ma'
+ assert md['LICENSE'] == 'Unknown'
+ assert md['Name'] == 'egginfo-pkg'
+ classifiers = md.get_all('Classifier')
+ assert 'Topic :: Software Development :: Libraries' in classifiers
+
+ @staticmethod
+ def _test_files(files_iter):
+ assert isinstance(files_iter, Iterator), files_iter
+ files = list(files_iter)
+ root = files[0].root
+ for file in files:
+ assert file.root == root
+ assert not file.hash or file.hash.value
+ assert not file.hash or file.hash.mode == 'sha256'
+ assert not file.size or file.size >= 0
+ assert file.locate().exists()
+ assert isinstance(file.read_binary(), bytes)
+ if file.name.endswith('.py'):
+ file.read_text()
+
+ def test_file_hash_repr(self):
+ assertRegex = self.assertRegex
+
+ util = [
+ p for p in files('distinfo-pkg')
+ if p.name == 'mod.py'
+ ][0]
+ assertRegex(
+ repr(util.hash),
+ '<FileHash mode: sha256 value: .*>')
+
+ def test_files_dist_info(self):
+ self._test_files(files('distinfo-pkg'))
+
+ def test_files_egg_info(self):
+ self._test_files(files('egginfo-pkg'))
+
+ def test_version_egg_info_file(self):
+ self.assertEqual(version('egginfo-file'), '0.1')
+
+ def test_requires_egg_info_file(self):
+ requirements = requires('egginfo-file')
+ self.assertIsNone(requirements)
+
+ def test_requires(self):
+ deps = requires('egginfo-pkg')
+ assert any(
+ dep == 'wheel >= 1.0; python_version >= "2.7"'
+ for dep in deps
+ )
+
+ def test_requires_dist_info(self):
+ deps = list(requires('distinfo-pkg'))
+ assert deps and all(deps)
+
+ def test_more_complex_deps_requires_text(self):
+ requires = textwrap.dedent("""
+ dep1
+ dep2
+
+ [:python_version < "3"]
+ dep3
+
+ [extra1]
+ dep4
+
+ [extra2:python_version < "3"]
+ dep5
+ """)
+ deps = sorted(Distribution._deps_from_requires_text(requires))
+ expected = [
+ 'dep1',
+ 'dep2',
+ 'dep3; python_version < "3"',
+ 'dep4; extra == "extra1"',
+ 'dep5; (python_version < "3") and extra == "extra2"',
+ ]
+ # It's important that the environment marker expression be
+ # wrapped in parentheses to avoid the following 'and' binding more
+ # tightly than some other part of the environment expression.
+
+ assert deps == expected
+
+
+class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
+ def test_find_distributions_specified_path(self):
+ dists = itertools.chain.from_iterable(
+ resolver(path=[str(self.site_dir)])
+ for resolver in Distribution._discover_resolvers()
+ )
+ assert any(
+ dist.metadata['Name'] == 'distinfo-pkg'
+ for dist in dists
+ )
diff --git a/Lib/test/test_importlib/test_zip.py b/Lib/test/test_importlib/test_zip.py
new file mode 100644
index 0000000..db39e19
--- /dev/null
+++ b/Lib/test/test_importlib/test_zip.py
@@ -0,0 +1,56 @@
+import sys
+import unittest
+
+from contextlib import ExitStack
+from importlib.metadata import distribution, entry_points, files, version
+from importlib.resources import path
+
+
+class TestZip(unittest.TestCase):
+ root = 'test.test_importlib.data'
+
+ def setUp(self):
+ # Find the path to the example-*.whl so we can add it to the front of
+ # sys.path, where we'll then try to find the metadata thereof.
+ self.resources = ExitStack()
+ self.addCleanup(self.resources.close)
+ wheel = self.resources.enter_context(
+ path(self.root, 'example-21.12-py3-none-any.whl'))
+ sys.path.insert(0, str(wheel))
+ self.resources.callback(sys.path.pop, 0)
+
+ def test_zip_version(self):
+ self.assertEqual(version('example'), '21.12')
+
+ def test_zip_entry_points(self):
+ scripts = dict(entry_points()['console_scripts'])
+ entry_point = scripts['example']
+ self.assertEqual(entry_point.value, 'example:main')
+
+ def test_missing_metadata(self):
+ self.assertIsNone(distribution('example').read_text('does not exist'))
+
+ def test_case_insensitive(self):
+ self.assertEqual(version('Example'), '21.12')
+
+ def test_files(self):
+ for file in files('example'):
+ path = str(file.dist.locate_file(file))
+ assert '.whl/' in path, path
+
+
+class TestEgg(TestZip):
+ def setUp(self):
+ # Find the path to the example-*.egg so we can add it to the front of
+ # sys.path, where we'll then try to find the metadata thereof.
+ self.resources = ExitStack()
+ self.addCleanup(self.resources.close)
+ egg = self.resources.enter_context(
+ path(self.root, 'example-21.12-py3.6.egg'))
+ sys.path.insert(0, str(egg))
+ self.resources.callback(sys.path.pop, 0)
+
+ def test_files(self):
+ for file in files('example'):
+ path = str(file.dist.locate_file(file))
+ assert '.egg/' in path, path
diff --git a/Misc/NEWS.d/next/Library/2019-05-11-02-30-45.bpo-34632.8MXa7T.rst b/Misc/NEWS.d/next/Library/2019-05-11-02-30-45.bpo-34632.8MXa7T.rst
new file mode 100644
index 0000000..ab44338
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-05-11-02-30-45.bpo-34632.8MXa7T.rst
@@ -0,0 +1 @@
+Introduce the ``importlib.metadata`` module with (provisional) support for reading metadata from third-party packages. \ No newline at end of file
diff --git a/Python.framework/Resources b/Python.framework/Resources
new file mode 120000
index 0000000..953ee36
--- /dev/null
+++ b/Python.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources \ No newline at end of file
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index 36b95d9..e724560 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -2051,650 +2051,787 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
1,8,3,2,1,10,8,8,3,8,3,8,3,8,3,8,
3,114,43,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,
- 106,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 172,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,
101,4,100,2,100,3,132,0,131,1,90,5,101,4,100,4,
100,5,132,0,131,1,90,6,101,4,100,6,100,7,132,0,
131,1,90,7,101,4,100,8,100,9,132,0,131,1,90,8,
- 101,4,100,17,100,11,100,12,132,1,131,1,90,9,101,4,
- 100,18,100,13,100,14,132,1,131,1,90,10,101,4,100,19,
- 100,15,100,16,132,1,131,1,90,11,100,10,83,0,41,20,
- 218,10,80,97,116,104,70,105,110,100,101,114,122,62,77,101,
- 116,97,32,112,97,116,104,32,102,105,110,100,101,114,32,102,
- 111,114,32,115,121,115,46,112,97,116,104,32,97,110,100,32,
- 112,97,99,107,97,103,101,32,95,95,112,97,116,104,95,95,
- 32,97,116,116,114,105,98,117,116,101,115,46,99,1,0,0,
- 0,0,0,0,0,0,0,0,0,3,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,1,125,2,
- 124,2,100,1,107,8,114,40,116,1,106,2,124,1,61,0,
- 113,14,116,4,124,2,100,2,131,2,114,14,124,2,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,8,0,0,0,218,19,112,97,
- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
- 101,218,5,105,116,101,109,115,114,128,0,0,0,114,46,1,
- 0,0,41,3,114,193,0,0,0,114,117,0,0,0,218,6,
- 102,105,110,100,101,114,114,3,0,0,0,114,3,0,0,0,
- 114,6,0,0,0,114,46,1,0,0,213,4,0,0,115,10,
- 0,0,0,0,4,22,1,8,1,10,1,10,1,122,28,80,
- 97,116,104,70,105,110,100,101,114,46,105,110,118,97,108,105,
- 100,97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,
- 0,0,0,0,0,0,0,0,3,0,0,0,9,0,0,0,
- 67,0,0,0,115,84,0,0,0,116,0,106,1,100,1,107,
- 9,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,44,125,2,122,
- 14,124,2,124,1,131,1,87,0,2,0,1,0,83,0,4,
- 0,116,5,107,10,114,76,1,0,1,0,1,0,89,0,113,
- 34,89,0,113,34,88,0,113,34,100,1,83,0,41,3,122,
- 46,83,101,97,114,99,104,32,115,121,115,46,112,97,116,104,
- 95,104,111,111,107,115,32,102,111,114,32,97,32,102,105,110,
- 100,101,114,32,102,111,114,32,39,112,97,116,104,39,46,78,
- 122,23,115,121,115,46,112,97,116,104,95,104,111,111,107,115,
- 32,105,115,32,101,109,112,116,121,41,6,114,8,0,0,0,
- 218,10,112,97,116,104,95,104,111,111,107,115,114,75,0,0,
- 0,114,76,0,0,0,114,138,0,0,0,114,118,0,0,0,
- 41,3,114,193,0,0,0,114,44,0,0,0,90,4,104,111,
- 111,107,114,3,0,0,0,114,3,0,0,0,114,6,0,0,
- 0,218,11,95,112,97,116,104,95,104,111,111,107,115,223,4,
- 0,0,115,16,0,0,0,0,3,16,1,12,1,10,1,2,
- 1,14,1,14,1,12,2,122,22,80,97,116,104,70,105,110,
- 100,101,114,46,95,112,97,116,104,95,104,111,111,107,115,99,
- 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
- 8,0,0,0,67,0,0,0,115,104,0,0,0,124,1,100,
- 1,107,2,114,44,122,12,116,0,160,1,161,0,125,1,87,
- 0,110,22,4,0,116,2,107,10,114,42,1,0,1,0,1,
- 0,89,0,100,2,83,0,88,0,122,14,116,3,106,4,124,
- 1,25,0,125,2,87,0,110,40,4,0,116,5,107,10,114,
- 98,1,0,1,0,1,0,124,0,160,6,124,1,161,1,125,
- 2,124,2,116,3,106,4,124,1,60,0,89,0,110,2,88,
- 0,124,2,83,0,41,3,122,210,71,101,116,32,116,104,101,
- 32,102,105,110,100,101,114,32,102,111,114,32,116,104,101,32,
- 112,97,116,104,32,101,110,116,114,121,32,102,114,111,109,32,
+ 101,4,100,28,100,11,100,12,132,1,131,1,90,9,101,4,
+ 100,29,100,13,100,14,132,1,131,1,90,10,101,4,100,30,
+ 100,15,100,16,132,1,131,1,90,11,100,17,90,12,101,4,
+ 100,31,100,18,100,19,132,1,131,1,90,13,101,4,100,20,
+ 100,21,132,0,131,1,90,14,101,15,100,22,100,23,132,0,
+ 131,1,90,16,101,4,100,24,100,25,132,0,131,1,90,17,
+ 101,4,100,26,100,27,132,0,131,1,90,18,100,10,83,0,
+ 41,32,218,10,80,97,116,104,70,105,110,100,101,114,122,62,
+ 77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,114,
+ 32,102,111,114,32,115,121,115,46,112,97,116,104,32,97,110,
+ 100,32,112,97,99,107,97,103,101,32,95,95,112,97,116,104,
+ 95,95,32,97,116,116,114,105,98,117,116,101,115,46,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,3,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,1,
+ 125,2,124,2,100,1,107,8,114,40,116,1,106,2,124,1,
+ 61,0,113,14,116,4,124,2,100,2,131,2,114,14,124,2,
+ 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,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,40,0,0,0,
- 78,41,7,114,2,0,0,0,114,55,0,0,0,114,3,1,
- 0,0,114,8,0,0,0,114,48,1,0,0,218,8,75,101,
- 121,69,114,114,111,114,114,52,1,0,0,41,3,114,193,0,
- 0,0,114,44,0,0,0,114,50,1,0,0,114,3,0,0,
- 0,114,3,0,0,0,114,6,0,0,0,218,20,95,112,97,
- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
- 101,236,4,0,0,115,22,0,0,0,0,8,8,1,2,1,
- 12,1,14,3,8,1,2,1,14,1,14,1,10,1,16,1,
- 122,31,80,97,116,104,70,105,110,100,101,114,46,95,112,97,
- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
- 101,99,3,0,0,0,0,0,0,0,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,107,9,114,60,116,
- 3,160,4,124,1,124,3,161,2,83,0,116,3,160,5,124,
- 1,100,0,161,2,125,5,124,4,124,5,95,6,124,5,83,
- 0,41,2,78,114,137,0,0,0,41,7,114,128,0,0,0,
- 114,137,0,0,0,114,206,0,0,0,114,134,0,0,0,114,
- 201,0,0,0,114,183,0,0,0,114,178,0,0,0,41,6,
- 114,193,0,0,0,114,139,0,0,0,114,50,1,0,0,114,
- 140,0,0,0,114,141,0,0,0,114,187,0,0,0,114,3,
- 0,0,0,114,3,0,0,0,114,6,0,0,0,218,16,95,
- 108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,2,
- 5,0,0,115,18,0,0,0,0,4,10,1,16,2,10,1,
- 4,1,8,1,12,1,12,1,6,1,122,27,80,97,116,104,
- 70,105,110,100,101,114,46,95,108,101,103,97,99,121,95,103,
- 101,116,95,115,112,101,99,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,
- 107,9,114,8,116,4,124,6,100,2,131,2,114,70,124,6,
- 160,5,124,1,124,3,161,2,125,7,110,12,124,0,160,6,
- 124,1,124,6,161,2,125,7,124,7,100,1,107,8,114,92,
- 113,8,124,7,106,7,100,1,107,9,114,110,124,7,2,0,
- 1,0,83,0,124,7,106,8,125,8,124,8,100,1,107,8,
- 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,203,0,0,0,122,19,115,112,101,99,32,109,105,115,115,
- 105,110,103,32,108,111,97,100,101,114,41,13,114,161,0,0,
- 0,114,85,0,0,0,218,5,98,121,116,101,115,114,54,1,
- 0,0,114,128,0,0,0,114,203,0,0,0,114,55,1,0,
- 0,114,140,0,0,0,114,178,0,0,0,114,118,0,0,0,
- 114,167,0,0,0,114,134,0,0,0,114,183,0,0,0,41,
- 9,114,193,0,0,0,114,139,0,0,0,114,44,0,0,0,
- 114,202,0,0,0,218,14,110,97,109,101,115,112,97,99,101,
- 95,112,97,116,104,90,5,101,110,116,114,121,114,50,1,0,
- 0,114,187,0,0,0,114,141,0,0,0,114,3,0,0,0,
- 114,3,0,0,0,114,6,0,0,0,218,9,95,103,101,116,
- 95,115,112,101,99,17,5,0,0,115,40,0,0,0,0,5,
- 4,1,8,1,14,1,2,1,10,1,8,1,10,1,14,2,
- 12,1,8,1,2,1,10,1,8,1,6,1,8,1,8,5,
- 12,2,12,1,6,1,122,20,80,97,116,104,70,105,110,100,
- 101,114,46,95,103,101,116,95,115,112,101,99,99,4,0,0,
- 0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,
- 0,67,0,0,0,115,100,0,0,0,124,2,100,1,107,8,
- 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,107,8,114,40,100,1,
- 83,0,124,4,106,3,100,1,107,8,114,92,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,110,4,124,4,83,0,100,1,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,8,0,0,0,114,44,0,0,0,114,58,1,0,
- 0,114,140,0,0,0,114,178,0,0,0,114,181,0,0,0,
- 114,22,1,0,0,41,6,114,193,0,0,0,114,139,0,0,
- 0,114,44,0,0,0,114,202,0,0,0,114,187,0,0,0,
- 114,57,1,0,0,114,3,0,0,0,114,3,0,0,0,114,
- 6,0,0,0,114,203,0,0,0,49,5,0,0,115,26,0,
- 0,0,0,6,8,1,6,1,14,1,8,1,4,1,10,1,
- 6,1,4,3,6,1,16,1,4,2,6,2,122,20,80,97,
- 116,104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,
- 101,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,
- 107,8,114,24,100,1,83,0,124,3,106,1,83,0,41,2,
- 122,170,102,105,110,100,32,116,104,101,32,109,111,100,117,108,
- 101,32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,
- 32,39,112,97,116,104,39,32,98,97,115,101,100,32,111,110,
- 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,
- 97,110,100,10,32,32,32,32,32,32,32,32,115,121,115,46,
+ 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,8,0,0,0,218,19,
112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
- 99,104,101,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,204,0,
- 0,0,114,205,0,0,0,114,3,0,0,0,114,3,0,0,
- 0,114,6,0,0,0,114,206,0,0,0,73,5,0,0,115,
- 8,0,0,0,0,8,12,1,8,1,4,1,122,22,80,97,
- 116,104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,
- 100,117,108,101,41,1,78,41,2,78,78,41,1,78,41,12,
- 114,125,0,0,0,114,124,0,0,0,114,126,0,0,0,114,
- 127,0,0,0,114,207,0,0,0,114,46,1,0,0,114,52,
- 1,0,0,114,54,1,0,0,114,55,1,0,0,114,58,1,
- 0,0,114,203,0,0,0,114,206,0,0,0,114,3,0,0,
- 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,
- 114,45,1,0,0,209,4,0,0,115,30,0,0,0,8,2,
- 4,2,2,1,10,9,2,1,10,12,2,1,10,21,2,1,
- 10,14,2,1,12,31,2,1,12,23,2,1,114,45,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,110,0,0,0,114,3,
- 0,0,0,114,16,1,0,0,169,1,114,140,0,0,0,114,
- 3,0,0,0,114,6,0,0,0,114,19,1,0,0,102,5,
- 0,0,115,4,0,0,0,4,0,2,0,122,38,70,105,108,
+ 99,104,101,218,5,105,116,101,109,115,114,128,0,0,0,114,
+ 46,1,0,0,41,3,114,193,0,0,0,114,117,0,0,0,
+ 218,6,102,105,110,100,101,114,114,3,0,0,0,114,3,0,
+ 0,0,114,6,0,0,0,114,46,1,0,0,213,4,0,0,
+ 115,10,0,0,0,0,4,22,1,8,1,10,1,10,1,122,
+ 28,80,97,116,104,70,105,110,100,101,114,46,105,110,118,97,
+ 108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,9,0,
+ 0,0,67,0,0,0,115,84,0,0,0,116,0,106,1,100,
+ 1,107,9,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,44,125,
+ 2,122,14,124,2,124,1,131,1,87,0,2,0,1,0,83,
+ 0,4,0,116,5,107,10,114,76,1,0,1,0,1,0,89,
+ 0,113,34,89,0,113,34,88,0,113,34,100,1,83,0,41,
+ 3,122,46,83,101,97,114,99,104,32,115,121,115,46,112,97,
+ 116,104,95,104,111,111,107,115,32,102,111,114,32,97,32,102,
+ 105,110,100,101,114,32,102,111,114,32,39,112,97,116,104,39,
+ 46,78,122,23,115,121,115,46,112,97,116,104,95,104,111,111,
+ 107,115,32,105,115,32,101,109,112,116,121,41,6,114,8,0,
+ 0,0,218,10,112,97,116,104,95,104,111,111,107,115,114,75,
+ 0,0,0,114,76,0,0,0,114,138,0,0,0,114,118,0,
+ 0,0,41,3,114,193,0,0,0,114,44,0,0,0,90,4,
+ 104,111,111,107,114,3,0,0,0,114,3,0,0,0,114,6,
+ 0,0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,
+ 223,4,0,0,115,16,0,0,0,0,3,16,1,12,1,10,
+ 1,2,1,14,1,14,1,12,2,122,22,80,97,116,104,70,
+ 105,110,100,101,114,46,95,112,97,116,104,95,104,111,111,107,
+ 115,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,8,0,0,0,67,0,0,0,115,104,0,0,0,124,
+ 1,100,1,107,2,114,44,122,12,116,0,160,1,161,0,125,
+ 1,87,0,110,22,4,0,116,2,107,10,114,42,1,0,1,
+ 0,1,0,89,0,100,2,83,0,88,0,122,14,116,3,106,
+ 4,124,1,25,0,125,2,87,0,110,40,4,0,116,5,107,
+ 10,114,98,1,0,1,0,1,0,124,0,160,6,124,1,161,
+ 1,125,2,124,2,116,3,106,4,124,1,60,0,89,0,110,
+ 2,88,0,124,2,83,0,41,3,122,210,71,101,116,32,116,
+ 104,101,32,102,105,110,100,101,114,32,102,111,114,32,116,104,
+ 101,32,112,97,116,104,32,101,110,116,114,121,32,102,114,111,
+ 109,32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,
+ 116,101,114,95,99,97,99,104,101,46,10,10,32,32,32,32,
+ 32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,
+ 101,110,116,114,121,32,105,115,32,110,111,116,32,105,110,32,
+ 116,104,101,32,99,97,99,104,101,44,32,102,105,110,100,32,
+ 116,104,101,32,97,112,112,114,111,112,114,105,97,116,101,32,
+ 102,105,110,100,101,114,10,32,32,32,32,32,32,32,32,97,
+ 110,100,32,99,97,99,104,101,32,105,116,46,32,73,102,32,
+ 110,111,32,102,105,110,100,101,114,32,105,115,32,97,118,97,
+ 105,108,97,98,108,101,44,32,115,116,111,114,101,32,78,111,
+ 110,101,46,10,10,32,32,32,32,32,32,32,32,114,40,0,
+ 0,0,78,41,7,114,2,0,0,0,114,55,0,0,0,114,
+ 3,1,0,0,114,8,0,0,0,114,48,1,0,0,218,8,
+ 75,101,121,69,114,114,111,114,114,52,1,0,0,41,3,114,
+ 193,0,0,0,114,44,0,0,0,114,50,1,0,0,114,3,
+ 0,0,0,114,3,0,0,0,114,6,0,0,0,218,20,95,
+ 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
+ 99,104,101,236,4,0,0,115,22,0,0,0,0,8,8,1,
+ 2,1,12,1,14,3,8,1,2,1,14,1,14,1,10,1,
+ 16,1,122,31,80,97,116,104,70,105,110,100,101,114,46,95,
+ 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
+ 99,104,101,99,3,0,0,0,0,0,0,0,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,107,9,114,
+ 60,116,3,160,4,124,1,124,3,161,2,83,0,116,3,160,
+ 5,124,1,100,0,161,2,125,5,124,4,124,5,95,6,124,
+ 5,83,0,41,2,78,114,137,0,0,0,41,7,114,128,0,
+ 0,0,114,137,0,0,0,114,206,0,0,0,114,134,0,0,
+ 0,114,201,0,0,0,114,183,0,0,0,114,178,0,0,0,
+ 41,6,114,193,0,0,0,114,139,0,0,0,114,50,1,0,
+ 0,114,140,0,0,0,114,141,0,0,0,114,187,0,0,0,
+ 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,
+ 16,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,
+ 99,2,5,0,0,115,18,0,0,0,0,4,10,1,16,2,
+ 10,1,4,1,8,1,12,1,12,1,6,1,122,27,80,97,
+ 116,104,70,105,110,100,101,114,46,95,108,101,103,97,99,121,
+ 95,103,101,116,95,115,112,101,99,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,107,9,114,8,116,4,124,6,100,2,131,2,114,70,
+ 124,6,160,5,124,1,124,3,161,2,125,7,110,12,124,0,
+ 160,6,124,1,124,6,161,2,125,7,124,7,100,1,107,8,
+ 114,92,113,8,124,7,106,7,100,1,107,9,114,110,124,7,
+ 2,0,1,0,83,0,124,7,106,8,125,8,124,8,100,1,
+ 107,8,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,203,0,0,0,122,19,115,112,101,99,32,109,105,
+ 115,115,105,110,103,32,108,111,97,100,101,114,41,13,114,161,
+ 0,0,0,114,85,0,0,0,218,5,98,121,116,101,115,114,
+ 54,1,0,0,114,128,0,0,0,114,203,0,0,0,114,55,
+ 1,0,0,114,140,0,0,0,114,178,0,0,0,114,118,0,
+ 0,0,114,167,0,0,0,114,134,0,0,0,114,183,0,0,
+ 0,41,9,114,193,0,0,0,114,139,0,0,0,114,44,0,
+ 0,0,114,202,0,0,0,218,14,110,97,109,101,115,112,97,
+ 99,101,95,112,97,116,104,90,5,101,110,116,114,121,114,50,
+ 1,0,0,114,187,0,0,0,114,141,0,0,0,114,3,0,
+ 0,0,114,3,0,0,0,114,6,0,0,0,218,9,95,103,
+ 101,116,95,115,112,101,99,17,5,0,0,115,40,0,0,0,
+ 0,5,4,1,8,1,14,1,2,1,10,1,8,1,10,1,
+ 14,2,12,1,8,1,2,1,10,1,8,1,6,1,8,1,
+ 8,5,12,2,12,1,6,1,122,20,80,97,116,104,70,105,
+ 110,100,101,114,46,95,103,101,116,95,115,112,101,99,99,4,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,
+ 0,0,0,67,0,0,0,115,100,0,0,0,124,2,100,1,
+ 107,8,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,107,8,114,40,
+ 100,1,83,0,124,4,106,3,100,1,107,8,114,92,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,110,4,124,4,83,0,100,1,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,8,0,0,0,114,44,0,0,0,114,58,
+ 1,0,0,114,140,0,0,0,114,178,0,0,0,114,181,0,
+ 0,0,114,22,1,0,0,41,6,114,193,0,0,0,114,139,
+ 0,0,0,114,44,0,0,0,114,202,0,0,0,114,187,0,
+ 0,0,114,57,1,0,0,114,3,0,0,0,114,3,0,0,
+ 0,114,6,0,0,0,114,203,0,0,0,49,5,0,0,115,
+ 26,0,0,0,0,6,8,1,6,1,14,1,8,1,4,1,
+ 10,1,6,1,4,3,6,1,16,1,4,2,6,2,122,20,
+ 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,
+ 115,112,101,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,107,8,114,24,100,1,83,0,124,3,106,1,83,0,
+ 41,2,122,170,102,105,110,100,32,116,104,101,32,109,111,100,
+ 117,108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,
+ 111,114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,
+ 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,
+ 115,32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,
+ 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
+ 99,97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,
+ 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,
+ 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,
+ 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,
+ 101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,114,
+ 204,0,0,0,114,205,0,0,0,114,3,0,0,0,114,3,
+ 0,0,0,114,6,0,0,0,114,206,0,0,0,73,5,0,
+ 0,115,8,0,0,0,0,8,12,1,8,1,4,1,122,22,
+ 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,
+ 109,111,100,117,108,101,122,45,40,63,58,123,112,97,116,116,
+ 101,114,110,125,40,45,46,42,41,63,92,46,40,100,105,115,
+ 116,124,101,103,103,41,45,105,110,102,111,124,69,71,71,45,
+ 73,78,70,79,41,99,3,0,0,0,0,0,0,0,0,0,
+ 0,0,7,0,0,0,4,0,0,0,67,0,0,0,115,78,
+ 0,0,0,100,1,100,2,108,0,125,3,100,1,100,3,108,
+ 1,109,2,125,4,1,0,124,2,100,2,107,8,114,34,116,
+ 3,106,4,125,2,124,1,100,2,107,8,114,46,100,4,110,
+ 8,124,3,160,5,124,1,161,1,125,5,124,0,160,6,124,
+ 5,124,2,161,2,125,6,116,7,124,4,124,6,131,2,83,
+ 0,41,5,97,37,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,116,104,101,
+ 32,96,96,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,110,111,116,32,115,117,112,112,108,105,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,112,97,116,104,96,96,32,40,100,101,
+ 102,97,117,108,116,115,32,116,111,32,115,121,115,46,112,97,
+ 116,104,41,46,10,32,32,32,32,32,32,32,32,114,73,0,
+ 0,0,78,41,1,218,16,80,97,116,104,68,105,115,116,114,
+ 105,98,117,116,105,111,110,122,2,46,42,41,8,218,2,114,
+ 101,90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,
+ 97,100,97,116,97,114,59,1,0,0,114,8,0,0,0,114,
+ 44,0,0,0,90,6,101,115,99,97,112,101,218,13,95,115,
+ 101,97,114,99,104,95,112,97,116,104,115,218,3,109,97,112,
+ 41,7,114,193,0,0,0,114,117,0,0,0,114,44,0,0,
+ 0,114,60,1,0,0,114,59,1,0,0,218,7,112,97,116,
+ 116,101,114,110,90,5,102,111,117,110,100,114,3,0,0,0,
+ 114,3,0,0,0,114,6,0,0,0,218,18,102,105,110,100,
+ 95,100,105,115,116,114,105,98,117,116,105,111,110,115,88,5,
+ 0,0,115,14,0,0,0,0,10,8,1,12,1,8,1,6,
+ 1,22,1,12,1,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,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,6,0,0,0,3,0,0,0,115,44,0,
+ 0,0,100,1,100,2,108,0,125,3,124,3,106,1,160,2,
+ 135,0,135,1,102,2,100,3,100,4,132,8,116,3,136,0,
+ 106,4,124,2,131,2,68,0,131,1,161,1,83,0,41,5,
+ 122,49,70,105,110,100,32,109,101,116,97,100,97,116,97,32,
+ 100,105,114,101,99,116,111,114,105,101,115,32,105,110,32,112,
+ 97,116,104,115,32,104,101,117,114,105,115,116,105,99,97,108,
+ 108,121,46,114,73,0,0,0,78,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,5,0,0,0,51,0,
+ 0,0,115,26,0,0,0,124,0,93,18,125,1,136,0,160,
+ 0,124,1,136,1,161,2,86,0,1,0,113,2,100,0,83,
+ 0,114,110,0,0,0,41,1,218,12,95,115,101,97,114,99,
+ 104,95,112,97,116,104,41,2,114,32,0,0,0,114,44,0,
+ 0,0,169,2,114,193,0,0,0,114,63,1,0,0,114,3,
+ 0,0,0,114,6,0,0,0,114,19,1,0,0,110,5,0,
+ 0,115,4,0,0,0,4,2,2,255,122,43,80,97,116,104,
+ 70,105,110,100,101,114,46,95,115,101,97,114,99,104,95,112,
+ 97,116,104,115,46,60,108,111,99,97,108,115,62,46,60,103,
+ 101,110,101,120,112,114,62,41,5,218,9,105,116,101,114,116,
+ 111,111,108,115,90,5,99,104,97,105,110,90,13,102,114,111,
+ 109,95,105,116,101,114,97,98,108,101,114,62,1,0,0,218,
+ 12,95,115,119,105,116,99,104,95,112,97,116,104,41,4,114,
+ 193,0,0,0,114,63,1,0,0,90,5,112,97,116,104,115,
+ 114,67,1,0,0,114,3,0,0,0,114,66,1,0,0,114,
+ 6,0,0,0,114,61,1,0,0,106,5,0,0,115,8,0,
+ 0,0,0,3,8,1,18,2,10,254,122,24,80,97,116,104,
+ 70,105,110,100,101,114,46,95,115,101,97,114,99,104,95,112,
+ 97,116,104,115,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,10,0,0,0,67,0,0,0,115,78,0,
+ 0,0,100,1,100,2,108,0,109,1,125,1,1,0,100,1,
+ 100,0,108,2,125,2,100,1,100,3,108,3,109,4,125,3,
+ 1,0,124,1,116,5,131,1,143,24,1,0,124,2,160,4,
+ 124,0,161,1,87,0,2,0,53,0,81,0,82,0,163,0,
+ 83,0,81,0,82,0,88,0,124,3,124,0,131,1,83,0,
+ 41,4,78,114,73,0,0,0,41,1,218,8,115,117,112,112,
+ 114,101,115,115,41,1,218,4,80,97,116,104,41,6,90,10,
+ 99,111,110,116,101,120,116,108,105,98,114,69,1,0,0,218,
+ 7,122,105,112,102,105,108,101,90,7,112,97,116,104,108,105,
+ 98,114,70,1,0,0,218,9,69,120,99,101,112,116,105,111,
+ 110,41,4,114,44,0,0,0,114,69,1,0,0,114,71,1,
+ 0,0,114,70,1,0,0,114,3,0,0,0,114,3,0,0,
+ 0,114,6,0,0,0,114,68,1,0,0,115,5,0,0,115,
+ 12,0,0,0,0,2,12,1,8,1,12,1,10,1,28,1,
+ 122,23,80,97,116,104,70,105,110,100,101,114,46,95,115,119,
+ 105,116,99,104,95,112,97,116,104,99,4,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,
+ 0,0,115,32,0,0,0,100,1,100,0,108,0,125,4,124,
+ 4,106,1,124,1,116,2,124,3,106,3,131,1,124,4,106,
+ 4,100,2,141,3,83,0,41,3,78,114,73,0,0,0,41,
+ 1,114,83,0,0,0,41,5,114,60,1,0,0,90,5,109,
+ 97,116,99,104,114,85,0,0,0,114,117,0,0,0,90,10,
+ 73,71,78,79,82,69,67,65,83,69,41,5,114,193,0,0,
+ 0,114,63,1,0,0,218,4,114,111,111,116,114,41,1,0,
+ 0,114,60,1,0,0,114,3,0,0,0,114,3,0,0,0,
+ 114,6,0,0,0,218,10,95,112,114,101,100,105,99,97,116,
+ 101,124,5,0,0,115,4,0,0,0,0,2,8,1,122,21,
+ 80,97,116,104,70,105,110,100,101,114,46,95,112,114,101,100,
+ 105,99,97,116,101,99,3,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,4,0,0,0,3,0,0,0,115,64,
+ 0,0,0,136,2,160,0,161,0,115,12,100,1,83,0,124,
+ 2,160,1,100,2,100,3,161,2,125,3,136,0,106,2,106,
+ 3,124,3,100,4,141,1,137,1,135,0,135,1,135,2,102,
+ 3,100,5,100,6,132,8,136,2,160,4,161,0,68,0,131,
+ 1,83,0,41,7,78,114,3,0,0,0,250,1,45,114,45,
+ 0,0,0,41,1,114,63,1,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,51,
+ 0,0,0,115,32,0,0,0,124,0,93,24,125,1,136,0,
+ 160,0,136,1,136,2,124,1,161,3,114,26,124,1,86,0,
+ 1,0,113,2,100,0,83,0,114,110,0,0,0,41,1,114,
+ 74,1,0,0,41,2,114,32,0,0,0,114,41,1,0,0,
+ 169,3,114,193,0,0,0,90,7,109,97,116,99,104,101,114,
+ 114,73,1,0,0,114,3,0,0,0,114,6,0,0,0,114,
+ 19,1,0,0,135,5,0,0,115,6,0,0,0,4,0,2,
+ 1,14,255,122,42,80,97,116,104,70,105,110,100,101,114,46,
+ 95,115,101,97,114,99,104,95,112,97,116,104,46,60,108,111,
+ 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,41,
+ 5,90,6,105,115,95,100,105,114,114,67,0,0,0,218,15,
+ 115,101,97,114,99,104,95,116,101,109,112,108,97,116,101,114,
+ 62,0,0,0,90,7,105,116,101,114,100,105,114,41,4,114,
+ 193,0,0,0,114,73,1,0,0,114,63,1,0,0,90,10,
+ 110,111,114,109,97,108,105,122,101,100,114,3,0,0,0,114,
+ 76,1,0,0,114,6,0,0,0,114,65,1,0,0,129,5,
+ 0,0,115,10,0,0,0,0,2,8,1,4,1,12,1,14,
+ 1,122,23,80,97,116,104,70,105,110,100,101,114,46,95,115,
+ 101,97,114,99,104,95,112,97,116,104,41,1,78,41,2,78,
+ 78,41,1,78,41,2,78,78,41,19,114,125,0,0,0,114,
+ 124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,207,
+ 0,0,0,114,46,1,0,0,114,52,1,0,0,114,54,1,
+ 0,0,114,55,1,0,0,114,58,1,0,0,114,203,0,0,
+ 0,114,206,0,0,0,114,77,1,0,0,114,64,1,0,0,
+ 114,61,1,0,0,218,12,115,116,97,116,105,99,109,101,116,
+ 104,111,100,114,68,1,0,0,114,74,1,0,0,114,65,1,
+ 0,0,114,3,0,0,0,114,3,0,0,0,114,3,0,0,
+ 0,114,6,0,0,0,114,45,1,0,0,209,4,0,0,115,
+ 52,0,0,0,8,2,4,2,2,1,10,9,2,1,10,12,
+ 2,1,10,21,2,1,10,14,2,1,12,31,2,1,12,23,
+ 2,1,12,12,4,2,2,1,12,17,2,1,10,8,2,1,
+ 10,8,2,1,10,4,2,1,114,45,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,110,0,0,0,114,3,0,0,0,114,
+ 16,1,0,0,169,1,114,140,0,0,0,114,3,0,0,0,
+ 114,6,0,0,0,114,19,1,0,0,154,5,0,0,115,4,
+ 0,0,0,4,0,2,0,122,38,70,105,108,101,70,105,110,
+ 100,101,114,46,95,95,105,110,105,116,95,95,46,60,108,111,
+ 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,
+ 71,0,0,0,114,105,0,0,0,78,41,7,114,167,0,0,
+ 0,218,8,95,108,111,97,100,101,114,115,114,44,0,0,0,
+ 218,11,95,112,97,116,104,95,109,116,105,109,101,218,3,115,
+ 101,116,218,11,95,112,97,116,104,95,99,97,99,104,101,218,
+ 19,95,114,101,108,97,120,101,100,95,112,97,116,104,95,99,
+ 97,99,104,101,41,5,114,119,0,0,0,114,44,0,0,0,
+ 218,14,108,111,97,100,101,114,95,100,101,116,97,105,108,115,
+ 90,7,108,111,97,100,101,114,115,114,189,0,0,0,114,3,
+ 0,0,0,114,80,1,0,0,114,6,0,0,0,114,209,0,
+ 0,0,148,5,0,0,115,16,0,0,0,0,4,4,1,12,
+ 1,26,1,6,2,10,1,6,1,8,1,122,19,70,105,108,
101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,
- 46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,
- 112,114,62,114,71,0,0,0,114,105,0,0,0,78,41,7,
- 114,167,0,0,0,218,8,95,108,111,97,100,101,114,115,114,
- 44,0,0,0,218,11,95,112,97,116,104,95,109,116,105,109,
- 101,218,3,115,101,116,218,11,95,112,97,116,104,95,99,97,
- 99,104,101,218,19,95,114,101,108,97,120,101,100,95,112,97,
- 116,104,95,99,97,99,104,101,41,5,114,119,0,0,0,114,
- 44,0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,
- 97,105,108,115,90,7,108,111,97,100,101,114,115,114,189,0,
- 0,0,114,3,0,0,0,114,60,1,0,0,114,6,0,0,
- 0,114,209,0,0,0,96,5,0,0,115,16,0,0,0,0,
- 4,4,1,12,1,26,1,6,2,10,1,6,1,8,1,122,
- 19,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,
- 105,116,95,95,99,1,0,0,0,0,0,0,0,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,
- 105,0,0,0,78,41,1,114,62,1,0,0,114,246,0,0,
- 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,
- 114,46,1,0,0,110,5,0,0,115,2,0,0,0,0,2,
- 122,28,70,105,108,101,70,105,110,100,101,114,46,105,110,118,
- 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,
- 0,0,0,0,0,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,107,8,114,26,100,1,
- 103,0,102,2,83,0,124,2,106,1,124,2,106,2,112,38,
- 103,0,102,2,83,0,41,2,122,197,84,114,121,32,116,111,
- 32,102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,
+ 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,105,0,0,0,
+ 78,41,1,114,82,1,0,0,114,246,0,0,0,114,3,0,
+ 0,0,114,3,0,0,0,114,6,0,0,0,114,46,1,0,
+ 0,162,5,0,0,115,2,0,0,0,0,2,122,28,70,105,
+ 108,101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,
+ 97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,
+ 0,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,107,8,114,26,100,1,103,0,102,2,
+ 83,0,124,2,106,1,124,2,106,2,112,38,103,0,102,2,
+ 83,0,41,2,122,197,84,114,121,32,116,111,32,102,105,110,
+ 100,32,97,32,108,111,97,100,101,114,32,102,111,114,32,116,
+ 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,
+ 117,108,101,44,32,111,114,32,116,104,101,32,110,97,109,101,
+ 115,112,97,99,101,10,32,32,32,32,32,32,32,32,112,97,
+ 99,107,97,103,101,32,112,111,114,116,105,111,110,115,46,32,
+ 82,101,116,117,114,110,115,32,40,108,111,97,100,101,114,44,
+ 32,108,105,115,116,45,111,102,45,112,111,114,116,105,111,110,
+ 115,41,46,10,10,32,32,32,32,32,32,32,32,84,104,105,
+ 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,
+ 101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110,
+ 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,
+ 46,10,10,32,32,32,32,32,32,32,32,78,41,3,114,203,
+ 0,0,0,114,140,0,0,0,114,178,0,0,0,41,3,114,
+ 119,0,0,0,114,139,0,0,0,114,187,0,0,0,114,3,
+ 0,0,0,114,3,0,0,0,114,6,0,0,0,114,137,0,
+ 0,0,168,5,0,0,115,8,0,0,0,0,7,10,1,8,
+ 1,8,1,122,22,70,105,108,101,70,105,110,100,101,114,46,
+ 102,105,110,100,95,108,111,97,100,101,114,99,6,0,0,0,
+ 0,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,
+ 67,0,0,0,115,26,0,0,0,124,1,124,2,124,3,131,
+ 2,125,6,116,0,124,2,124,3,124,6,124,4,100,1,141,
+ 4,83,0,41,2,78,114,177,0,0,0,41,1,114,190,0,
+ 0,0,41,7,114,119,0,0,0,114,188,0,0,0,114,139,
+ 0,0,0,114,44,0,0,0,90,4,115,109,115,108,114,202,
+ 0,0,0,114,140,0,0,0,114,3,0,0,0,114,3,0,
+ 0,0,114,6,0,0,0,114,58,1,0,0,180,5,0,0,
+ 115,8,0,0,0,0,1,10,1,8,1,2,255,122,20,70,
+ 105,108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,
+ 112,101,99,78,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,14,0,0,0,8,0,0,0,67,0,0,0,115,102,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,24,4,0,
+ 116,6,107,10,114,66,1,0,1,0,1,0,100,4,125,5,
+ 89,0,110,2,88,0,124,5,124,0,106,7,107,3,114,92,
+ 124,0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,
+ 131,0,114,114,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,107,6,114,218,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,208,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,150,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,107,6,144,1,114,54,116,15,124,12,131,1,144,1,
+ 114,54,124,0,160,16,124,10,124,1,124,12,100,8,124,2,
+ 161,5,2,0,1,0,83,0,113,224,124,3,144,1,114,98,
+ 116,18,160,19,100,9,124,8,161,2,1,0,116,18,160,20,
+ 124,1,100,8,161,2,125,13,124,8,103,1,124,13,95,21,
+ 124,13,83,0,100,8,83,0,41,10,122,111,84,114,121,32,
+ 116,111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,
111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,
- 32,109,111,100,117,108,101,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,203,0,0,0,114,140,0,0,0,114,178,0,0,
- 0,41,3,114,119,0,0,0,114,139,0,0,0,114,187,0,
+ 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,71,0,0,
+ 0,114,28,0,0,0,114,105,0,0,0,114,209,0,0,0,
+ 122,9,116,114,121,105,110,103,32,123,125,41,1,90,9,118,
+ 101,114,98,111,115,105,116,121,78,122,25,112,111,115,115,105,
+ 98,108,101,32,110,97,109,101,115,112,97,99,101,32,102,111,
+ 114,32,123,125,41,22,114,41,0,0,0,114,49,0,0,0,
+ 114,44,0,0,0,114,2,0,0,0,114,55,0,0,0,114,
+ 10,1,0,0,114,50,0,0,0,114,82,1,0,0,218,11,
+ 95,102,105,108,108,95,99,97,99,104,101,114,7,0,0,0,
+ 114,85,1,0,0,114,106,0,0,0,114,84,1,0,0,114,
+ 38,0,0,0,114,81,1,0,0,114,54,0,0,0,114,58,
+ 1,0,0,114,56,0,0,0,114,134,0,0,0,114,149,0,
+ 0,0,114,183,0,0,0,114,178,0,0,0,41,14,114,119,
+ 0,0,0,114,139,0,0,0,114,202,0,0,0,90,12,105,
+ 115,95,110,97,109,101,115,112,97,99,101,90,11,116,97,105,
+ 108,95,109,111,100,117,108,101,114,169,0,0,0,90,5,99,
+ 97,99,104,101,90,12,99,97,99,104,101,95,109,111,100,117,
+ 108,101,90,9,98,97,115,101,95,112,97,116,104,114,17,1,
+ 0,0,114,188,0,0,0,90,13,105,110,105,116,95,102,105,
+ 108,101,110,97,109,101,90,9,102,117,108,108,95,112,97,116,
+ 104,114,187,0,0,0,114,3,0,0,0,114,3,0,0,0,
+ 114,6,0,0,0,114,203,0,0,0,185,5,0,0,115,74,
+ 0,0,0,0,5,4,1,14,1,2,1,24,1,14,1,10,
+ 1,10,1,8,1,6,2,6,1,6,1,10,2,6,1,4,
+ 2,8,1,12,1,14,1,8,1,10,1,8,1,26,4,8,
+ 2,14,1,16,1,16,1,14,1,10,1,10,1,2,0,2,
+ 255,10,2,6,1,12,1,12,1,8,1,4,1,122,20,70,
+ 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,115,
+ 112,101,99,99,1,0,0,0,0,0,0,0,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,30,4,
+ 0,116,4,116,5,116,6,102,3,107,10,114,58,1,0,1,
+ 0,1,0,103,0,125,2,89,0,110,2,88,0,116,7,106,
+ 8,160,9,100,1,161,1,115,84,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,136,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,94,124,3,124,0,95,11,116,
+ 7,106,8,160,9,116,16,161,1,114,186,100,4,100,5,132,
+ 0,124,2,68,0,131,1,124,0,95,17,100,6,83,0,41,
+ 7,122,68,70,105,108,108,32,116,104,101,32,99,97,99,104,
+ 101,32,111,102,32,112,111,116,101,110,116,105,97,108,32,109,
+ 111,100,117,108,101,115,32,97,110,100,32,112,97,99,107,97,
+ 103,101,115,32,102,111,114,32,116,104,105,115,32,100,105,114,
+ 101,99,116,111,114,121,46,114,0,0,0,0,114,71,0,0,
+ 0,114,61,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,3,0,0,0,41,1,114,
+ 106,0,0,0,41,2,114,32,0,0,0,90,2,102,110,114,
+ 3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,9,
+ 60,115,101,116,99,111,109,112,62,6,6,0,0,115,4,0,
+ 0,0,6,0,2,0,122,41,70,105,108,101,70,105,110,100,
+ 101,114,46,95,102,105,108,108,95,99,97,99,104,101,46,60,
+ 108,111,99,97,108,115,62,46,60,115,101,116,99,111,109,112,
+ 62,78,41,18,114,44,0,0,0,114,2,0,0,0,114,7,
+ 1,0,0,114,55,0,0,0,114,3,1,0,0,218,15,80,
+ 101,114,109,105,115,115,105,111,110,69,114,114,111,114,218,18,
+ 78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,114,
+ 111,114,114,8,0,0,0,114,9,0,0,0,114,10,0,0,
+ 0,114,83,1,0,0,114,84,1,0,0,114,101,0,0,0,
+ 114,62,0,0,0,114,106,0,0,0,218,3,97,100,100,114,
+ 11,0,0,0,114,85,1,0,0,41,9,114,119,0,0,0,
+ 114,44,0,0,0,114,8,1,0,0,90,21,108,111,119,101,
+ 114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,
+ 115,114,41,1,0,0,114,117,0,0,0,114,29,1,0,0,
+ 114,17,1,0,0,90,8,110,101,119,95,110,97,109,101,114,
+ 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,87,
+ 1,0,0,233,5,0,0,115,34,0,0,0,0,2,6,1,
+ 2,1,22,1,20,3,10,3,12,1,12,7,6,1,8,1,
+ 16,1,4,1,18,2,4,1,12,1,6,1,12,1,122,22,
+ 70,105,108,101,70,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,3,97,20,1,0,0,65,32,99,
+ 108,97,115,115,32,109,101,116,104,111,100,32,119,104,105,99,
+ 104,32,114,101,116,117,114,110,115,32,97,32,99,108,111,115,
+ 117,114,101,32,116,111,32,117,115,101,32,111,110,32,115,121,
+ 115,46,112,97,116,104,95,104,111,111,107,10,32,32,32,32,
+ 32,32,32,32,119,104,105,99,104,32,119,105,108,108,32,114,
+ 101,116,117,114,110,32,97,110,32,105,110,115,116,97,110,99,
+ 101,32,117,115,105,110,103,32,116,104,101,32,115,112,101,99,
+ 105,102,105,101,100,32,108,111,97,100,101,114,115,32,97,110,
+ 100,32,116,104,101,32,112,97,116,104,10,32,32,32,32,32,
+ 32,32,32,99,97,108,108,101,100,32,111,110,32,116,104,101,
+ 32,99,108,111,115,117,114,101,46,10,10,32,32,32,32,32,
+ 32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,99,
+ 97,108,108,101,100,32,111,110,32,116,104,101,32,99,108,111,
+ 115,117,114,101,32,105,115,32,110,111,116,32,97,32,100,105,
+ 114,101,99,116,111,114,121,44,32,73,109,112,111,114,116,69,
+ 114,114,111,114,32,105,115,10,32,32,32,32,32,32,32,32,
+ 114,97,105,115,101,100,46,10,10,32,32,32,32,32,32,32,
+ 32,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,4,0,0,0,19,0,0,0,115,34,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,102,1,136,1,158,2,142,0,83,
+ 0,41,3,122,45,80,97,116,104,32,104,111,111,107,32,102,
+ 111,114,32,105,109,112,111,114,116,108,105,98,46,109,97,99,
+ 104,105,110,101,114,121,46,70,105,108,101,70,105,110,100,101,
+ 114,46,122,30,111,110,108,121,32,100,105,114,101,99,116,111,
+ 114,105,101,115,32,97,114,101,32,115,117,112,112,111,114,116,
+ 101,100,114,48,0,0,0,41,2,114,56,0,0,0,114,118,
+ 0,0,0,114,48,0,0,0,169,2,114,193,0,0,0,114,
+ 86,1,0,0,114,3,0,0,0,114,6,0,0,0,218,24,
+ 112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105,
+ 108,101,70,105,110,100,101,114,18,6,0,0,115,6,0,0,
+ 0,0,2,8,1,12,1,122,54,70,105,108,101,70,105,110,
+ 100,101,114,46,112,97,116,104,95,104,111,111,107,46,60,108,
+ 111,99,97,108,115,62,46,112,97,116,104,95,104,111,111,107,
+ 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,114,
+ 3,0,0,0,41,3,114,193,0,0,0,114,86,1,0,0,
+ 114,93,1,0,0,114,3,0,0,0,114,92,1,0,0,114,
+ 6,0,0,0,218,9,112,97,116,104,95,104,111,111,107,8,
+ 6,0,0,115,4,0,0,0,0,10,14,6,122,20,70,105,
+ 108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111,
+ 111,107,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
+ 0,0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,
+ 100,1,160,0,124,0,106,1,161,1,83,0,41,2,78,122,
+ 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125,
+ 41,41,2,114,62,0,0,0,114,44,0,0,0,114,246,0,
0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,
- 0,114,137,0,0,0,116,5,0,0,115,8,0,0,0,0,
- 7,10,1,8,1,8,1,122,22,70,105,108,101,70,105,110,
- 100,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99,
- 6,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
- 6,0,0,0,67,0,0,0,115,26,0,0,0,124,1,124,
- 2,124,3,131,2,125,6,116,0,124,2,124,3,124,6,124,
- 4,100,1,141,4,83,0,41,2,78,114,177,0,0,0,41,
- 1,114,190,0,0,0,41,7,114,119,0,0,0,114,188,0,
- 0,0,114,139,0,0,0,114,44,0,0,0,90,4,115,109,
- 115,108,114,202,0,0,0,114,140,0,0,0,114,3,0,0,
- 0,114,3,0,0,0,114,6,0,0,0,114,58,1,0,0,
- 128,5,0,0,115,8,0,0,0,0,1,10,1,8,1,2,
- 255,122,20,70,105,108,101,70,105,110,100,101,114,46,95,103,
- 101,116,95,115,112,101,99,78,99,3,0,0,0,0,0,0,
- 0,0,0,0,0,14,0,0,0,8,0,0,0,67,0,0,
- 0,115,102,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,24,4,0,116,6,107,10,114,66,1,0,1,0,1,0,
- 100,4,125,5,89,0,110,2,88,0,124,5,124,0,106,7,
- 107,3,114,92,124,0,160,8,161,0,1,0,124,5,124,0,
- 95,7,116,9,131,0,114,114,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,107,6,114,218,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,208,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,150,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,107,6,144,1,114,54,116,15,124,12,
- 131,1,144,1,114,54,124,0,160,16,124,10,124,1,124,12,
- 100,8,124,2,161,5,2,0,1,0,83,0,113,224,124,3,
- 144,1,114,98,116,18,160,19,100,9,124,8,161,2,1,0,
- 116,18,160,20,124,1,100,8,161,2,125,13,124,8,103,1,
- 124,13,95,21,124,13,83,0,100,8,83,0,41,10,122,111,
- 84,114,121,32,116,111,32,102,105,110,100,32,97,32,115,112,
- 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105,
- 102,105,101,100,32,109,111,100,117,108,101,46,10,10,32,32,
- 32,32,32,32,32,32,82,101,116,117,114,110,115,32,116,104,
- 101,32,109,97,116,99,104,105,110,103,32,115,112,101,99,44,
- 32,111,114,32,78,111,110,101,32,105,102,32,110,111,116,32,
- 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,70,
- 114,71,0,0,0,114,28,0,0,0,114,105,0,0,0,114,
- 209,0,0,0,122,9,116,114,121,105,110,103,32,123,125,41,
- 1,90,9,118,101,114,98,111,115,105,116,121,78,122,25,112,
- 111,115,115,105,98,108,101,32,110,97,109,101,115,112,97,99,
- 101,32,102,111,114,32,123,125,41,22,114,41,0,0,0,114,
- 49,0,0,0,114,44,0,0,0,114,2,0,0,0,114,55,
- 0,0,0,114,10,1,0,0,114,50,0,0,0,114,62,1,
- 0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,114,
- 7,0,0,0,114,65,1,0,0,114,106,0,0,0,114,64,
- 1,0,0,114,38,0,0,0,114,61,1,0,0,114,54,0,
- 0,0,114,58,1,0,0,114,56,0,0,0,114,134,0,0,
- 0,114,149,0,0,0,114,183,0,0,0,114,178,0,0,0,
- 41,14,114,119,0,0,0,114,139,0,0,0,114,202,0,0,
- 0,90,12,105,115,95,110,97,109,101,115,112,97,99,101,90,
- 11,116,97,105,108,95,109,111,100,117,108,101,114,169,0,0,
- 0,90,5,99,97,99,104,101,90,12,99,97,99,104,101,95,
- 109,111,100,117,108,101,90,9,98,97,115,101,95,112,97,116,
- 104,114,17,1,0,0,114,188,0,0,0,90,13,105,110,105,
- 116,95,102,105,108,101,110,97,109,101,90,9,102,117,108,108,
- 95,112,97,116,104,114,187,0,0,0,114,3,0,0,0,114,
- 3,0,0,0,114,6,0,0,0,114,203,0,0,0,133,5,
- 0,0,115,74,0,0,0,0,5,4,1,14,1,2,1,24,
- 1,14,1,10,1,10,1,8,1,6,2,6,1,6,1,10,
- 2,6,1,4,2,8,1,12,1,14,1,8,1,10,1,8,
- 1,26,4,8,2,14,1,16,1,16,1,14,1,10,1,10,
- 1,2,0,2,255,10,2,6,1,12,1,12,1,8,1,4,
- 1,122,20,70,105,108,101,70,105,110,100,101,114,46,102,105,
- 110,100,95,115,112,101,99,99,1,0,0,0,0,0,0,0,
- 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,30,4,0,116,4,116,5,116,6,102,3,107,10,114,
- 58,1,0,1,0,1,0,103,0,125,2,89,0,110,2,88,
- 0,116,7,106,8,160,9,100,1,161,1,115,84,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,136,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,94,124,3,124,
- 0,95,11,116,7,106,8,160,9,116,16,161,1,114,186,100,
- 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100,
- 6,83,0,41,7,122,68,70,105,108,108,32,116,104,101,32,
- 99,97,99,104,101,32,111,102,32,112,111,116,101,110,116,105,
- 97,108,32,109,111,100,117,108,101,115,32,97,110,100,32,112,
- 97,99,107,97,103,101,115,32,102,111,114,32,116,104,105,115,
- 32,100,105,114,101,99,116,111,114,121,46,114,0,0,0,0,
- 114,71,0,0,0,114,61,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,3,0,0,
- 0,41,1,114,106,0,0,0,41,2,114,32,0,0,0,90,
- 2,102,110,114,3,0,0,0,114,3,0,0,0,114,6,0,
- 0,0,218,9,60,115,101,116,99,111,109,112,62,210,5,0,
- 0,115,4,0,0,0,6,0,2,0,122,41,70,105,108,101,
- 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,
- 104,101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,
- 99,111,109,112,62,78,41,18,114,44,0,0,0,114,2,0,
- 0,0,114,7,1,0,0,114,55,0,0,0,114,3,1,0,
- 0,218,15,80,101,114,109,105,115,115,105,111,110,69,114,114,
- 111,114,218,18,78,111,116,65,68,105,114,101,99,116,111,114,
- 121,69,114,114,111,114,114,8,0,0,0,114,9,0,0,0,
- 114,10,0,0,0,114,63,1,0,0,114,64,1,0,0,114,
- 101,0,0,0,114,62,0,0,0,114,106,0,0,0,218,3,
- 97,100,100,114,11,0,0,0,114,65,1,0,0,41,9,114,
- 119,0,0,0,114,44,0,0,0,114,8,1,0,0,90,21,
- 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110,
- 116,101,110,116,115,114,41,1,0,0,114,117,0,0,0,114,
- 29,1,0,0,114,17,1,0,0,90,8,110,101,119,95,110,
- 97,109,101,114,3,0,0,0,114,3,0,0,0,114,6,0,
- 0,0,114,67,1,0,0,181,5,0,0,115,34,0,0,0,
- 0,2,6,1,2,1,22,1,20,3,10,3,12,1,12,7,
- 6,1,8,1,16,1,4,1,18,2,4,1,12,1,6,1,
- 12,1,122,22,70,105,108,101,70,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,3,97,20,1,0,
- 0,65,32,99,108,97,115,115,32,109,101,116,104,111,100,32,
- 119,104,105,99,104,32,114,101,116,117,114,110,115,32,97,32,
- 99,108,111,115,117,114,101,32,116,111,32,117,115,101,32,111,
- 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,10,
- 32,32,32,32,32,32,32,32,119,104,105,99,104,32,119,105,
- 108,108,32,114,101,116,117,114,110,32,97,110,32,105,110,115,
- 116,97,110,99,101,32,117,115,105,110,103,32,116,104,101,32,
- 115,112,101,99,105,102,105,101,100,32,108,111,97,100,101,114,
- 115,32,97,110,100,32,116,104,101,32,112,97,116,104,10,32,
- 32,32,32,32,32,32,32,99,97,108,108,101,100,32,111,110,
- 32,116,104,101,32,99,108,111,115,117,114,101,46,10,10,32,
- 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97,
- 116,104,32,99,97,108,108,101,100,32,111,110,32,116,104,101,
- 32,99,108,111,115,117,114,101,32,105,115,32,110,111,116,32,
- 97,32,100,105,114,101,99,116,111,114,121,44,32,73,109,112,
- 111,114,116,69,114,114,111,114,32,105,115,10,32,32,32,32,
- 32,32,32,32,114,97,105,115,101,100,46,10,10,32,32,32,
- 32,32,32,32,32,99,1,0,0,0,0,0,0,0,0,0,
- 0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,34,
- 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,102,1,136,1,158,
- 2,142,0,83,0,41,3,122,45,80,97,116,104,32,104,111,
- 111,107,32,102,111,114,32,105,109,112,111,114,116,108,105,98,
- 46,109,97,99,104,105,110,101,114,121,46,70,105,108,101,70,
- 105,110,100,101,114,46,122,30,111,110,108,121,32,100,105,114,
- 101,99,116,111,114,105,101,115,32,97,114,101,32,115,117,112,
- 112,111,114,116,101,100,114,48,0,0,0,41,2,114,56,0,
- 0,0,114,118,0,0,0,114,48,0,0,0,169,2,114,193,
- 0,0,0,114,66,1,0,0,114,3,0,0,0,114,6,0,
- 0,0,218,24,112,97,116,104,95,104,111,111,107,95,102,111,
- 114,95,70,105,108,101,70,105,110,100,101,114,222,5,0,0,
- 115,6,0,0,0,0,2,8,1,12,1,122,54,70,105,108,
- 101,70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,
- 107,46,60,108,111,99,97,108,115,62,46,112,97,116,104,95,
- 104,111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,
- 100,101,114,114,3,0,0,0,41,3,114,193,0,0,0,114,
- 66,1,0,0,114,73,1,0,0,114,3,0,0,0,114,72,
- 1,0,0,114,6,0,0,0,218,9,112,97,116,104,95,104,
- 111,111,107,212,5,0,0,115,4,0,0,0,0,10,14,6,
- 122,20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,
- 104,95,104,111,111,107,99,1,0,0,0,0,0,0,0,0,
- 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,
- 12,0,0,0,100,1,160,0,124,0,106,1,161,1,83,0,
- 41,2,78,122,16,70,105,108,101,70,105,110,100,101,114,40,
- 123,33,114,125,41,41,2,114,62,0,0,0,114,44,0,0,
- 0,114,246,0,0,0,114,3,0,0,0,114,3,0,0,0,
- 114,6,0,0,0,114,39,1,0,0,230,5,0,0,115,2,
- 0,0,0,0,1,122,19,70,105,108,101,70,105,110,100,101,
- 114,46,95,95,114,101,112,114,95,95,41,1,78,41,15,114,
- 125,0,0,0,114,124,0,0,0,114,126,0,0,0,114,127,
- 0,0,0,114,209,0,0,0,114,46,1,0,0,114,143,0,
- 0,0,114,206,0,0,0,114,137,0,0,0,114,58,1,0,
- 0,114,203,0,0,0,114,67,1,0,0,114,207,0,0,0,
- 114,74,1,0,0,114,39,1,0,0,114,3,0,0,0,114,
- 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,59,
- 1,0,0,87,5,0,0,115,22,0,0,0,8,2,4,7,
- 8,14,8,4,4,2,8,12,8,5,10,48,8,31,2,1,
- 10,17,114,59,1,0,0,99,4,0,0,0,0,0,0,0,
- 0,0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,
- 115,146,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,36,124,5,124,0,100,
- 2,60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,
- 4,60,0,124,3,124,0,100,5,60,0,87,0,110,20,4,
- 0,116,5,107,10,114,140,1,0,1,0,1,0,89,0,110,
- 2,88,0,100,0,83,0,41,6,78,218,10,95,95,108,111,
- 97,100,101,114,95,95,218,8,95,95,115,112,101,99,95,95,
- 114,60,1,0,0,90,8,95,95,102,105,108,101,95,95,90,
- 10,95,95,99,97,99,104,101,100,95,95,41,6,218,3,103,
- 101,116,114,140,0,0,0,114,15,1,0,0,114,9,1,0,
- 0,114,190,0,0,0,218,9,69,120,99,101,112,116,105,111,
- 110,41,6,90,2,110,115,114,117,0,0,0,90,8,112,97,
- 116,104,110,97,109,101,90,9,99,112,97,116,104,110,97,109,
- 101,114,140,0,0,0,114,187,0,0,0,114,3,0,0,0,
- 114,3,0,0,0,114,6,0,0,0,218,14,95,102,105,120,
- 95,117,112,95,109,111,100,117,108,101,236,5,0,0,115,34,
- 0,0,0,0,2,10,1,10,1,4,1,4,1,8,1,8,
- 1,12,2,10,1,4,1,14,1,2,1,8,1,8,1,8,
- 1,12,1,14,2,114,79,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,1,
- 122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,116,
- 32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,109,
- 111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,10,
- 32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,115,
- 32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,114,
- 44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,32,
- 32,41,7,114,252,0,0,0,114,163,0,0,0,218,18,101,
- 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101,
- 115,114,9,1,0,0,114,102,0,0,0,114,15,1,0,0,
- 114,89,0,0,0,41,3,90,10,101,120,116,101,110,115,105,
- 111,110,115,90,6,115,111,117,114,99,101,90,8,98,121,116,
- 101,99,111,100,101,114,3,0,0,0,114,3,0,0,0,114,
- 6,0,0,0,114,184,0,0,0,3,6,0,0,115,8,0,
- 0,0,0,5,12,1,8,1,8,1,114,184,0,0,0,99,
- 1,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,
- 9,0,0,0,67,0,0,0,115,178,1,0,0,124,0,97,
- 0,116,0,106,1,97,1,116,0,106,2,97,2,116,1,106,
- 3,116,4,25,0,125,1,100,1,68,0,93,48,125,2,124,
- 2,116,1,106,3,107,7,114,56,116,0,160,5,124,2,161,
- 1,125,3,110,10,116,1,106,3,124,2,25,0,125,3,116,
- 6,124,1,124,2,124,3,131,3,1,0,113,30,100,2,100,
- 3,103,1,102,2,100,4,100,5,100,3,103,2,102,2,102,
- 2,125,4,124,4,68,0,93,110,92,2,125,5,125,6,116,
- 7,100,6,100,7,132,0,124,6,68,0,131,1,131,1,115,
- 136,116,8,130,1,124,6,100,8,25,0,125,7,124,5,116,
- 1,106,3,107,6,114,170,116,1,106,3,124,5,25,0,125,
- 8,1,0,113,226,113,106,122,20,116,0,160,5,124,5,161,
- 1,125,8,87,0,1,0,113,226,87,0,113,106,4,0,116,
- 9,107,10,114,214,1,0,1,0,1,0,89,0,113,106,89,
- 0,113,106,88,0,113,106,116,9,100,9,131,1,130,1,116,
- 6,124,1,100,10,124,8,131,3,1,0,116,6,124,1,100,
- 11,124,7,131,3,1,0,116,6,124,1,100,12,100,13,160,
- 10,124,6,161,1,131,3,1,0,116,6,124,1,100,14,100,
- 15,100,16,132,0,124,6,68,0,131,1,131,3,1,0,116,
- 0,160,5,100,17,161,1,125,9,116,6,124,1,100,17,124,
- 9,131,3,1,0,116,0,160,5,100,18,161,1,125,10,116,
- 6,124,1,100,18,124,10,131,3,1,0,124,5,100,4,107,
- 2,144,1,114,110,116,0,160,5,100,19,161,1,125,11,116,
- 6,124,1,100,20,124,11,131,3,1,0,116,6,124,1,100,
- 21,116,11,131,0,131,3,1,0,116,12,160,13,116,2,160,
- 14,161,0,161,1,1,0,124,5,100,4,107,2,144,1,114,
- 174,116,15,160,16,100,22,161,1,1,0,100,23,116,12,107,
- 6,144,1,114,174,100,24,116,17,95,18,100,25,83,0,41,
- 26,122,205,83,101,116,117,112,32,116,104,101,32,112,97,116,
- 104,45,98,97,115,101,100,32,105,109,112,111,114,116,101,114,
- 115,32,102,111,114,32,105,109,112,111,114,116,108,105,98,32,
- 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101,
- 100,101,100,10,32,32,32,32,98,117,105,108,116,45,105,110,
- 32,109,111,100,117,108,101,115,32,97,110,100,32,105,110,106,
- 101,99,116,105,110,103,32,116,104,101,109,32,105,110,116,111,
- 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101,
- 115,112,97,99,101,46,10,10,32,32,32,32,79,116,104,101,
- 114,32,99,111,109,112,111,110,101,110,116,115,32,97,114,101,
- 32,101,120,116,114,97,99,116,101,100,32,102,114,111,109,32,
- 116,104,101,32,99,111,114,101,32,98,111,111,116,115,116,114,
- 97,112,32,109,111,100,117,108,101,46,10,10,32,32,32,32,
- 41,4,114,64,0,0,0,114,75,0,0,0,218,8,98,117,
- 105,108,116,105,110,115,114,160,0,0,0,90,5,112,111,115,
- 105,120,250,1,47,90,2,110,116,250,1,92,99,1,0,0,
- 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
- 0,115,0,0,0,115,26,0,0,0,124,0,93,18,125,1,
- 116,0,124,1,131,1,100,0,107,2,86,0,1,0,113,2,
- 100,1,83,0,41,2,114,39,0,0,0,78,41,1,114,22,
- 0,0,0,41,2,114,32,0,0,0,114,95,0,0,0,114,
- 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,19,
- 1,0,0,39,6,0,0,115,4,0,0,0,4,0,2,0,
- 122,25,95,115,101,116,117,112,46,60,108,111,99,97,108,115,
- 62,46,60,103,101,110,101,120,112,114,62,114,73,0,0,0,
- 122,30,105,109,112,111,114,116,108,105,98,32,114,101,113,117,
- 105,114,101,115,32,112,111,115,105,120,32,111,114,32,110,116,
- 114,2,0,0,0,114,35,0,0,0,114,31,0,0,0,114,
- 40,0,0,0,114,58,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,22,0,0,0,104,0,124,0,93,14,125,1,100,
- 0,124,1,155,0,157,2,146,2,113,4,83,0,41,1,114,
- 74,0,0,0,114,3,0,0,0,41,2,114,32,0,0,0,
- 218,1,115,114,3,0,0,0,114,3,0,0,0,114,6,0,
- 0,0,114,68,1,0,0,55,6,0,0,115,4,0,0,0,
- 6,0,2,0,122,25,95,115,101,116,117,112,46,60,108,111,
- 99,97,108,115,62,46,60,115,101,116,99,111,109,112,62,90,
- 7,95,116,104,114,101,97,100,90,8,95,119,101,97,107,114,
- 101,102,90,6,119,105,110,114,101,103,114,192,0,0,0,114,
- 7,0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,
- 121,100,84,78,41,19,114,134,0,0,0,114,8,0,0,0,
- 114,163,0,0,0,114,31,1,0,0,114,125,0,0,0,90,
- 18,95,98,117,105,108,116,105,110,95,102,114,111,109,95,110,
- 97,109,101,114,129,0,0,0,218,3,97,108,108,114,23,0,
- 0,0,114,118,0,0,0,114,36,0,0,0,114,13,0,0,
- 0,114,21,1,0,0,114,167,0,0,0,114,80,1,0,0,
- 114,102,0,0,0,114,186,0,0,0,114,191,0,0,0,114,
- 195,0,0,0,41,12,218,17,95,98,111,111,116,115,116,114,
- 97,112,95,109,111,100,117,108,101,90,11,115,101,108,102,95,
- 109,111,100,117,108,101,90,12,98,117,105,108,116,105,110,95,
- 110,97,109,101,90,14,98,117,105,108,116,105,110,95,109,111,
- 100,117,108,101,90,10,111,115,95,100,101,116,97,105,108,115,
- 90,10,98,117,105,108,116,105,110,95,111,115,114,31,0,0,
- 0,114,35,0,0,0,90,9,111,115,95,109,111,100,117,108,
- 101,90,13,116,104,114,101,97,100,95,109,111,100,117,108,101,
- 90,14,119,101,97,107,114,101,102,95,109,111,100,117,108,101,
- 90,13,119,105,110,114,101,103,95,109,111,100,117,108,101,114,
- 3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,6,
- 95,115,101,116,117,112,14,6,0,0,115,78,0,0,0,0,
- 8,4,1,6,1,6,3,10,1,8,1,10,1,12,2,10,
- 1,14,3,22,1,12,2,22,1,8,1,10,1,10,1,6,
- 2,2,1,10,1,10,1,14,1,12,2,8,1,12,1,12,
- 1,18,1,22,3,10,1,12,3,10,1,12,3,10,1,10,
- 1,12,3,14,1,14,1,10,1,10,1,10,1,114,87,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,87,1,0,0,114,184,0,0,0,114,8,0,0,
- 0,114,51,1,0,0,114,167,0,0,0,114,59,1,0,0,
- 114,74,1,0,0,218,9,109,101,116,97,95,112,97,116,104,
- 114,186,0,0,0,114,45,1,0,0,41,2,114,86,1,0,
- 0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,
- 100,101,114,115,114,3,0,0,0,114,3,0,0,0,114,6,
- 0,0,0,218,8,95,105,110,115,116,97,108,108,79,6,0,
- 0,115,8,0,0,0,0,2,8,1,6,1,20,1,114,89,
- 1,0,0,41,63,114,127,0,0,0,114,12,0,0,0,90,
- 37,95,67,65,83,69,95,73,78,83,69,78,83,73,84,73,
- 86,69,95,80,76,65,84,70,79,82,77,83,95,66,89,84,
- 69,83,95,75,69,89,114,11,0,0,0,114,13,0,0,0,
- 114,20,0,0,0,114,27,0,0,0,114,29,0,0,0,114,
- 38,0,0,0,114,47,0,0,0,114,49,0,0,0,114,53,
- 0,0,0,114,54,0,0,0,114,56,0,0,0,114,59,0,
- 0,0,114,69,0,0,0,218,4,116,121,112,101,218,8,95,
- 95,99,111,100,101,95,95,114,162,0,0,0,114,18,0,0,
- 0,114,148,0,0,0,114,17,0,0,0,114,24,0,0,0,
- 114,236,0,0,0,114,92,0,0,0,114,88,0,0,0,114,
- 102,0,0,0,114,89,0,0,0,90,23,68,69,66,85,71,
- 95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,
- 69,83,90,27,79,80,84,73,77,73,90,69,68,95,66,89,
- 84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,114,
- 98,0,0,0,114,103,0,0,0,114,109,0,0,0,114,113,
- 0,0,0,114,115,0,0,0,114,136,0,0,0,114,143,0,
- 0,0,114,152,0,0,0,114,156,0,0,0,114,158,0,0,
- 0,114,165,0,0,0,114,170,0,0,0,114,171,0,0,0,
- 114,176,0,0,0,218,6,111,98,106,101,99,116,114,185,0,
- 0,0,114,190,0,0,0,114,191,0,0,0,114,208,0,0,
- 0,114,221,0,0,0,114,239,0,0,0,114,9,1,0,0,
- 114,15,1,0,0,114,21,1,0,0,114,252,0,0,0,114,
- 22,1,0,0,114,43,1,0,0,114,45,1,0,0,114,59,
- 1,0,0,114,79,1,0,0,114,184,0,0,0,114,87,1,
- 0,0,114,89,1,0,0,114,3,0,0,0,114,3,0,0,
- 0,114,3,0,0,0,114,6,0,0,0,218,8,60,109,111,
- 100,117,108,101,62,1,0,0,0,115,126,0,0,0,4,22,
- 4,1,4,1,2,1,2,255,4,4,8,17,8,5,8,5,
- 8,6,8,6,8,12,8,10,8,9,8,5,8,7,8,9,
- 12,22,10,127,0,8,16,1,12,2,4,1,4,2,6,2,
- 6,2,8,2,18,71,8,40,8,19,8,12,8,12,8,28,
- 8,17,8,33,8,28,8,24,16,13,14,10,12,11,8,14,
- 6,3,6,1,2,255,12,68,14,64,14,29,16,127,0,17,
- 14,72,18,45,18,26,4,3,18,53,14,63,14,42,14,127,
- 0,7,14,127,0,22,12,23,8,11,8,65,
+ 0,114,39,1,0,0,26,6,0,0,115,2,0,0,0,0,
+ 1,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,
+ 114,101,112,114,95,95,41,1,78,41,15,114,125,0,0,0,
+ 114,124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,
+ 209,0,0,0,114,46,1,0,0,114,143,0,0,0,114,206,
+ 0,0,0,114,137,0,0,0,114,58,1,0,0,114,203,0,
+ 0,0,114,87,1,0,0,114,207,0,0,0,114,94,1,0,
+ 0,114,39,1,0,0,114,3,0,0,0,114,3,0,0,0,
+ 114,3,0,0,0,114,6,0,0,0,114,79,1,0,0,139,
+ 5,0,0,115,22,0,0,0,8,2,4,7,8,14,8,4,
+ 4,2,8,12,8,5,10,48,8,31,2,1,10,17,114,79,
+ 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,146,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,36,124,5,124,0,100,2,60,0,124,
+ 4,124,0,100,1,60,0,124,2,124,0,100,4,60,0,124,
+ 3,124,0,100,5,60,0,87,0,110,20,4,0,116,5,107,
+ 10,114,140,1,0,1,0,1,0,89,0,110,2,88,0,100,
+ 0,83,0,41,6,78,218,10,95,95,108,111,97,100,101,114,
+ 95,95,218,8,95,95,115,112,101,99,95,95,114,80,1,0,
+ 0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,99,
+ 97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,140,
+ 0,0,0,114,15,1,0,0,114,9,1,0,0,114,190,0,
+ 0,0,114,72,1,0,0,41,6,90,2,110,115,114,117,0,
+ 0,0,90,8,112,97,116,104,110,97,109,101,90,9,99,112,
+ 97,116,104,110,97,109,101,114,140,0,0,0,114,187,0,0,
+ 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,
+ 218,14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,
+ 32,6,0,0,115,34,0,0,0,0,2,10,1,10,1,4,
+ 1,4,1,8,1,8,1,12,2,10,1,4,1,14,1,2,
+ 1,8,1,8,1,8,1,12,1,14,2,114,98,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,1,122,95,82,101,116,117,114,110,115,32,
+ 97,32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,
+ 97,115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,
+ 101,114,115,46,10,10,32,32,32,32,69,97,99,104,32,105,
+ 116,101,109,32,105,115,32,97,32,116,117,112,108,101,32,40,
+ 108,111,97,100,101,114,44,32,115,117,102,102,105,120,101,115,
+ 41,46,10,32,32,32,32,41,7,114,252,0,0,0,114,163,
+ 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115,
+ 117,102,102,105,120,101,115,114,9,1,0,0,114,102,0,0,
+ 0,114,15,1,0,0,114,89,0,0,0,41,3,90,10,101,
+ 120,116,101,110,115,105,111,110,115,90,6,115,111,117,114,99,
+ 101,90,8,98,121,116,101,99,111,100,101,114,3,0,0,0,
+ 114,3,0,0,0,114,6,0,0,0,114,184,0,0,0,55,
+ 6,0,0,115,8,0,0,0,0,5,12,1,8,1,8,1,
+ 114,184,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,12,0,0,0,9,0,0,0,67,0,0,0,115,178,
+ 1,0,0,124,0,97,0,116,0,106,1,97,1,116,0,106,
+ 2,97,2,116,1,106,3,116,4,25,0,125,1,100,1,68,
+ 0,93,48,125,2,124,2,116,1,106,3,107,7,114,56,116,
+ 0,160,5,124,2,161,1,125,3,110,10,116,1,106,3,124,
+ 2,25,0,125,3,116,6,124,1,124,2,124,3,131,3,1,
+ 0,113,30,100,2,100,3,103,1,102,2,100,4,100,5,100,
+ 3,103,2,102,2,102,2,125,4,124,4,68,0,93,110,92,
+ 2,125,5,125,6,116,7,100,6,100,7,132,0,124,6,68,
+ 0,131,1,131,1,115,136,116,8,130,1,124,6,100,8,25,
+ 0,125,7,124,5,116,1,106,3,107,6,114,170,116,1,106,
+ 3,124,5,25,0,125,8,1,0,113,226,113,106,122,20,116,
+ 0,160,5,124,5,161,1,125,8,87,0,1,0,113,226,87,
+ 0,113,106,4,0,116,9,107,10,114,214,1,0,1,0,1,
+ 0,89,0,113,106,89,0,113,106,88,0,113,106,116,9,100,
+ 9,131,1,130,1,116,6,124,1,100,10,124,8,131,3,1,
+ 0,116,6,124,1,100,11,124,7,131,3,1,0,116,6,124,
+ 1,100,12,100,13,160,10,124,6,161,1,131,3,1,0,116,
+ 6,124,1,100,14,100,15,100,16,132,0,124,6,68,0,131,
+ 1,131,3,1,0,116,0,160,5,100,17,161,1,125,9,116,
+ 6,124,1,100,17,124,9,131,3,1,0,116,0,160,5,100,
+ 18,161,1,125,10,116,6,124,1,100,18,124,10,131,3,1,
+ 0,124,5,100,4,107,2,144,1,114,110,116,0,160,5,100,
+ 19,161,1,125,11,116,6,124,1,100,20,124,11,131,3,1,
+ 0,116,6,124,1,100,21,116,11,131,0,131,3,1,0,116,
+ 12,160,13,116,2,160,14,161,0,161,1,1,0,124,5,100,
+ 4,107,2,144,1,114,174,116,15,160,16,100,22,161,1,1,
+ 0,100,23,116,12,107,6,144,1,114,174,100,24,116,17,95,
+ 18,100,25,83,0,41,26,122,205,83,101,116,117,112,32,116,
+ 104,101,32,112,97,116,104,45,98,97,115,101,100,32,105,109,
+ 112,111,114,116,101,114,115,32,102,111,114,32,105,109,112,111,
+ 114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,
+ 110,103,32,110,101,101,100,101,100,10,32,32,32,32,98,117,
+ 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,
+ 110,100,32,105,110,106,101,99,116,105,110,103,32,116,104,101,
+ 109,32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,
+ 108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,
+ 32,32,79,116,104,101,114,32,99,111,109,112,111,110,101,110,
+ 116,115,32,97,114,101,32,101,120,116,114,97,99,116,101,100,
+ 32,102,114,111,109,32,116,104,101,32,99,111,114,101,32,98,
+ 111,111,116,115,116,114,97,112,32,109,111,100,117,108,101,46,
+ 10,10,32,32,32,32,41,4,114,64,0,0,0,114,75,0,
+ 0,0,218,8,98,117,105,108,116,105,110,115,114,160,0,0,
+ 0,90,5,112,111,115,105,120,250,1,47,90,2,110,116,250,
+ 1,92,99,1,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,3,0,0,0,115,0,0,0,115,26,0,0,0,
+ 124,0,93,18,125,1,116,0,124,1,131,1,100,0,107,2,
+ 86,0,1,0,113,2,100,1,83,0,41,2,114,39,0,0,
+ 0,78,41,1,114,22,0,0,0,41,2,114,32,0,0,0,
+ 114,95,0,0,0,114,3,0,0,0,114,3,0,0,0,114,
+ 6,0,0,0,114,19,1,0,0,91,6,0,0,115,4,0,
+ 0,0,4,0,2,0,122,25,95,115,101,116,117,112,46,60,
+ 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,
+ 62,114,73,0,0,0,122,30,105,109,112,111,114,116,108,105,
+ 98,32,114,101,113,117,105,114,101,115,32,112,111,115,105,120,
+ 32,111,114,32,110,116,114,2,0,0,0,114,35,0,0,0,
+ 114,31,0,0,0,114,40,0,0,0,114,58,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,22,0,0,0,104,0,124,
+ 0,93,14,125,1,100,0,124,1,155,0,157,2,146,2,113,
+ 4,83,0,41,1,114,74,0,0,0,114,3,0,0,0,41,
+ 2,114,32,0,0,0,218,1,115,114,3,0,0,0,114,3,
+ 0,0,0,114,6,0,0,0,114,88,1,0,0,107,6,0,
+ 0,115,4,0,0,0,6,0,2,0,122,25,95,115,101,116,
+ 117,112,46,60,108,111,99,97,108,115,62,46,60,115,101,116,
+ 99,111,109,112,62,90,7,95,116,104,114,101,97,100,90,8,
+ 95,119,101,97,107,114,101,102,90,6,119,105,110,114,101,103,
+ 114,192,0,0,0,114,7,0,0,0,122,4,46,112,121,119,
+ 122,6,95,100,46,112,121,100,84,78,41,19,114,134,0,0,
+ 0,114,8,0,0,0,114,163,0,0,0,114,31,1,0,0,
+ 114,125,0,0,0,90,18,95,98,117,105,108,116,105,110,95,
+ 102,114,111,109,95,110,97,109,101,114,129,0,0,0,218,3,
+ 97,108,108,114,23,0,0,0,114,118,0,0,0,114,36,0,
+ 0,0,114,13,0,0,0,114,21,1,0,0,114,167,0,0,
+ 0,114,99,1,0,0,114,102,0,0,0,114,186,0,0,0,
+ 114,191,0,0,0,114,195,0,0,0,41,12,218,17,95,98,
+ 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,90,
+ 11,115,101,108,102,95,109,111,100,117,108,101,90,12,98,117,
+ 105,108,116,105,110,95,110,97,109,101,90,14,98,117,105,108,
+ 116,105,110,95,109,111,100,117,108,101,90,10,111,115,95,100,
+ 101,116,97,105,108,115,90,10,98,117,105,108,116,105,110,95,
+ 111,115,114,31,0,0,0,114,35,0,0,0,90,9,111,115,
+ 95,109,111,100,117,108,101,90,13,116,104,114,101,97,100,95,
+ 109,111,100,117,108,101,90,14,119,101,97,107,114,101,102,95,
+ 109,111,100,117,108,101,90,13,119,105,110,114,101,103,95,109,
+ 111,100,117,108,101,114,3,0,0,0,114,3,0,0,0,114,
+ 6,0,0,0,218,6,95,115,101,116,117,112,66,6,0,0,
+ 115,78,0,0,0,0,8,4,1,6,1,6,3,10,1,8,
+ 1,10,1,12,2,10,1,14,3,22,1,12,2,22,1,8,
+ 1,10,1,10,1,6,2,2,1,10,1,10,1,14,1,12,
+ 2,8,1,12,1,12,1,18,1,22,3,10,1,12,3,10,
+ 1,12,3,10,1,10,1,12,3,14,1,14,1,10,1,10,
+ 1,10,1,114,106,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,106,1,0,0,114,184,0,
+ 0,0,114,8,0,0,0,114,51,1,0,0,114,167,0,0,
+ 0,114,79,1,0,0,114,94,1,0,0,218,9,109,101,116,
+ 97,95,112,97,116,104,114,186,0,0,0,114,45,1,0,0,
+ 41,2,114,105,1,0,0,90,17,115,117,112,112,111,114,116,
+ 101,100,95,108,111,97,100,101,114,115,114,3,0,0,0,114,
+ 3,0,0,0,114,6,0,0,0,218,8,95,105,110,115,116,
+ 97,108,108,131,6,0,0,115,8,0,0,0,0,2,8,1,
+ 6,1,20,1,114,108,1,0,0,41,63,114,127,0,0,0,
+ 114,12,0,0,0,90,37,95,67,65,83,69,95,73,78,83,
+ 69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,82,
+ 77,83,95,66,89,84,69,83,95,75,69,89,114,11,0,0,
+ 0,114,13,0,0,0,114,20,0,0,0,114,27,0,0,0,
+ 114,29,0,0,0,114,38,0,0,0,114,47,0,0,0,114,
+ 49,0,0,0,114,53,0,0,0,114,54,0,0,0,114,56,
+ 0,0,0,114,59,0,0,0,114,69,0,0,0,218,4,116,
+ 121,112,101,218,8,95,95,99,111,100,101,95,95,114,162,0,
+ 0,0,114,18,0,0,0,114,148,0,0,0,114,17,0,0,
+ 0,114,24,0,0,0,114,236,0,0,0,114,92,0,0,0,
+ 114,88,0,0,0,114,102,0,0,0,114,89,0,0,0,90,
+ 23,68,69,66,85,71,95,66,89,84,69,67,79,68,69,95,
+ 83,85,70,70,73,88,69,83,90,27,79,80,84,73,77,73,
+ 90,69,68,95,66,89,84,69,67,79,68,69,95,83,85,70,
+ 70,73,88,69,83,114,98,0,0,0,114,103,0,0,0,114,
+ 109,0,0,0,114,113,0,0,0,114,115,0,0,0,114,136,
+ 0,0,0,114,143,0,0,0,114,152,0,0,0,114,156,0,
+ 0,0,114,158,0,0,0,114,165,0,0,0,114,170,0,0,
+ 0,114,171,0,0,0,114,176,0,0,0,218,6,111,98,106,
+ 101,99,116,114,185,0,0,0,114,190,0,0,0,114,191,0,
+ 0,0,114,208,0,0,0,114,221,0,0,0,114,239,0,0,
+ 0,114,9,1,0,0,114,15,1,0,0,114,21,1,0,0,
+ 114,252,0,0,0,114,22,1,0,0,114,43,1,0,0,114,
+ 45,1,0,0,114,79,1,0,0,114,98,1,0,0,114,184,
+ 0,0,0,114,106,1,0,0,114,108,1,0,0,114,3,0,
+ 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,
+ 0,218,8,60,109,111,100,117,108,101,62,1,0,0,0,115,
+ 126,0,0,0,4,22,4,1,4,1,2,1,2,255,4,4,
+ 8,17,8,5,8,5,8,6,8,6,8,12,8,10,8,9,
+ 8,5,8,7,8,9,12,22,10,127,0,8,16,1,12,2,
+ 4,1,4,2,6,2,6,2,8,2,18,71,8,40,8,19,
+ 8,12,8,12,8,28,8,17,8,33,8,28,8,24,16,13,
+ 14,10,12,11,8,14,6,3,6,1,2,255,12,68,14,64,
+ 14,29,16,127,0,17,14,72,18,45,18,26,4,3,18,53,
+ 14,63,14,42,14,127,0,59,14,127,0,22,12,23,8,11,
+ 8,65,
};