From f03d7611250e5fd97c8ca4781a8f6717a7983464 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Tue, 5 Jan 2021 12:15:53 +0900 Subject: [PATCH] Imported Upstream version 2.0 --- CHANGES | 22 + PKG-INFO | 2 +- Pygments.egg-info/PKG-INFO | 2 +- Pygments.egg-info/SOURCES.txt | 134 +- doc/_build/doctrees/docs/api.doctree | Bin 0 -> 95594 bytes doc/_build/doctrees/docs/authors.doctree | Bin 0 -> 48369 bytes doc/_build/doctrees/docs/changelog.doctree | Bin 0 -> 197265 bytes doc/_build/doctrees/docs/cmdline.doctree | Bin 0 -> 29843 bytes .../doctrees/docs/filterdevelopment.doctree | Bin 0 -> 10798 bytes doc/_build/doctrees/docs/filters.doctree | Bin 0 -> 41394 bytes .../docs/formatterdevelopment.doctree | Bin 0 -> 26812 bytes doc/_build/doctrees/docs/formatters.doctree | Bin 0 -> 175624 bytes doc/_build/doctrees/docs/index.doctree | Bin 0 -> 6918 bytes doc/_build/doctrees/docs/integrate.doctree | Bin 0 -> 9218 bytes doc/_build/doctrees/docs/java.doctree | Bin 0 -> 8914 bytes .../doctrees/docs/lexerdevelopment.doctree | Bin 0 -> 119266 bytes doc/_build/doctrees/docs/lexers.doctree | Bin 0 -> 1437540 bytes doc/_build/doctrees/docs/moinmoin.doctree | Bin 0 -> 9286 bytes doc/_build/doctrees/docs/plugins.doctree | Bin 0 -> 12681 bytes doc/_build/doctrees/docs/quickstart.doctree | Bin 0 -> 35317 bytes doc/_build/doctrees/docs/rstdirective.doctree | Bin 0 -> 5363 bytes doc/_build/doctrees/docs/styles.doctree | Bin 0 -> 25577 bytes doc/_build/doctrees/docs/tokens.doctree | Bin 0 -> 86087 bytes doc/_build/doctrees/docs/unicode.doctree | Bin 0 -> 13790 bytes doc/_build/doctrees/download.doctree | Bin 0 -> 10002 bytes doc/_build/doctrees/environment.pickle | Bin 0 -> 139204 bytes doc/_build/doctrees/faq.doctree | Bin 0 -> 51050 bytes doc/_build/doctrees/index.doctree | Bin 0 -> 14034 bytes doc/_build/doctrees/languages.doctree | Bin 0 -> 39059 bytes doc/_build/html/.buildinfo | 4 + doc/_build/html/_sources/docs/api.txt | 316 + doc/_build/html/_sources/docs/authors.txt | 4 + doc/_build/html/_sources/docs/changelog.txt | 1 + doc/_build/html/_sources/docs/cmdline.txt | 149 + .../html/_sources/docs/filterdevelopment.txt | 70 + doc/_build/html/_sources/docs/filters.txt | 41 + .../_sources/docs/formatterdevelopment.txt | 169 + doc/_build/html/_sources/docs/formatters.txt | 48 + doc/_build/html/_sources/docs/index.txt | 66 + doc/_build/html/_sources/docs/integrate.txt | 44 + doc/_build/html/_sources/docs/java.txt | 70 + .../html/_sources/docs/lexerdevelopment.txt | 682 + doc/_build/html/_sources/docs/lexers.txt | 69 + doc/_build/html/_sources/docs/moinmoin.txt | 39 + doc/_build/html/_sources/docs/plugins.txt | 93 + doc/_build/html/_sources/docs/quickstart.txt | 205 + .../html/_sources/docs/rstdirective.txt | 22 + doc/_build/html/_sources/docs/styles.txt | 145 + doc/_build/html/_sources/docs/tokens.txt | 352 + doc/_build/html/_sources/docs/unicode.txt | 58 + doc/_build/html/_sources/download.txt | 41 + doc/_build/html/_sources/faq.txt | 143 + doc/_build/html/_sources/index.txt | 54 + doc/_build/html/_sources/languages.txt | 151 + doc/_build/html/_static/ajax-loader.gif | Bin 0 -> 673 bytes doc/_build/html/_static/basic.css | 599 + doc/_build/html/_static/comment-bright.png | Bin 0 -> 3500 bytes doc/_build/html/_static/comment-close.png | Bin 0 -> 3578 bytes doc/_build/html/_static/comment.png | Bin 0 -> 3445 bytes doc/_build/html/_static/default.css | 261 + doc/_build/html/_static/doctools.js | 263 + doc/_build/html/_static/down-pressed.png | Bin 0 -> 347 bytes doc/_build/html/_static/down.png | Bin 0 -> 347 bytes doc/_build/html/_static/favicon.ico | Bin 0 -> 16958 bytes doc/_build/html/_static/file.png | Bin 0 -> 358 bytes doc/_build/html/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ doc/_build/html/_static/jquery.js | 4 + doc/_build/html/_static/logo_new.png | Bin 0 -> 40944 bytes doc/_build/html/_static/logo_only.png | Bin 0 -> 16424 bytes doc/_build/html/_static/minus.png | Bin 0 -> 173 bytes doc/_build/html/_static/plus.png | Bin 0 -> 173 bytes doc/_build/html/_static/pygments.css | 62 + doc/_build/html/_static/searchtools.js | 622 + doc/_build/html/_static/sidebar.js | 159 + doc/_build/html/_static/underscore-1.3.1.js | 999 ++ doc/_build/html/_static/underscore.js | 31 + doc/_build/html/_static/up-pressed.png | Bin 0 -> 345 bytes doc/_build/html/_static/up.png | Bin 0 -> 345 bytes doc/_build/html/_static/websupport.js | 808 ++ doc/_build/html/docs/api.html | 469 + doc/_build/html/docs/authors.html | 286 + doc/_build/html/docs/changelog.html | 951 ++ doc/_build/html/docs/cmdline.html | 261 + doc/_build/html/docs/filterdevelopment.html | 190 + doc/_build/html/docs/filters.html | 342 + .../html/docs/formatterdevelopment.html | 278 + doc/_build/html/docs/formatters.html | 911 ++ doc/_build/html/docs/index.html | 171 + doc/_build/html/docs/integrate.html | 164 + doc/_build/html/docs/java.html | 181 + doc/_build/html/docs/lexerdevelopment.html | 736 ++ doc/_build/html/docs/lexers.html | 6892 +++++++++++ doc/_build/html/docs/moinmoin.html | 151 + doc/_build/html/docs/plugins.html | 203 + doc/_build/html/docs/quickstart.html | 299 + doc/_build/html/docs/rstdirective.html | 131 + doc/_build/html/docs/styles.html | 253 + doc/_build/html/docs/tokens.html | 449 + doc/_build/html/docs/unicode.html | 167 + doc/_build/html/download.html | 152 + doc/_build/html/faq.html | 237 + doc/_build/html/genindex.html | 1877 +++ doc/_build/html/index.html | 173 + doc/_build/html/languages.html | 256 + doc/_build/html/objects.inv | Bin 0 -> 2886 bytes doc/_build/html/py-modindex.html | 235 + doc/_build/html/search.html | 106 + doc/_build/html/searchindex.js | 1 + doc/docs/cmdline.rst | 8 +- doc/docs/lexers.rst | 2 +- doc/docs/unicode.rst | 20 +- pygments/__init__.py | 2 +- pygments/cmdline.py | 2 + pygments/formatters/latex.py | 2 +- pygments/formatters/other.py | 1 + pygments/formatters/rtf.py | 2 +- pygments/lexer.py | 21 +- pygments/lexers/__init__.py | 22 +- pygments/lexers/_mql_builtins.py | 1172 ++ pygments/lexers/_openedge_builtins.py | 7 - pygments/lexers/_postgres_builtins.py | 218 +- pygments/lexers/_scilab_builtins.py | 24 +- pygments/lexers/actionscript.py | 6 +- pygments/lexers/algebra.py | 12 +- pygments/lexers/ambient.py | 4 +- pygments/lexers/asm.py | 8 +- pygments/lexers/automation.py | 12 +- pygments/lexers/basic.py | 12 +- pygments/lexers/business.py | 28 +- pygments/lexers/c_cpp.py | 4 +- pygments/lexers/c_like.py | 446 +- pygments/lexers/chapel.py | 2 +- pygments/lexers/configs.py | 16 +- pygments/lexers/console.py | 2 +- pygments/lexers/css.py | 20 +- pygments/lexers/d.py | 4 +- pygments/lexers/dalvik.py | 10 +- pygments/lexers/data.py | 30 +- pygments/lexers/dotnet.py | 36 +- pygments/lexers/dsls.py | 40 +- pygments/lexers/dylan.py | 10 +- pygments/lexers/ecl.py | 4 +- pygments/lexers/eiffel.py | 2 +- pygments/lexers/erlang.py | 6 +- pygments/lexers/esoteric.py | 4 +- pygments/lexers/factor.py | 4 +- pygments/lexers/fantom.py | 8 +- pygments/lexers/felix.py | 4 +- pygments/lexers/fortran.py | 13 +- pygments/lexers/graph.py | 2 +- pygments/lexers/graphics.py | 8 +- pygments/lexers/haskell.py | 68 +- pygments/lexers/haxe.py | 16 +- pygments/lexers/hdl.py | 296 +- pygments/lexers/html.py | 10 +- pygments/lexers/igor.py | 3 +- pygments/lexers/installers.py | 10 +- pygments/lexers/int_fiction.py | 6 +- pygments/lexers/javascript.py | 87 +- pygments/lexers/julia.py | 2 +- pygments/lexers/jvm.py | 120 +- pygments/lexers/lisp.py | 28 +- pygments/lexers/make.py | 2 +- pygments/lexers/matlab.py | 14 +- pygments/lexers/ml.py | 19 +- pygments/lexers/modeling.py | 8 +- pygments/lexers/nimrod.py | 20 +- pygments/lexers/nit.py | 8 +- pygments/lexers/nix.py | 8 +- pygments/lexers/objective.py | 228 +- pygments/lexers/ooc.py | 2 +- pygments/lexers/parsers.py | 34 +- pygments/lexers/pascal.py | 32 +- pygments/lexers/perl.py | 38 +- pygments/lexers/php.py | 15 +- pygments/lexers/prolog.py | 14 +- pygments/lexers/python.py | 2 +- pygments/lexers/r.py | 14 +- pygments/lexers/rdf.py | 8 +- pygments/lexers/rebol.py | 110 +- pygments/lexers/resource.py | 9 +- pygments/lexers/ruby.py | 62 +- pygments/lexers/rust.py | 10 +- pygments/lexers/scripting.py | 33 +- pygments/lexers/shell.py | 2 +- pygments/lexers/snobol.py | 12 +- pygments/lexers/special.py | 3 +- pygments/lexers/sql.py | 18 +- pygments/lexers/tcl.py | 6 +- pygments/lexers/templates.py | 38 +- pygments/lexers/testing.py | 2 +- pygments/lexers/textedit.py | 8 +- pygments/lexers/textfmts.py | 4 + pygments/lexers/theorem.py | 4 +- pygments/lexers/webmisc.py | 46 +- pygments/sphinxext.py | 8 +- pygments/util.py | 29 +- scripts/debug_lexer.py | 65 +- scripts/find_codetags.py | 211 - setup.py | 2 +- tests/examplefiles/example.java | 2 +- tests/examplefiles/scope.cirru | 222 +- tests/examplefiles/unicode.js | 1 + tests/string_asserts.pyc | Bin 0 -> 1218 bytes tests/support.pyc | Bin 0 -> 631 bytes tests/test_basic_api.pyc | Bin 0 -> 13343 bytes tests/test_cfm.pyc | Bin 0 -> 1859 bytes tests/test_clexer.pyc | Bin 0 -> 6254 bytes tests/test_cmdline.pyc | Bin 0 -> 4945 bytes tests/test_examplefiles.pyc | Bin 0 -> 4508 bytes tests/test_html_formatter.pyc | Bin 0 -> 6988 bytes tests/test_inherit.py | 94 + tests/test_inherit.pyc | Bin 0 -> 4031 bytes tests/test_java.pyc | Bin 0 -> 1540 bytes tests/test_latex_formatter.pyc | Bin 0 -> 2009 bytes tests/test_lexers_other.pyc | Bin 0 -> 2967 bytes tests/test_objectiveclexer.pyc | Bin 0 -> 3145 bytes tests/test_perllexer.pyc | Bin 0 -> 7481 bytes tests/test_qbasiclexer.pyc | Bin 0 -> 1807 bytes tests/test_regexlexer.pyc | Bin 0 -> 2358 bytes tests/test_regexopt.py | 8 + tests/test_regexopt.pyc | Bin 0 -> 3355 bytes tests/test_rtf_formatter.pyc | Bin 0 -> 4866 bytes tests/test_ruby.pyc | Bin 0 -> 4511 bytes tests/test_shell.pyc | Bin 0 -> 2463 bytes tests/test_smarty.pyc | Bin 0 -> 1690 bytes tests/test_string_asserts.pyc | Bin 0 -> 2017 bytes tests/test_textfmts.pyc | Bin 0 -> 1842 bytes tests/test_token.pyc | Bin 0 -> 1953 bytes tests/test_unistring.pyc | Bin 0 -> 1996 bytes tests/test_using_api.pyc | Bin 0 -> 1965 bytes tests/test_util.py | 16 + tests/test_util.pyc | Bin 0 -> 7076 bytes 233 files changed, 36566 insertions(+), 1665 deletions(-) create mode 100644 doc/_build/doctrees/docs/api.doctree create mode 100644 doc/_build/doctrees/docs/authors.doctree create mode 100644 doc/_build/doctrees/docs/changelog.doctree create mode 100644 doc/_build/doctrees/docs/cmdline.doctree create mode 100644 doc/_build/doctrees/docs/filterdevelopment.doctree create mode 100644 doc/_build/doctrees/docs/filters.doctree create mode 100644 doc/_build/doctrees/docs/formatterdevelopment.doctree create mode 100644 doc/_build/doctrees/docs/formatters.doctree create mode 100644 doc/_build/doctrees/docs/index.doctree create mode 100644 doc/_build/doctrees/docs/integrate.doctree create mode 100644 doc/_build/doctrees/docs/java.doctree create mode 100644 doc/_build/doctrees/docs/lexerdevelopment.doctree create mode 100644 doc/_build/doctrees/docs/lexers.doctree create mode 100644 doc/_build/doctrees/docs/moinmoin.doctree create mode 100644 doc/_build/doctrees/docs/plugins.doctree create mode 100644 doc/_build/doctrees/docs/quickstart.doctree create mode 100644 doc/_build/doctrees/docs/rstdirective.doctree create mode 100644 doc/_build/doctrees/docs/styles.doctree create mode 100644 doc/_build/doctrees/docs/tokens.doctree create mode 100644 doc/_build/doctrees/docs/unicode.doctree create mode 100644 doc/_build/doctrees/download.doctree create mode 100644 doc/_build/doctrees/environment.pickle create mode 100644 doc/_build/doctrees/faq.doctree create mode 100644 doc/_build/doctrees/index.doctree create mode 100644 doc/_build/doctrees/languages.doctree create mode 100644 doc/_build/html/.buildinfo create mode 100644 doc/_build/html/_sources/docs/api.txt create mode 100644 doc/_build/html/_sources/docs/authors.txt create mode 100644 doc/_build/html/_sources/docs/changelog.txt create mode 100644 doc/_build/html/_sources/docs/cmdline.txt create mode 100644 doc/_build/html/_sources/docs/filterdevelopment.txt create mode 100644 doc/_build/html/_sources/docs/filters.txt create mode 100644 doc/_build/html/_sources/docs/formatterdevelopment.txt create mode 100644 doc/_build/html/_sources/docs/formatters.txt create mode 100644 doc/_build/html/_sources/docs/index.txt create mode 100644 doc/_build/html/_sources/docs/integrate.txt create mode 100644 doc/_build/html/_sources/docs/java.txt create mode 100644 doc/_build/html/_sources/docs/lexerdevelopment.txt create mode 100644 doc/_build/html/_sources/docs/lexers.txt create mode 100644 doc/_build/html/_sources/docs/moinmoin.txt create mode 100644 doc/_build/html/_sources/docs/plugins.txt create mode 100644 doc/_build/html/_sources/docs/quickstart.txt create mode 100644 doc/_build/html/_sources/docs/rstdirective.txt create mode 100644 doc/_build/html/_sources/docs/styles.txt create mode 100644 doc/_build/html/_sources/docs/tokens.txt create mode 100644 doc/_build/html/_sources/docs/unicode.txt create mode 100644 doc/_build/html/_sources/download.txt create mode 100644 doc/_build/html/_sources/faq.txt create mode 100644 doc/_build/html/_sources/index.txt create mode 100644 doc/_build/html/_sources/languages.txt create mode 100644 doc/_build/html/_static/ajax-loader.gif create mode 100644 doc/_build/html/_static/basic.css create mode 100644 doc/_build/html/_static/comment-bright.png create mode 100644 doc/_build/html/_static/comment-close.png create mode 100644 doc/_build/html/_static/comment.png create mode 100644 doc/_build/html/_static/default.css create mode 100644 doc/_build/html/_static/doctools.js create mode 100644 doc/_build/html/_static/down-pressed.png create mode 100644 doc/_build/html/_static/down.png create mode 100644 doc/_build/html/_static/favicon.ico create mode 100644 doc/_build/html/_static/file.png create mode 100644 doc/_build/html/_static/jquery-1.11.1.js create mode 100644 doc/_build/html/_static/jquery.js create mode 100644 doc/_build/html/_static/logo_new.png create mode 100644 doc/_build/html/_static/logo_only.png create mode 100644 doc/_build/html/_static/minus.png create mode 100644 doc/_build/html/_static/plus.png create mode 100644 doc/_build/html/_static/pygments.css create mode 100644 doc/_build/html/_static/searchtools.js create mode 100644 doc/_build/html/_static/sidebar.js create mode 100644 doc/_build/html/_static/underscore-1.3.1.js create mode 100644 doc/_build/html/_static/underscore.js create mode 100644 doc/_build/html/_static/up-pressed.png create mode 100644 doc/_build/html/_static/up.png create mode 100644 doc/_build/html/_static/websupport.js create mode 100644 doc/_build/html/docs/api.html create mode 100644 doc/_build/html/docs/authors.html create mode 100644 doc/_build/html/docs/changelog.html create mode 100644 doc/_build/html/docs/cmdline.html create mode 100644 doc/_build/html/docs/filterdevelopment.html create mode 100644 doc/_build/html/docs/filters.html create mode 100644 doc/_build/html/docs/formatterdevelopment.html create mode 100644 doc/_build/html/docs/formatters.html create mode 100644 doc/_build/html/docs/index.html create mode 100644 doc/_build/html/docs/integrate.html create mode 100644 doc/_build/html/docs/java.html create mode 100644 doc/_build/html/docs/lexerdevelopment.html create mode 100644 doc/_build/html/docs/lexers.html create mode 100644 doc/_build/html/docs/moinmoin.html create mode 100644 doc/_build/html/docs/plugins.html create mode 100644 doc/_build/html/docs/quickstart.html create mode 100644 doc/_build/html/docs/rstdirective.html create mode 100644 doc/_build/html/docs/styles.html create mode 100644 doc/_build/html/docs/tokens.html create mode 100644 doc/_build/html/docs/unicode.html create mode 100644 doc/_build/html/download.html create mode 100644 doc/_build/html/faq.html create mode 100644 doc/_build/html/genindex.html create mode 100644 doc/_build/html/index.html create mode 100644 doc/_build/html/languages.html create mode 100644 doc/_build/html/objects.inv create mode 100644 doc/_build/html/py-modindex.html create mode 100644 doc/_build/html/search.html create mode 100644 doc/_build/html/searchindex.js create mode 100644 pygments/lexers/_mql_builtins.py delete mode 100755 scripts/find_codetags.py create mode 100644 tests/string_asserts.pyc create mode 100644 tests/support.pyc create mode 100644 tests/test_basic_api.pyc create mode 100644 tests/test_cfm.pyc create mode 100644 tests/test_clexer.pyc create mode 100644 tests/test_cmdline.pyc create mode 100644 tests/test_examplefiles.pyc create mode 100644 tests/test_html_formatter.pyc create mode 100644 tests/test_inherit.py create mode 100644 tests/test_inherit.pyc create mode 100644 tests/test_java.pyc create mode 100644 tests/test_latex_formatter.pyc create mode 100644 tests/test_lexers_other.pyc create mode 100644 tests/test_objectiveclexer.pyc create mode 100644 tests/test_perllexer.pyc create mode 100644 tests/test_qbasiclexer.pyc create mode 100644 tests/test_regexlexer.pyc create mode 100644 tests/test_regexopt.pyc create mode 100644 tests/test_rtf_formatter.pyc create mode 100644 tests/test_ruby.pyc create mode 100644 tests/test_shell.pyc create mode 100644 tests/test_smarty.pyc create mode 100644 tests/test_string_asserts.pyc create mode 100644 tests/test_textfmts.pyc create mode 100644 tests/test_token.pyc create mode 100644 tests/test_unistring.pyc create mode 100644 tests/test_using_api.pyc create mode 100644 tests/test_util.pyc diff --git a/CHANGES b/CHANGES index 95f975a..1537480 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,24 @@ Issue numbers refer to the tracker at pull request numbers to the requests at . +Version 2.0 +----------- +(released Nov 9, 2014) + +- Default lexer encoding is now "guess", i.e. UTF-8 / Locale / Latin1 is + tried in that order. + +- Major update to Swift lexer (PR#410). + +- Multiple fixes to lexer guessing in conflicting cases: + + * recognize HTML5 by doctype + * recognize XML by XML declaration + * don't recognize C/C++ as SystemVerilog + +- Simplified regexes and builtin lists. + + Version 2.0rc1 -------------- (released Oct 16, 2014) @@ -104,6 +122,10 @@ Version 2.0rc1 - Pygments will now recognize "vim" modelines when guessing the lexer for a file based on content (PR#118). +- Major restructure of the ``pygments.lexers`` module namespace. There are now + many more modules with less lexers per module. Old modules are still around + and re-export the lexers they previously contained. + - The NameHighlightFilter now works with any Name.* token type (#790). - Python 3 lexer: add new exceptions from PEP 3151. diff --git a/PKG-INFO b/PKG-INFO index 5575d60..0cc9dc3 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: Pygments -Version: 2.0rc1 +Version: 2.0 Summary: Pygments is a syntax highlighting package written in Python. Home-page: http://pygments.org/ Author: Georg Brandl diff --git a/Pygments.egg-info/PKG-INFO b/Pygments.egg-info/PKG-INFO index 5575d60..0cc9dc3 100644 --- a/Pygments.egg-info/PKG-INFO +++ b/Pygments.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: Pygments -Version: 2.0rc1 +Version: 2.0 Summary: Pygments is a syntax highlighting package written in Python. Home-page: http://pygments.org/ Author: Georg Brandl diff --git a/Pygments.egg-info/SOURCES.txt b/Pygments.egg-info/SOURCES.txt index e1a295e..dac7771 100644 --- a/Pygments.egg-info/SOURCES.txt +++ b/Pygments.egg-info/SOURCES.txt @@ -23,6 +23,110 @@ doc/index.rst doc/languages.rst doc/make.bat doc/pygmentize.1 +doc/_build/doctrees/download.doctree +doc/_build/doctrees/environment.pickle +doc/_build/doctrees/faq.doctree +doc/_build/doctrees/index.doctree +doc/_build/doctrees/languages.doctree +doc/_build/doctrees/docs/api.doctree +doc/_build/doctrees/docs/authors.doctree +doc/_build/doctrees/docs/changelog.doctree +doc/_build/doctrees/docs/cmdline.doctree +doc/_build/doctrees/docs/filterdevelopment.doctree +doc/_build/doctrees/docs/filters.doctree +doc/_build/doctrees/docs/formatterdevelopment.doctree +doc/_build/doctrees/docs/formatters.doctree +doc/_build/doctrees/docs/index.doctree +doc/_build/doctrees/docs/integrate.doctree +doc/_build/doctrees/docs/java.doctree +doc/_build/doctrees/docs/lexerdevelopment.doctree +doc/_build/doctrees/docs/lexers.doctree +doc/_build/doctrees/docs/moinmoin.doctree +doc/_build/doctrees/docs/plugins.doctree +doc/_build/doctrees/docs/quickstart.doctree +doc/_build/doctrees/docs/rstdirective.doctree +doc/_build/doctrees/docs/styles.doctree +doc/_build/doctrees/docs/tokens.doctree +doc/_build/doctrees/docs/unicode.doctree +doc/_build/html/.buildinfo +doc/_build/html/download.html +doc/_build/html/faq.html +doc/_build/html/genindex.html +doc/_build/html/index.html +doc/_build/html/languages.html +doc/_build/html/objects.inv +doc/_build/html/py-modindex.html +doc/_build/html/search.html +doc/_build/html/searchindex.js +doc/_build/html/_sources/download.txt +doc/_build/html/_sources/faq.txt +doc/_build/html/_sources/index.txt +doc/_build/html/_sources/languages.txt +doc/_build/html/_sources/docs/api.txt +doc/_build/html/_sources/docs/authors.txt +doc/_build/html/_sources/docs/changelog.txt +doc/_build/html/_sources/docs/cmdline.txt +doc/_build/html/_sources/docs/filterdevelopment.txt +doc/_build/html/_sources/docs/filters.txt +doc/_build/html/_sources/docs/formatterdevelopment.txt +doc/_build/html/_sources/docs/formatters.txt +doc/_build/html/_sources/docs/index.txt +doc/_build/html/_sources/docs/integrate.txt +doc/_build/html/_sources/docs/java.txt +doc/_build/html/_sources/docs/lexerdevelopment.txt +doc/_build/html/_sources/docs/lexers.txt +doc/_build/html/_sources/docs/moinmoin.txt +doc/_build/html/_sources/docs/plugins.txt +doc/_build/html/_sources/docs/quickstart.txt +doc/_build/html/_sources/docs/rstdirective.txt +doc/_build/html/_sources/docs/styles.txt +doc/_build/html/_sources/docs/tokens.txt +doc/_build/html/_sources/docs/unicode.txt +doc/_build/html/_static/ajax-loader.gif +doc/_build/html/_static/basic.css +doc/_build/html/_static/comment-bright.png +doc/_build/html/_static/comment-close.png +doc/_build/html/_static/comment.png +doc/_build/html/_static/default.css +doc/_build/html/_static/doctools.js +doc/_build/html/_static/down-pressed.png +doc/_build/html/_static/down.png +doc/_build/html/_static/favicon.ico +doc/_build/html/_static/file.png +doc/_build/html/_static/jquery-1.11.1.js +doc/_build/html/_static/jquery.js +doc/_build/html/_static/logo_new.png +doc/_build/html/_static/logo_only.png +doc/_build/html/_static/minus.png +doc/_build/html/_static/plus.png +doc/_build/html/_static/pygments.css +doc/_build/html/_static/searchtools.js +doc/_build/html/_static/sidebar.js +doc/_build/html/_static/underscore-1.3.1.js +doc/_build/html/_static/underscore.js +doc/_build/html/_static/up-pressed.png +doc/_build/html/_static/up.png +doc/_build/html/_static/websupport.js +doc/_build/html/docs/api.html +doc/_build/html/docs/authors.html +doc/_build/html/docs/changelog.html +doc/_build/html/docs/cmdline.html +doc/_build/html/docs/filterdevelopment.html +doc/_build/html/docs/filters.html +doc/_build/html/docs/formatterdevelopment.html +doc/_build/html/docs/formatters.html +doc/_build/html/docs/index.html +doc/_build/html/docs/integrate.html +doc/_build/html/docs/java.html +doc/_build/html/docs/lexerdevelopment.html +doc/_build/html/docs/lexers.html +doc/_build/html/docs/moinmoin.html +doc/_build/html/docs/plugins.html +doc/_build/html/docs/quickstart.html +doc/_build/html/docs/rstdirective.html +doc/_build/html/docs/styles.html +doc/_build/html/docs/tokens.html +doc/_build/html/docs/unicode.html doc/_static/favicon.ico doc/_static/logo_new.png doc/_static/logo_only.png @@ -96,6 +200,7 @@ pygments/lexers/_cocoa_builtins.py pygments/lexers/_lasso_builtins.py pygments/lexers/_lua_builtins.py pygments/lexers/_mapping.py +pygments/lexers/_mql_builtins.py pygments/lexers/_openedge_builtins.py pygments/lexers/_php_builtins.py pygments/lexers/_postgres_builtins.py @@ -223,38 +328,65 @@ scripts/check_sources.py scripts/debug_lexer.py scripts/detect_missing_analyse_text.py scripts/epydoc.css -scripts/find_codetags.py scripts/find_error.py scripts/get_vimkw.py scripts/pylintrc scripts/vim2pygments.py tests/run.py tests/string_asserts.py +tests/string_asserts.pyc tests/support.py +tests/support.pyc tests/test_basic_api.py +tests/test_basic_api.pyc tests/test_cfm.py +tests/test_cfm.pyc tests/test_clexer.py +tests/test_clexer.pyc tests/test_cmdline.py +tests/test_cmdline.pyc tests/test_examplefiles.py +tests/test_examplefiles.pyc tests/test_html_formatter.py +tests/test_html_formatter.pyc +tests/test_inherit.py +tests/test_inherit.pyc tests/test_java.py +tests/test_java.pyc tests/test_latex_formatter.py +tests/test_latex_formatter.pyc tests/test_lexers_other.py +tests/test_lexers_other.pyc tests/test_objectiveclexer.py +tests/test_objectiveclexer.pyc tests/test_perllexer.py +tests/test_perllexer.pyc tests/test_qbasiclexer.py +tests/test_qbasiclexer.pyc tests/test_regexlexer.py +tests/test_regexlexer.pyc tests/test_regexopt.py +tests/test_regexopt.pyc tests/test_rtf_formatter.py +tests/test_rtf_formatter.pyc tests/test_ruby.py +tests/test_ruby.pyc tests/test_shell.py +tests/test_shell.pyc tests/test_smarty.py +tests/test_smarty.pyc tests/test_string_asserts.py +tests/test_string_asserts.pyc tests/test_textfmts.py +tests/test_textfmts.pyc tests/test_token.py +tests/test_token.pyc tests/test_unistring.py +tests/test_unistring.pyc tests/test_using_api.py +tests/test_using_api.pyc tests/test_util.py +tests/test_util.pyc tests/dtds/HTML4-f.dtd tests/dtds/HTML4-s.dtd tests/dtds/HTML4.dcl diff --git a/doc/_build/doctrees/docs/api.doctree b/doc/_build/doctrees/docs/api.doctree new file mode 100644 index 0000000000000000000000000000000000000000..83a5f22e60c31abbe950b30bb6296d304fe1ebab GIT binary patch literal 95594 zcmdRX34mNh@qV}xSnm6V;od;9TylkD7m#zw!U_u`60?)tNoI%5Zl-6KB;r#*2;o#j zZcvWkt)L>JAgE{rMNzy^6czA5Q2|dx<^O$O^?TFr&5@0uKmTl)ey^*#s=B(myZU_R ztU53_Ixs#qG+gZ%867NE+xR-aI5O5&S!L?El~tq4YVCb%jTGh=#}+RrRx7JVl{MP) z+fAA@X~E)o#H)4;7Z(*>#|iqKKNKTQUYcJ&#F{(m<`>2)Qb@tq$ z;Uf7}D{C%oz^K|WuQ)clFg!e4NvoB$mgYM`ipFTH=nOM?osFl2c%>~PM}pRIv;;-^ z4#@*K)?S+5I^t!-s9a}tH ztYz9>E9)=KZxhmNAbw?orTMKw9G0?_H#}4wn?1T%_|M#|FO!pOY_@@5K;3rkhNoM^vvQ&wX$8NcpIb5 z9v@lYMh9Ta#lgz}|;&>&jNYGEF7)G@2FXWx1QJXIIAxZmhCT_bPo;$Z%+| zTG=)~&G{B3~04e_@T{x-(nCivSFf1BZN zbNp?Azb)~%75=vFn=Ca~EBlqU>Dv^hKb@vOJvRO6H2wWc+v0CK{B4iF9R7B|-;Vg( z34c5HZD>|7J+OiUO1t!}SF-_;Ik2=V{&vG(dtY0k-)iNc(p3EIj=w!hdyMz3IZzrJ z9)!j!GiFr|ZqN3J1Ece;Lp%f>;-OLHFm#Bnu+S^FQ&u^B_vyL$=s#!VTy-pmx4y|J z8I(b#tF&t0WRH8enyo!cqw|Y<&YR=*9Hh1G8RvXYbiMq)x+hf70Xmf<`lgH(=E(?- z?3?1{sJyZ0@=?= zu?OcA(}7ZN3z~z_M=`3*1?Lj!zqz44U_OO;uCSogR+$G;OHpNrqV9s0=#HMaou zJqL$v0ESSk=GcXVl6O?ff#_=`)GB9E{NYC8Plp)(R;ha}mQ;Gx6#vRtyL?4dpz+~i(h^k0O9vKNsArXSQK7cQ0xoPXvG^86mBrKv zTmNHgtv}1{EfAz)Fvqp-GtfZ<7N<$-yItqh> z<}weB3>Fu)RnCD(=SG$D;v9SaeQO9_c?T7Lemks{HfzQ^6V(rmgc~YWXH_m}M?--Q zZMaxjqN)@(47qmG%+y9&>YFrHxlrm^*Q;lIPKg$?G^$)g?d%Ti96dgw+EvZXb))lT zEHglJMt{trpRE^^KcjMSpgGyfC5<$mR(Th)b465nH|cOtk&(S}C8_vYx=xt1@*XPvs`kDqpu+)7el;XV zRu!?Z;6^G}Uxd~iz=DJ4RJkUPx6{TYKN?)L3O%=~}s&3l>iYpUUk;YbIs(U8O5X|NSVp zFt3#lps+p|RXzl=s<1c1*xBrQzLgJKy|z?|xqJkvJ{na%#-bs)7+~dEge|gKd_1b$ z5z~#UrRu|-E$YK3+Dl6`f`Px#J~h`qG~$UTZt~R9<~09L()@c8>#s8=wvug?PeG2m zqROW;a`dfEaOG|)@-r}$kx{Fz_gvIB*^0jMSzq{dRd;kwnMPIloU%UGSF*~z=rTc5 zp!-Vq2EtW7-`-HV+0`L*^JC)<9n<}g^MR=H1!{ByXq34hfNL==C%Rgd}W4 zsIDJDh9{!Rk7F6W*FpyNz?d5;I*z{EDnEfRPezrW#z|w%Y$Rb)$d#W_s-L%%>ZvBB zk`QXEJPnS|M3rBFV}5mHfHpUZTL(|E7-grKs|EX5|uO<%Hs*Tt79}pIbOI zR#H#euX@>!UV0q9|D0m3kn0Ct(e>wsMliM-87NL|D~t^0ToE;VBv%;8sVSc`T+EHm z&DmhRBX^_?+J+ZT164S9qa(wMa|4*@sZ2eYyDGeWpE1p*b0%WDPU z)*%VXo^jr!W^*n9Rm{if)pP^#KfR)@^_Y@ZJzX2i8 zznuVt{x~-$V@cIZw=ppFUn07 z+U|xXA1(By+#Uin8(z3+0x!vL3#K*~(#)xv0;kGN2YTACD#3$t9f*$Ho}#6ECBrOw zP;M^)?zyPc#Ahm{T_v|S@JsiV83b;U+ec*J3Augo6uH;wy)(aCO?GPtr{$7qooTtz z@iETY9ojQGQiPjSrmVh&q-W&z6P4p;x%~;4QYdBoB6om~U#8oV7h15c4VSnqW{PnkLJQqa+HhX^lgTRq(g;X|1qs45{^O)*dL7`a>ppWu_r@g50Azj zEBJ8%JjgxW7BcklFprmNU&$+j@%nX z!Pt{on*Hg*d6VI&7YGfT5}YAea|vbv4hh)Jgh}0-5f33|BZyqTh?o#$nFwJ%Rta8| zD+qH=fEm;&I#6yvu&gM7H4g%TZj>vE)?A~NzYnquj^he^@#;j!FMwQZpr8iT6{zPWy{pnfzTE;j^s ztW+RQuD_qnNI&AuZ7UAu3e{Yp4N_ua0^V1d$_X4WH&0osSH%`_i%}9nuh!gFBJXYp z=}>HC1d%&aL^@ZN2;^k}jL(T(pJ7p(@2PR<9_yIJI->Y&UW^9o*C^oW`n3Qt5VC?G za!$$3w#Z1fRr7yRE?JwaTGBBk9k--ux2>&C{Ii6-&?B!+@oNUb94r#3c@7o>URO)s zf=FcIYy^>et0-6|$S#wKIwvl&#BWpLw_D-{PF$uO&Jp^#9$gu!nJ_bQoc>>kX(NyU?gE71fK3s%DBOl)SDCFBY9kJRJ`2 zliJ9PUn)TJj9&&gGEUdmS7LWLqLA%(B8c3(l-{yUR+(&bZY5jk-4#aQ-6C+M5zs75 z7Bk6A3Da@zJ;J}r*m6NO%0&s2 zaY(Vbve2-7ayJ-}8%5+MBho5ClA*NE`Cg@epQW$&Id2xAsn2 z<663(lsR-iKP+l+KR-giw)O7kM}7Qq`5cM9+{YMS^FViu`;(80AU)7K@D#Z_^?XjmjA^b@u$aXP(=nH;P z#J*(2lG!lU>IWMV=_->wyT~sytWBV~uizchFGmo$ui`g$K*_>tb?ksXB%Fs0r#3G} zu3uARR`eRzuLBOQ$y}Oy1QB5S4Fr+^caO(ZuZwt_z^<#khGE2H* z_Z>un{dW;W?t7wO?8z+6{`Lz=kX zx{_EsoJ{NqvSquDw&TWfSpJ`bC3$$Jn04sKEaG6!yFB!CF?cFIkOOYr%y|O zdV#l(Ta#ym(3|gk^%A;YfEE<~O9YYol?Zpf7KD*6s3EGfzW?N5V^l8xd}~18KJp(s?Jc{OGe@EqVTd& z(Bg9)YLc16LCCI9+8Sz``v=IN>HMc?{>x~Fu0!8s!*s6z#*9zG;;Lq^(K)Vy=lo`n z)z+?(-2k@DwCYv`ynxj#EUQ<6vXpy3Z2QH|-jdM~Va?I42E@p%F49s;;xcgM(XAms zQ_p3xz)SL5K$3Vl*o#nGj&Cj|U70B$p@sQCFb;&*M117d5`#`{4b3dirE0!-*6RqNSL@~(K5kvWU_R?1h}`-@v<3DIB8r|uL$O$i zcN++OLyt}!G#1!x1Qegtw?tfycN;Th-HLqa>WfO(NXm@5>lfkOCM2w)YqAbsx~_D6 z>4u)tjg1JpO_7{yn!B(W*o?I3!*7lU%$(yF9dlW-L)b0#F8#W#^t`N0_Ns-pyzaKf zduoNfOcjy%HVjSonOwPT0fO$gLlC*`@f*7Xl*9U@WW^oTWYP>E=Y+h2A?FpF6b)*n z%zj7V>|{7$tt-jwcNUuY{Oe}5+E)#x=#&K&?44C+7xkvm9~tmB|4us-k1&k+1zgO`<& zlpu2E4-vS9Acq10g0KUs*Un)8LXu7dnAjF6lZ3oY5<2yV3w}fZ5A-3Y{z$=Ei1B(M z(5XL4#Ev#%>aJxAY@Cj1NTsVx{;bi*GBp2MY20y$fc(cJh+H>*<9bXcR*z%1{siI7 zG#vTYiS3bfj{w;W)L5SgI9PL@BuVE^LL}JtBEYn^D46=lEMXtGwkHeolmIiZdAYWI zf@S6C=}rvmR3We{J59v6JqEeXUjWJ8P+Q~nYu{YsE+i}B*vG6LCN|Gn!jx*i^e7*8 zXsp_%H+Z?+CSh|?YJ)f>J8$SLPTIn2?)Oy|ZZIZmk;+yi$A+}SnYD%44Bg*1O2+z3 zO^s{g=|bpLhuzkEywojT_w(VDRR!Ad3<0}B} zjqe0*FmQ7a0eJ=xL~c;2t@O!8rC)PexdAU%uYOlF8goTsp3%^5y#~m2*(oX2kWZ!T zSaH&z%ZhHEoihPX)umxXAUpFBUI+1@V$}01O{Pu- zPV}mtp3P$Fj6zjT{g?pFl`sxCl%QEmOXki(6x6T~0p_ul-qb)=88y)TYFr82Vk7ew zkvZGQ$g^&YpJa@l1S|Jjl`!%NPX?pYhHys36^5$C+>GL)f!g-b4jphfk{ii;M#qjG z9UmD)g`S%m8O>Sk^_yi-TV)Ve7OsN?#YC1?GjQ+yS31fxwWa|WA(af;No6L zCKGaT<&e;woz5m=DbvxNy$BDHyO=`3ot4a}l9%XRx^f4Elaq!kaGE!!(|jGMG;o@)M|9+F z5DPT`$UqM!L#@Ao88>5V(aPcLD)|u$gb7 zqE7$=;(QW8OCJqHKap*wbCHSWUcp!@$=(`1LA>R*s(T#I7C|0(;l5iP+bT zSpIydF!nm@edTz+UCn7Ok*}4YS7mb4U7Lh3Cv%hMw~y60tr{ z`^0te8$vMcCV6n*L@c!XD1yj+ODMK7m7t(OrV?tt@wbKhn8(fd#@|tNRtzIS)A}yp zC}K{{ns59)L_mP=BZ%A&l-i1yY*f58-}peJs=2!>r*8MSG5Vnx{m2;QUk$}N#XKR> zKlY@#PRuf<;r~Q&&9(9*;I#_(Q@lYXKSL0?pDU@UgbXq&;j!MPR^*;CN>7W@Ge${g zVw)zZ%hWHF_Ln|wo!|T`0h;IR*MK8uq2K&0qL97cAc)*=mEN*PR+;Rz@SC4AGQSg< z-y50MezTcz>^J{G37_`~`=H0bNnNpjnet}fNm!+it9u*9!HMUbt*S4GXI5uD-TTK? z^+h4nd(MAEJT&(w1d;o*kQ#Z;%$fI`|02}Cdej|}$rb0!{SD}_1Cj|n=a)$3HS?VR zPUo8W}J+DXac^yz`;61O4Xl&va3pE32?|FRzChk3N z0DO4Q3_|aDLy@8Pyb+$TxS@C3shoD$k}UBd<3Cf@(0|@URNy~vO2B#z{pZa*sFD91 z^KzRLspda-#SOt0VnF|SOFTtxE4?@MpP9GNf8JW?^$krze;X!f;y-T-7>s;71X%eH zC2OWB3XI(Q&pE+&FnC!R=_&_;$ba5Z;1+`H1Oy0D?>{Fh+8G!SXBPz6urGQh4h1lA z=s)i!czXa3WRd?oRj?Ma>@EcQ&wGg2G$W>6B@~Ap`t*iGurPsmHY6PkZC44CxIOU> z>GwhqxxMilw-{t$Ek^7^?<1Uj4JYjjlk@8Y$ckU%ydU7;oc5vjM7|I9U=t!(1(iHVMZ+fb~K2Ia~Yq&N+vw(ow|N1 z5YtqeL(IkY(6&+&&q&P^UctmOGZ?zhoszCTI|s*Au}cV9_xW(dLa|36z=nOH)Vt5j zf6aYO56xEc5PXhmnm=qi&0?dlkYq5FI+A|SwV2(W7(zp-JFjY_uWKJzM~R_?Rw zHex4;*i0j)>seZ*LYI@yV2_fY=#%TrnTn9sdy-5V?|&8hOpkn)jNAgj)8fJ0h18@S4vA zI`l;{q1QZ2DzBN>JfGB8&TBr5?Zybx(Q6*XL*y1vD0t118P&3)cj?wSJufShRp>QW z@t*dYsU{L1W4L0kc^qgchqDkwZXtf-riwCICzN>2Q&pF_GBE*Taf^)dVo`pJQPv$k z<~C1&gfFuIQ@z zr=8{V1emz9{0`v5S!NJA%jb&>o#hMggo6os?^I6^=7Sf4WjtgG7<$MTDk(hVr39?g z&_lk+gO+O%C}7|&CZy&TA0OBBOGK4!@uhf*++})i>J~E>p<8^p(Cb^0g#J63pov@j zF2G>LS0ISoyG6+wVu}JQ_HOZ&g1^V$Wo4wR90($}_$q;02y!(LAP85`LcLsrXvlCa zg2-JbA|?a5nhf-XuNVA=03HY+U-(ABS_p8H5al6Dne5p- z+``a&VJ306;vLf8h5%;;@Ef-SWMS<<>)N zUwAictl;&2IN+9C4n%dL$8PKA116J?_R~A337}c9pruw z+-v3*=gu4%T{vQ0a+_`XKsU@A4Zte7JwdE^vd+!Zy`$5#bCzuU%5iCEpj1192S6M5 zNEfkf`mDn6coCGaD2-beYMwZc>Lu4L6t%`oRfk^rC#9!)#U2^A1fLQ@)+@gYu_)qC zBZ%DHLaF!4SrRp`{4>J6$Kz(a^3N(dD@IqDBxvEEV;Fkn_aXuU+=n1?pT}=(;$$Nm zt9j-7va4%6{%KX_?tbI(fOvetc;x?0V(9+T>iD9le#ujn4=)>It$R?h&9(7mz{C3f z6}&?k%Msv2g%VqZBa@6Wc-kv#$L=8`@URGc%?N0}ToyCQhBm-{UHFf9d>+DTQX||q zfaBAKuG=@6wC1{TLZ5X5R?dGrk{0%D zrlbG%7#~tA%)*^eQ&&{F2mHt^yv*D)K9)V+H&* z9wPTFepvw}Gb-S3^llaKw|ZVyCaZ7&^&H;Q^^a;I@!v6A@c`=gKtpBx1A@pskKed5 zQl?C0)WRnEacu)z$+CAZ7^4@(=#R$8mP-FkioRI0!>d1u!Jmym{qX890yG_7{Z-&4 z`Tb!Lfp?s``FI6mtsKW%e*>KcW387E9l5`YiTbPbSnFj0CO+2s2kI3y#Ouz*FQV>%HlCj5+lZ>Z+9~La%RF68dWb0ri87|E?X-%6;oZ+VF#J)nXbDYSRdmY}P>-`W! zZhrwg^Jo{CY4jFUhM$Z*Kqv=#6yC$%P$}*pVEB}w`!ItEYwiQyCQ+y6v1cY$8aV6+ zlj_R(3o}`#4q-a_3y0z%a);rU{(^*reRk?y`f^=*UREZn*kPxL?r=n;9R})x)Q@1; zn_m~1NtuQ_5&)?6^#~$&6n^6xL@~^S6MvmI4o}>a+|fq*7?D2KNbA<(iPK05Hoo2F zI1xME6Vt6Ku?^a`{BD7=c4hWKMVtV*ug6J3HxrRiLJxw-ohS-ckI7C-sExi6Gl^Bh zorEVO>P3JPI{1a=)G`rTC-})iJH?~%$W&e3Vl&hygy!O(3OK~)Wy#ubU#pt#G=Lxv zMZiju=vXGmI+F?BiJh*>?sQB3CM7?^lI!m5G+tfCW+}m&eFEM9RBIKOquGKq&rv_% z$Pv#>#|7dFh(lK9AizyjB4Ak|vrJa_$(q)!j~g^{MUk6p1(3B2e-K z{^P?bb{1iiIV8qeP4;x36gQb=A#gZ#CY~ZUtoP3R1cy`efsQ;gmtlK2LMpZPkWKEZ z7*36n`pPwrC$ZixU^+IB6+GY~Dhh?>Q8L5Is(P1h+?bx1mB}g`PL1O|-8xcDBz_jd z6%VHt0u5%l2tni)<2P+fYE%u&(hc#7OR_1<(;MB%+$8Wp`u==JSGLjMXTXfi5#H(;>s zD-lHQJ)&eyE=7TD`%%$Vf?sX$vNFg6^R*VneE@_}SRX`yJGCT6=WEXfS*BK1_}QCD z{5K3{&lw&aIJ3=t7Q< zeNvKGC8AH?@ z3L4gm`vt476$z~efRHt(p%H!@sm*->Fl7FV2qO0-QKABovj_DevhK@xE;Gx#wubrQ zbv0dO%0{Q+D-7)$Dm}%8tjIodIjEt-Ee9Bd^i>3rdkDXAPRJF7gimx#HhJ8`7Ne50 z$%L}Misx%e{qB5eI-oUe*<}Hs|5n0yK3V9us&;`crN-F=|)w@Joly#ib|l9gw0Y(H#iLrue&v z$JJzF)bMLLncHn@+;Jt(_mM1nCC?8;s@|k#$L9IC5E@^}^FzQ;+&@APxhI6!>`ERA z?x!+-EcBmvbn2qH(C$f~!Ty-s*92Y5^HZiy`|nVwO=s}#fMkNSrho?18b2e|3Hj~1 zW1s<1_j8b7In8G6c#8Ds&p(Za$UTE!`t!;I>e(;!ZuRV!dR|th2(dqp9JpWMJ?+m^ zT_pZ%hF0|&3Gyt!D2v}9zl1AaHR%3HoSNrdifit_5N}uZyn-iOT!!O@FpBiI zUlY-*oX}+UyomC?S5cDs)*<1sDiB~$sn5vUmc ztc55W2!V?d8;aOQMl5}O&&Ca@bd|}UHGUI@;q^V6A_DSnh9GjA<2SD3WMXwZUXIv8 zI9nP{dWN4}{#F8HGf-o_HQ->KUK!X1kzl_qg2-(r3Z_0XOV|f11KSHT7hnc;K%tKs9l5`@wMbW{Pv|P2#Ex5E z=L07wbE<;b4&An0By)Wx2jZH#s}NRjozHGSg7(`HL~g25tnfM?>dg1LyDQxuJ{|kW z25NHC07pB(bYXWpoylt5E#4++k6by}_d{Dr6yBh-?I6twb+&2-*{Ke&7VOD%>{R!{ z1C9;hmz}C4g(dH!cPZEHtLJ59veM)$HvLFW_d3L+yH)CgsjZBZo zoM>cPpCYj`j%VIaQo>%J@HAxX-#A5r^VOV0!7wM@rCJ!Xa$~EN9KOyrNpBF>tk!zE z=f+La$wH_~4@SmbQITZ`1M=VfKGirsu(TU5Y%x;>(r zNPG^%6;Im_01f3Zh#+!B{KhR5Wy-WrT;lZm-X>rzZmyA@C(oI)(o4>(+^VKTu*Nif@wR+le-nM z(DrQzaPCMb^`}Cp6yJT{F2whH#Af4$4*-rvpXtK>`h!eX>#y;)^5cdNk><+v(r41f zKg@LOr9XlP+M3ckB%+@5= zIDJ-eS;O;%56yfI@LJ0v)zMGGQzAJyNN)Qm=AU@qJQX zx%O&=4ayIgj_uXsc!=B&DHPf($&B{uM|!vR>IpqBE0a|?s`xS9)2$WNMB+bTxZ+X8 zlR!f`{1idteum$;{h~~n_KRC&>P7@D?8W`uh(9IbPaAP5FCwiPp9~oE z34`AX&~!}moWPkccbEvZjm6|Z=64{WrNTfkIyS#YeB}Nh1{3*mhjGO+;qyq6 zT_$`%Wa?}7SX{GT6hh-=!ao8AtNIfHT-YYWX3K;W+Sl;E2>q`fojS-Y6MBK&-+%(M zVA8Nwzr>X3TAeHra;s^wh-P#e%vk=N6em=Z(_ii|g6?G`=PV|UAJ20CAT8GJf8qfb zwBeVvTe72ezoK`m-IH+8w7rB2+YlGmZY~Y3g7|dpriw^>RX|X?8|2EZ1`u?=Isz=f z;5V+(lp|B4<1cqi7V;EBPL>6&XxP!v?AH{|S~Y@cvu_iisoAeBaP7+-(pa*1HWi;$ z9l^(@2FJ0fB~wgOOIy(B*8zbBqxW?Yjce3IJzW_!dS73FiI3hl06s?V48qa-h9bk! z`$l-eHEMeA)CUVWKuqUmq%dC}c&2RLJ~dX~M5)jeZA!ov9IMk}Qp4TZlG?=v(3m%RPF}Y`QZu<+2~M;YHK%d~2cC*YQ^0iaOlE z&`tp{iQ5zJ5PmNNSoFYeTye?5DlP`)&?ajnKYzTBF!v2G1B=tB_;rG{$i{v`VCS*F zh#g?W@{5pc(;u+uU$IRk8&5cD_RPai>Zf@!XWl$D@;y*u)#qbTZ2kucp*Mf( ze@t#S11wNH2P42&(#5ayKgbVSV3GK)@lbI+%yZoVxm=+hT_>E4lABK2b#_UgjlrkQca0SV=KJOX?f2fuN3qexcWl94<6$qpc& zAmo{btbUT#YULCU$a;ixqQ^N2DgT`TnbkQ}D14QI)eEynwU1I{E67P=S6@NSjw?v7 z5bDQaZ$LaUb}|B7G$*7+<1l8*n_{0(PxYu19EY6-bZClXLR+M>6WHRb9EZJ;)K|_J z&!)MY&U7@!H{k)FucuHjM#&6goTYa&#y9JES(&V2PmQZPv+kvDV~sn(ru+!1m6^CfqgfQqxkfWT!Nk6>f>D>8z-U0 zr1+*jU|HbwQ44GSn=IiNaB69NI)G;)bpr=*7}1fNFVcwvm>jhjQT)XHzfs`B|6>sP ze+xv0{$B-8IJcws^ihjAC(s;a@@6i_uPSsneq#iz-_Y?J_n`Dq3nS{zBCzK5ogdfg zg(6I^ZxNnwnn&+Vy*>)><&xL;7NOU-8VUWgnV^Z+_g27Qu@QpEy-k$N*Pd`kqsFn|X# z$mLrqSaTU_e%D2!b#Xu|C~)~*m#l!6yHp7DyDk&4%Z*t6^{Cph-?f6H7MB0;s70wb z4E zOJ+M1Bvjjtg4L@np>-1w%6`B7d+{8(_bCaD?_vt>14?A=qEs%CPx<``ZA9 zK9?bg-0k>{MJ8AE6XoXn?BB0cAE>2@hw#aS*#`wfM$uS(2+!JDnVpH!;d}RCfE&-3 zE%6$L!@!Ayj{p&?F`_K>#$0Vb@y7&c+G%`T;3XPrC(fMRz1D7mO>HhD`;9w5K(l2v zvFNJxL9#mmirgo}!6ZA?mwKM1_DKPPQg@$1OliLYj!3w>__(zQFO4ng(@HQ4l<&q9 z4v^@*Q;xz3{32e}-NR(Kb&SE`+EiU2tIrBEVC6p=oRIz;6WGUm zzO(GflfAWlY+~*g$^(XypMfUk6pqpg)%X%S8`|l5J-bnXr@EwLUVK-~;RXbJ+YrOI z>J0YjM$GZ6v)Ahbu?hk?rGW}%)_$ZEec9y+J%%)|UR<~RzUo{l9 zC8qPlS$RmHrgrzRz)SMmLtWB%uHDpxF>KlnrKg*JbWt!#WUHv|n?Qzt!XWfd9u*DxC*Q&o7F6_Zet?8;Pd>@X&&X0HZ+-Gl9uqpM z{C5ag7ygNQ+H^MEcL~H1AuD85f$w?j<#`GyKJNRBt9dF<#>M{w#J3M*&ua}9s{^wO zBe?BWH*B=I$AN}i{15>aK$r$Q$PifebC8`GG}-&s&m?zG5Qf_HVp@F)*y3BEUL`(pza!6tgP2Sw9#2DTAk{UsYc?9IQ!Ll9%wcyVhysR=v$ss4}Hv+ei|#Ho}tqb3;P-W((7!_xuaP z>~@pCA`;p78v>l>(!Ay|tH{Zj~Reg7q5uNblX zak&*2&T#erjNQ-J{mkOxg`;k;nj0J%;H5JKTvUo#0RKVRj<%z4 z`fhP;Ps;ppTr@g&$l-T^8y&zsshXbS#il+@XkaB3j$Z-F(wthXLYrr)*BZImAvBI3{&|C0{f>=1%J~iiC7Ih1guwvfsTa4Q2 z!k+HS<91;cA@t_o)o$_BGk;DCx&B+_1-;UUYMU9>kcgAL zhzKV6B4rhsqUfw?8VOdBH33i6^0g3we77OMO=3!IwVZ5JJ!<S$(f*CtGMVWO1!$h>jQ~fc@jJ;Ua~tCY+1>;}@+1ZXbzu7G<@ z`($o6L_zF!1USc{^d>f0WyB`Gq(O1JTgp9@a+;-7r;wl|;>Xjk(}mmNars57!$)$( zMTPl1FF!mwirYVjhtA}spY&$;1Rh9ao2|W+Je$d$?knSFYj38rS-n=|_W>GmzAplN z!A3+o%bq6%Mdnef{dxcWgtfn6$7w-qU?mtkHuJ z4~_ocWZNAA?kK23DV#eDzj0&0LQyGcrl3>sE`#UqpmC|2#7HXcZq*}m{4}SS^Oq$T z=D_r@zmN5JWL`DbJ~$5h8)g66h9a8J-juq{jaQ-0skpA8gv&HE@;a;FhDOJ$Iex}? zXl!wg_oLA*z=!D1Dhv&aGANab!wYJsLC`1{(aWEx?{&w10XX;1rhA&T^~05$dRxCC zE}0{Q(3`*he>%JFNQj9dd_4jzAW7!V|8bd78nmeKIoTT=TyZWe01jE3I~oY^B9BqF zj`i8%>Dxx-+qWi~fze@%)!lJG?Ow%mz%2}GB{bdf0I@0WCbhoRxwxeD^g4sF#gt^g z*S7{}3=O&ynErrqIukSbXshvcsa+3%D3KEp;0s9jjVl#1W0lHIrgLenS6FW_tYm4; z)Wf!&WBQYYbBf_;OdlAtHedA#)^t#Rs=!NhwuSpP#zt|~W0k89>9KBynn{1D_tesM z9N(XYv<=4h^eJ#rod{d67RaOl{^^3X9N@#d(-rI3^YbQPV}#Ej9O0iKA{^n*!V``l z>AkiB;d8?4L^;BzRN)AJw$L%c?@S{D4w03PtykaSqE7X0S}K||6J(Hb>c+TlShvjQz>NTaJv?yMaZhQU3r4(|}Y ziU22o@EcbMvVib)1JQ9|o)usQ1*?JRLcv;OW04Rz5M3-{Z!u!|&!B)#fe#elT#qM? z_b@9sG=O~?I9@onfC1s?TntQYG9q^zKDv>7A!E*B8%rkLJ3p}zcTXL}RZkd?N=ch) zGnceDHtt67*fs<{>cqgOzrS5p%&T;!+1E3s_V?o!BMfit+aLaWAFyvKCLCv;tz6Zs z;g;A=-ztRO{E@Fswp|2zD9X1Xh}_#nyz{jpj{LE#YU90g#N}Mig}0yfhia!Oo+n^d z0Y-?X_zu8fio9wxNb1fQodU$ue6kPSV^|x6B_Rk`c)pCorcv2=HzO{HqXg5fQN0-wRnf@*CB}9 z^-65AlS!uJC`sPWouG)p-1MlW^Yaah`;XJv^^GJiHi7m80Xi!O@Z3u%V@h zY_vin zb~hd7+u);Hujw0?T6Z;je8jg~#X;UX-Ija~sK0+`WU#mh&C;M7U9iBu-ji*N-lxoG zi=wCd_P8;+SqQ!PH~nX|<8A>Tl<}+;B}HE%3*M zbcaW(pSihHkmeG90&qy2nz{KT;vn*;5Jc`S5wO}uW*L!dGdG{MRCg=YXDn4}<|Zxp zJ;M8}$E%yU`J4dF<-QkiujzQ^<~~G0?9U^J-2F;#Vv|)y?5QZB30F4vfKmQ}D1Xr? z>oD|$Nz|3wmqhD9Pm5=F`(p+^BnhG<`E#oV_L z0qMVuAaai>wMkD#lAbq+AqiO}EuQ<1CHtG2WrpmG3?*#vS01sr**zXU5wUFg`AZYCOf@r;Hv{GZgKQ^S%RVH`# zTYq90jQ#$McL@I%1d;nIe&bGyEUd1j7a{*9%$EYppzt;J`@3K*vhlJIIQIL8i2c)u zY2q>*`(Zc#`0!xtTWK6vKUTxqU@}%~gGa3<1ap;~Ldgu-{H4DOHH}$wnfwqFcV{^q z517}sV6-~K$;|lNfJkW?6MHN;U>q7*fDe996i!@HA>o+sU&>8=_CFfi?JGj))d1tw zW!FtYZ;sMi1wrIi#V<GDX!VK$h24OCZ^3SKw!(F7mUeBWUB}XD^GJO2v*D#Px~{O- z^VoI$*!luA&(sEhBU810Y(qpK0~;a0*({~D43JTnfkWAky&5xgn;5H2#cDHSm4DS_ z6ZOQSsLe%x3r~MK#10KuGb>nM@S~?e3~F#LC%##ri0z+SB4vXrvy}*DHQUpDXIy2r zX1d<|$}`*s2~h;wBEU_7V$)gnQZO@Wo6dm-iwF>nQv?O8hr)YKE$QQ#%|URe6u zjZON0v^ry$*|LwoPA%<7H()0aY2XIzjA$%$ibLoIB)iIY6{w{bz!AT(G>&dJq=7HM zAoK;=MT)+_R6Ip)cfEIN#vzrj*aM(&p$D*s62JqPM!=2@J%H&Rv|MD(0|<$y`~7=k zW9T61vfq-mCtf1A7o)IAc8XW0+nc1j$`szDD#x3!_7Q5mttI65Wtw>IjT3}Gmt&@g^%$}I`j|sH94nwf zCG=nKs!b{LDgjM3=k#$WxCoj@_TGsv7tK1?c_+EK!=pGS<^2YSmFc3N)#=}>V=qkC zV6LgZe{Vi^v>i8>`<$F6q4D)E!_ca$XRmKIV^gBmaErsm0iIpN0xo@$`J>gbHp~vq zv1#iOOjQqM=!p%Y$C8gfW0l^B49%Zk92_c)6^9qorJ=$@m*zxit6sf##Z~eoA@t_Q zV5t8W>U6yj05N_LEkK#*&fFP zmCaDlenmGIv;epl6lvTXyh6|c1Xz4iS`(B^LP7O~>5S>SqNSdz)blL0ePKF-na)5- z_(L8)qv^7un`humzynPW;}sd0k05d*N^2P)lQ09vLDR2UC3U05c7fPdjBWlkWsz2y z6QinUlqvHuMK@R3IN(80SzejFT54>&>KV|{x(mXyFK5SEC%TNji@E~Tn1X>uF!3=mYeM^)&sZ^ z%7%;R1ki1mXGNR9i`s1X#P;>Z0UlczolCcviRJR(tMW)u(1!1HC+tj4EfBLBxZ`D<#5vyawRth4~`8YD%5UW))1LyAu4zd;8oqAp;C{EFc9qIQF)Mk`8X)ZGY(PvL8h zJ~(m{6V&cWpl1O6xc3tK>ZPS?wByl~6UK?QYZavNE}+&zUoKB({v99ceM4-0g^g zGT)CNav#8N?EaHoQadogDdZggR| zicjbkMsT^|SzO_TOFlY0Jh~8$JxmUpA@Mn1EadX)AM7>3_q>6!Slb@CC9;5{5sTY! zxW2exto{qWQ-KV#Wivlsg?H{7`uOS*n)UbswD$w0!pKl{ej`Kvm_)8O(l-e8#2f~ln)I3e`~Bx^7s^+iPE3tpmW zD$K4+Jt$bq87WS)Cj8u&kpRluUY!8P`($S1i9C&$oB<&*Z}OM!PwVhH$zo76vuh0EGD+?nk7B?_)8r6T~`c z^@M2F%kW^V&mS{E@4v_MCrArrJ&7Q4KNY9WvKNF|iuD!OpPvcw=Z4s@{yZgE)B5wY zz)SM&al68PqTwFh#H6Q|c4ZZM1}Pglp%!*Ytiq7idyu00(Na!i~it2%jFOIxm^1OWV#|f z92flaOu>ru0v;mwB7RwsybKgFtVn+pxZaKua(`k1o3@R!^JhfCJpO_JYnviqIwr^1 zHdL4XCX|-~lt2fzs3}+r{x1VTb?G0X^-rUfUkLTW@$jy$?kAg;8y^{};H(8Un2n6_ zi;&nzDz|}73C4=@955^}Z$UGQHvg!j@a8yA%N08?4>^wWk@IreP$HDt)rGpSjQI*{ zKDnFdH^;>j~DhiCbS_JBtwCwLF1FZZ|e^8z60iMs7nyM{Xk#ZrsRi zEZ9mka+@Fl8aW1GBe$vOu#wvgPxv&M-tAiXBr|Rc#KHh5R@lsKDP%NrTM@8Z!)9)4 z4_YqQ(we!1aJr#;G_F(IFbx~JZSjCrNc^&)^HNaIu%X*t;H-7^bSLC;OkjJT63%W1 zM8c?cL=d^1M8Y&po~fp8XQAv8pagnQQ@5*NEhN|t2x{uuMQf_j(kBaQOXDM{}ZAm#g%SG50a!aOwxwU=)rl#R$Tx0Gy98T_#`JI`Kx4`vY)p?39X6&%;t985>fJ8P z&Sc3Q1sGIG;ld{MXeB|DdJF+;Hf&Ol^&tDQs5Pk>^67^4@wk#6$CPYXkH-Vf4dRy# ztCxjBhYjlq0%t2)Pj^CYCKEKCGw1;bHSROeQ;k->0B4}q%p`5dgev#^0!ohR5+WatydkfMMfa&z#D8lv`$ ztTKJY{E7Azua!Bu0h4Y}(iKg*{C`~x6uK3I=H=%~n0a29ouHEmSiLI&-_!BNquKf) zlBvzsb6K8MDEwThHu8_-nuG@RDVV|6v5*CeU73v3?X;N7FWq3LVsF%OS~Tk2kI_EP zWLnPb590y1lTtV|n35f?$cWx$UT##+%gSV@IRbpal#;szh)7TMQ(>fDVd%e3)+9ge zQ=J1A46=#@&gRAwhFVm-Q_IHE)K_2HZD8zL|AzMHEUsLV#OYmEM{mGD}JwiL{qD)g-&OTiSD! z_FPNb058cz+LJp^$=+ef8hUc)3)a+=yFg$Y5YHdNQa#QAPhdbinLgYSq;25CU5IEb zTZ?dGAMPT-R>Ft77zyCRF$jIQOGJl0+@*Mm++}*V0dbNUcR6CAK8h83Z|@W`ytj7| zFu9@kc7+Fp1LA~m+Hd=D++n_(Y3R3Ii3eQ2ieENEUJ42t`fXPUoVB)|?u6XcOke}z zgtNN_kubPx5n#zyBuvxfney1K7s?F*N}vaMY&QzlLV}xsAdl_6qV+zbrE}LchhXM$ zGmpxd@o;n-k95O{KRPpm@r5b4S6$9chr5~NyUG+abWCm$n|iUHi1mCc6WH1E*Fucj zKn^Nhh5&cGig{<*%f^hyT1EY{fAI&A-merNuoS9-cP96-)vkCI7`cJHeF)Dw9FV=@ zl}inpO>iFuO5Sh5o=KiKv!J5|pj|;pc&pVrvss2Qe+Q*T2 zn4zh>Yz*!IAvOlxH3^|7yYUquthI`hge;|Rd=(%lY4<6_ln$~RU-{TB!cWB||7j(d zg(`M8o^a!<-p&0yI@Td>ePvSI`pO`@^;OsbJAdnILjH41U=D9U?Ow#fKJG(+n_oo( zH@_0Kt4uLuAF3wz3*`Yr$?pcm9ZnbCik1f<;+tJH;jMjC+8%{#UX5HJv0d{jQuPu) z6D#CPOxL?otR6%XWarBWaHp#n;7(W4=_)e=mK`q3E*HvI4aMx6Xon|<1|AZqsf9f( z@DfRv=(Ewiu8EGOmNuY8eGLg4bT3~=H12j4Rd4cmHhJ!52mTF#TJ|nH#Uh=%Z!#_J zc0~~OERTu?dzNqE33t2d-9EmXWFolV)jb9TsE)#goy>QX4we491Z;p#MyCPlYnuBW z5yFdJzwc8l&*OocihSGf1I9mug3zTfGdEi$wt~k2NKOv?5HGmQl~Hw1LlC*&;Wr))kg18lgABhH{0{*Srh=g$l+A4xj*7epc-e?<_vzu`B|2bm!sbyw)TB+S1Dm_fym*YUDo zt#b4aVQ|OiKSk|dMlC;=4Jx;uj+Jcwyy`cj1~;q5rz+vf*4;#*b6f+uhyqu^=|XP1 zj(7&Qw$A8}uj$hgBQxTyQcdwI5~5D*?q}mlI0^G4oG$76Pf6)k0S6Sust6*tn%H&z z=h&fUQvK-3xvOt=F!z@a&u`pKI%Q83CrdGb>3GftQ>UV=eSX=Bvbm(JuPD#O6=e${*xn#!!)=KO zXl*M5xTsZ7+X6)>EQ-1JX1I-Tw)Hr?C#YTtZaaW|vd|E>XR4YZCZ2#zEV-rYJdKiaYDwOmP=IFDsK>p0xw>Q|7PiikP%5QW+$_ z8^df5)Q(6fbt(cJbHs0Kij*N^iraxtYtwOi7`bU8H{HnPSDY>>z4%V04iVVX6VSm7 zvr2YRdnr0=I%WXO=-z-MqbxZka{C|xncNovE__vL>*>ixnXK)3TotLN<=lRjWPc?& zz>?IirZH2Cg*{M62YDo20HvBkS!XD=xvU2R4q0txba>buf_I2|C<0u0s>CKLnPfy| z207*5<~l7^mr@;Wsgf&c+Um4>gz%2^c+#%bZ%X`nMK_oDD8RjTmB<~92#9m zY7?1kG9n)ck^kLB#2sghju)eDW2BF*|GN|u#jpY8Q04@Yo@t~tlnI(GU1ixLSktl0 zi2~QILXrK=#wnTfb(Tq^*^xBL{@l#e(ncKGoCG=zhBm#3j@%o>#B?0Ur?Jh+g0&pm z&_LO3;aba6fQ`WogK%)uCn6l&oQkK&ou>EN)gnQzaC`8fxWyQnq-?$&)#g(!2(@!M zv|RW3B)aI}#-SP$%%iF2wo5Kwjys4qi2+^oGw_5j!s)$JbE6po zU1es(ODBi@%|gyvc~5sjeKr%+zHL>L#`OaNdoLisnv&>PSx^kvJ8X$g`+(qs0X&dF zPJ2z3YBu9Tt8K}?k3$b~Q3!yiE#s6Xs-C2+h zHn0!@PAf{(&i_qOp?jK4ZIyVjWPXd6nP(g_<;7ZYw!qoqF;c7*Zv`B+g6ED>h3z5$ zpqRHIz!jpRVzrxWGrbvog{d9x97}SplALEr z$sIQcS086`iUS3B=5)|K`FZ$^6t4Rju__c?ecsUUFOck6&GvNvIX3(yLa_6Tbj@vC z5oXR^2oxxJDT2sdBz)^#8sozRsJEI4T&#qb_=NO>q%RiyrHagoX9QUAmjRA~=fN?k z*je|Q{3kvO{}wclk$JRNZb`B^1CJSl_qlje?zvUpki}>kA%F+ z3(4K!VPg-|%d&?B0hrNOLm+oL^K@vuU!h{@t!g z;Qs0yFmDy+ZHB42gus=XLwGnoFhVz5O))`KY zNPIyDLu~lt^#kjrb%!`#qC!4ITGZ-?@esL>kRyiD5(xVIsNSVd_c1*$E0cYC;LKc; z*vA>#JaPk@bawy@CEkeui&*%L-6`@;)LlE#X_o6gX~{mNWOrFIxpoFm3LqY3ep-lk zd&E?m_ZdYtH;;P&58AxX;uQja4ngGZRa&zTvdFY~yr|jV&6TNN?mi>)d6Bu_$msUL z#`sBwR4xxF)fap!Z|$hBwDvD5wt05G1bA%i1@|D{kee?fz(SRhT5iZ9Q9tlGO%gW; zZn>rUs!}~W&Ugd@YpM1&*5@8BtN-_^TalIe3} z=bT5!-2g7(866+vUiYccCM68Vhu>3Dj1Rw0z*Y^%hd=Nj`}o1p@e)^uu}X~#XRcaX z=MrTO41b6xEOP1HzF6o}c9kiAI3RpNNLi!n3CRAKDQqBRRNPMx1JipF0amy~z;sW( zFg-sK{F&fC58wfFjRc<(tQGU8h4D1<^o*$e!l>zH+Cby1KEG^840nGbp3T{>7}}-t zK}z>)L?biLB8c2?@EbQ{WN7sW_fly%`di^VXE>S(_vK9Xzf*KJFE#eR2OR9##`{$6 z4~PQm=MhBi1*JDVl2O9i*Fqltd{LNx3@`)h(tz|&f@P%$i}TOI;E41uqV`v#=D#fm zm%`>q?1Kqb;M$sNIFI!=1!3msmS$kOw|Ds0=W^176G`W&?*H#(=x z&A$C!A6i&q7Q^x8-y~jLhPwY1dn+#qp*KGbiVeLLEoZfm-~Am4q5YQ;MD8D=(z()9 zP{FCjnv4EVk^7e?$8lDFs3=;>D*|S-WQ1s_ld$=&fuXK~Xvn)N0<3T0H#StVl(p1m zbL|euS5YQzb>p^%xJ@>0{%XlrLAFj^Q$&AFPoJv{i8WAFYYEU?Rc(N0D%IMEf|}Mr z5V>`g-YOMYWzna9v!#K$yzE0mfYdxMu&5y z(S`id+rZec`S`y6a1T6CP#sV!I^0H}2c=}Keq*u8=DTO+DoJC%2@~2buh&A3O+gNd z*bD*A&xw0y*$c;8Kfs*X#C>h@ee|u#v(z(l zwIsvaAV#Zw+u{M|=}6dbYNsS&o3XuM_1c@95X%uG{zUo?c!}JON@S)&7DiCtFQ+B$ zB(P|@o$*}v(e$2~HS)VKeQ%y0#_B09RCt~Zje%g*81|2Mz@f(HNAzzO*Jugml%7P82@>;+>zw3uj(pO(=seN4P1(tCSj(V zFd3_|je8w}HFY%i6nKeljnz#CwUhdBZ{z|eGdQuo2mQ>wki3DPxi_LCw~uI>jb#1I zeFbajXR>)q__^010bET6p{u!{=+M>NA5W1xK<~k&7Y8B&O$H_MMz3{;gMhvETibNGd|mc0~|(MzHAg-(I%t6q&> z7gGdRUmT8i)P*AuMD9o>HwBZQ>H)4#v-F=bROY{3LjwijYGDY)h&@6ek=++CeR-)Dun4p|&0bkvmcBI?G-f z<}KD7yD!$OlZ4o7hz;x28w6`wuTB;?INF%n4xgy1an)LzRqGT`Xi&BK5REG_MZR&> zI!&;Zs9Jd>K-FRpR;@RR4y)Gbc*5~4y{9k3I0JDgPzvP>RJCiCP*JYCJ z1d*F33Z`kYj4efVtR$470430b>R4H@Rsx&}4Arq=5u0zs@=Mg8z3MwL5=*n8NI~bp zQ}<#d2e+`AnqX(H$Y4Ih3Ogbp>vOekQcR=5=*<`ZTiI|6z!9ZZK@d47_MQJd_NW9b zKQtel39U+qF)u_8I#`jG-8hgv5wB@&csq+UYO|n?&c^W`4z6U^6<#na8Xt^XNG|pB zqv=cTa4;^t2W}?H6(g-hOw8%h#dyF8CyIuuC&}USovn8ng?p=>mzBvc-UO$UaS9!!gl`(A*0=YHvyY8Z1=D9pyk@d zU2FFfjip=uO_C<%Jxs`!|0+D-qj~tH`FT+&ZP@Z(BXE5aRik$;Q`k238MeO!O!_ z8UcTbd<-}1wk2(XRwQxt`QSJ|3_3oBkF%`Ig&}RaFht+oOGs9^Tt+Q~J;SZaLVcb$ zN{aC|Vbq-jUxsKX{&obBd%tiRoCK$yd>i`#VSdnK@1{4;IkrO5UQu1NT=+LgQ8 zg#V0$zsH2n|F22uZ7Uv++r%?|;}dD8ayi6O0-VsfJIUV%~WXf*G`vt~h1 z*yF>+>B(^venH-S9?*t|`DShr*DXJIxgVI3dq9+}@v1SlNr5j2*0dx0qQFbEOqUX( zc94&gHI2k%AND0AXCD>{#(`BItp7p4@cBM5fNXtj$*0W+-B%FH&z`5x^(_}}(4x4n zBBpeJ&h@3!2(s&;0l%`iH{#k;kFQG|HBH0tk?e3B!i^$4u9xq2@|KN;wUh z>z|O`iks`6(v8~Sl_KY!L}HpS6oK~jrzFM3`)7E-NB{84##@5JR-V$kwCJAJ^RhCz zhmH3$cuzOp)DDUNf}w3POUv*}0HEn#A&A_s@f$bclp@oFcR?Yq);`>`#_%^{_*-L` ze=R8c(p6I_U;8<+_?@v(+Zfb8ZK3|XU`?B-KM1@ek6_Y?3%JAWDCck;&hv;U?Zj5- z1w1wIq+djI31(3Ad)=+Kk?E1q!TP4As$ ziHJoEyn1ujoXJZ9qZ{};0XxxmrV*wNbH40B%Z*6w_~uSYefSMA;bmS+lupW4DW7EgL)Th>GtQa=QW_Z5@NKt=mmx z*w(eJVKvN_*l7=f(7H2SZXSW~0Phd7;!O?JeYb>#dRBhbbC1 zO8Wu=vw9r@+)OD#RyLHQ)+p^S_yGnlD;p^})F>S&a4R_u0tV#3uOyC1xy50nAV=wl)fa%3R02^E&G*c2U z&EOa>7#LUxi&kD~Esb}j^&71VLG)tNLWj_Muc7xES`yNGBMC_e>GhBT$@hJCMl+g~ z*2_P?-#I$-W^TXtRlRxh-cTmAiGr(=_LH>zO`0w4QQsY~-#wtApf;Z-aGZ1?({M?U zak+y4f)jI*RNcY2Mov%>oUkv-wHoOV(abZNNVVSNLG`BvPWuq6o)3Jinq2NsfS`H- zlB#PLzvUto)vG>CG>03Faw1vg>H0$9n(IFT_%IWbtnNs_VZ>2Ls?L)TGlD8>M%X`7 z^)N?^@|Xl=qPnSvp?y=s^#<5S0&UfTP7Z|Ql6|ZwxFqU0N&AdR>sW;%HV-?~x_*3_ zqds8?js)onD?0W(bmcyQbH#2B*s{*BxDD|Aa4;o1g{2ca7~1EGI^z#ZrDje!!fv}l z-?4tGCm}cNaL_#bG*z<$GCmL_O%wFQxprewZ>pa+zCJ<*cl`^>P@tE z*5_basAp{Abxv6^Eee@z;f^(cTFcrkMA|kJ!lIu8K2`qm0Ku9bBzQ?Be#?5QQr5@o zoA`#HVfbCaq!cB^Hz^%W$p^W$M0~v=U*wjufW^8`h~{pUfREiGn=1nZxB8J(-BR(J zTU3>Di!02BQ*N9yp@D=}OlZe&xd%BtATi5AF>*R8m~?u%5Y3%l0et9m$mUi81gB3# zg4ZbGH>as861o@6CZB>Zv>1c+U~8eSs1>&J zglO)<`M}36sIXlC5L~zr30`!F-&~-olnc?~w~Iu4u@TqaCs}RhIG*j|C8D`Bq`3#q zb4mxp6L&eJ&1biurL&D)~!gOM4<@i3jwRdwROMTBd4eZ7ehG&Ib7z#Zr(j@ig~kIN4Mm zbETWk%j8KqwCxL~)tb)BMX|7B^ELSDt^grIekGEsyGmTPE_|p6p(rqxp}1c!Y`k1TRG z8p};$x!G7^biJ{+i0IY?k#d-p-X>skOK%4rdRg#xfrWQS(w!zr|1KyyX(2!C!KMUv z0Sx-PMSqXc$D0x)0(q|}?h7gOfxi_yT6e#|&8>R?cv#2RCn&1!K|Dg~LrALb3*xmf zQb_|NA2#|&ME|JKH#G7wQ9K?}SZ-UDpp{Pu-rUM3fe&+=OztT>!_23VRNXUTHZ!Rv zX{O~icTITKSe_Hh^TtxQYeFKTFNo;HkjTDQVU?w+FA3V*)R%#Wsmw&oDZPRx82Uvd zRrjh`%}}aH8pKa@g}7#Y-B`XMmTwwMvzqlS5q&#Bgd>A3)ZY=XxvAd; z9;UKp?F(3(kOGspGl{zyT z`&WUR8~ZolVJzD!@VLL@5vKkF364AxubE0ENmIEc&Cs2td*5XJQ?mYLvb2@W(0n!L z?7tZY4qSHlZ;APjiD@{4^nq|qXOKP=+IC6gG)S>jS>puKG)^G>7mN)ikk-PBma6+0 zuF*g1^aRq{!VP}{X&umG0*Og-0%?TAZ~|#0?y7E-p67Jzge*upvgY|Cnw*?JT33=V ze>9qiX$|L(#)PO>H3&`Ub1lTg(?>hkMm+0DET@mg;ttHbzo)n@EZoLA7QCXOA`&ezOEVVZqz1x|<6(lm%Oeg0n|kO4?Q?Et>7tooG##j>YbB?E==x0In(LnhJoKko-Ohl+ zh+U9ivA%?u5mZ?-A~Ackt0;F%P$nvyW{-9kE^SJ(VDAA6{YlzW!e*PWjydoP+cAdA zBw5s=naZx|Q*hQS{x&9Omh9C7=ZttfMkT*E?>Of}1Cw(;drA6Wb7s}5@!q1az5)8( zK6pk<_C->4pA>SAIu0PAfJUQ&agFDvL^3BN(aUYllJDJBXS{0zLC6?drgfeBkuQF^ z&A%h$wq;1nsic$!FSqxnSakzKo^XJd+j@)089X?RdT;<4`8Vo7+*I8`v;(iQWhTnf zTsD>Qk4>Jk}v;5$7QQ)W6GSFerT<(|A9mC=aoA^V7f}u=9~r-J!Tfm5p{- zVXLj(oC^Pko9k|Y32v9*!%VQwo*b@(TDGF3C*I~9E`bY8V8g!n2;rLc#YYMqzs=!V z?lpGC6WJLb1CrnU(yi~ZMOmL!Le;i0!#iT`@ zV$>fGG!)e4(*(8@%b3>p$IAhN6DyEZ-AY`eCW4BriHQ2+6Gih`qlr{U{qacxr+tW3 zSAmaJt3N&&AgDeCN!6Vyev2O!)vG>DG^ZQQpiY(j@fpH3*MBDPVJ0TKa(5QsFyd?^ zRdC>tJAoH6b`1s$yPWozCVlA$N1)bO1O6$U+zE)sleFF(~@zByuMLs z!2$yuQZ>-uo5%NLA}}UQTe9C55&L`wA*@7NSa6{{80_+{wYK7OqOd`2!bf)z;E4al zNUH7<5zW!aH$eo23{?DP=TcE$7E(vE(kxW^w|}`1X=_XftHBk(r^@1$0Ktr_kl<7f z@mn#VDiwp_yxFdN{u9E|iPi`8AG7cI24k9`H68liUk%)!iq-mYp^xp-GRiF}z=>;SWh3 z06m5zOp-&A2PK9>l811IDP}#->DV(IDkoeSJSf4srt3j5aDoW~`ZCJ8b-sM+k`2<27bUrXQ}9T%!>R6{!v5o~T-H@^#UC!)PMa(Fo<60;he5ReuZk zShYqd-v$V(zk{UezAJu<9~ITB{+?*QZ!}UJRshz=9|+uB^$&p$Rfk;eM*u#(KH+!{Y<##`hN~Q^beY>_yyoF;vFPa_e%*eBdD@wL}GCCD^dPB zL7AxS8XUbVT-uamwfc=H_)7OZN&Bry>nMMe(NX-~o9}IHpV{twOIH})F1)hi3QSIA zca(4xNri zI)4`RUqb3=NKhN;{8fmwHElkHusZ#XX{|b`O#dAqnDGxJn25(Us!mj;JdH;>(>Ww) zw1lWhc-{LZ{GSs3FB9JJQKca2^+EWz#Qi4}ryxZ6$lCRR5Y2<|A@Hf%^aPw0g|eljB8{w zwOV$*0ol0I&l;@oO7Fb&Dh_A(@+(WU1{;E@-5b|aE?2O2CZECAQi0n@vNy)n8w~)f zQs6cba8q3Mos$iMq62KO;-u4U2AqE|UY%tFZ$hxLZxI$3M}h;lIk25>3tYX4*?~$q z!kEe}h24tS4N|N|FhvAglVD6YcHP!GJhzRY+v3Xo$GoxO&f6Jo&gwo6aJx6D=57XV z1lh&#WjnELkL%R#T)CT{IR!IIiEaXWwr&GS?wSanPe6%l0Vj(V8i z>5c5gDagI}u*{}QM+Mq-u&{sOP_AwCM$nk~ANNLZS-Ur4Ui;j`+)m&fU}jIpjmqE* z++e0%GQ%=6OAqNnhc&w70q@RC7k2E6I(rC2JLp+5rGj^Ld+S{Zsr^ z+)TF%4*VTls2wLUs-Hxc+@jCPlRJ!%3FqdoO7+!&o;G4gBC znGJSDXD^A~J1KgfP&A{QtVXng(b<>jLVaDd=IF%V95;;6Cm{HZkm1V?adq*TZll5~L$?0N53g110*Pr0BV!=yXJA1tW4W)8UpE?Oh)6Lqub~7!Iv5AQ}twFx+UIosLF3*cFY#B>M2A=!K!^bTnuMqj3b& zg&q40zxFf?#*q+%U>t=6E2MFafZG=mW-FkRTO_ppiwJCKIKC_)N?;UlTKCAdbxphXRW zk!Oe7U&dyH&h>(%-5XuZ;S7?jtGGTq&;OV=F4=hot^{bOE92^oi~2?DG5Z0-5@%v2 z6ic}x&e^JDta}KY6I(#!=pbLIpaTzF1&@gi5rbj8`NR^nqxl_H(BcMwFS}*9VihuJ zy-BrRd{MT02|J*`tpEmguFrG5Tn?ws*f9XzMRdF?fou21x}NR~PqfPnxL$W6VBThh zN~M4AS+gowpdZXE<|{oj%WmFmisIz#-JbX&Qpy$3D2v%*8Y4yJHx^{@RI?vRb62LgAppyMiKYK%-gg#t$c?^e1~c|Wclxy?CEKQt(`Bq z(|I!{hXX*62YvnS3_R0*vBv`DvU_p63S`~{IuL-d0R6oPhFeYW$XtHW zz+!hUC3zF_eT(ueF)MrXK_Q>7xbpyC?QLOOax{~FJ_U`UY26if0UyQ%C@!UezRU{t zjqXCgkg4Ny1AYCO+K4J}p937@M+~BhrJiy~e322iF3-9WeSzG3w$EKG+R4l|?uWw6 z&tR+tS5Vw90n!@{+>GsZ-Yw@Y<>SQsiXu4FG#1v6Jisb#XenPg+c zG9y5^ZsGIzOs=S}_)*ps#9PHX1`Q29tm!GPaJP|+H7>g-v%HwY(So-FGJmw!T3<-r z9V8s-9W@sw-O2lPGiH;!3r~gpz3~`}@{k+WN4%SW&m?g70k+y3%i>dOJMIU}+bV23mM>pEvwtN{lq#w1$mN&K0&y_Q zJwPh_BPms~D>Ak7cie*nkLWFz7Q2UdyLo-|QdRH^An{c-TG;|;;&44o=CzAC_XuxV zQ5TZg{wRQ}z0IuJ=X>oWA%wM3$mpm%c=i}bP>I6)P~`~R;{bMg8>*&o1-;`x9%L=| zU&y&9fL(=^8QJAE(31eMe^4lEZTeG`J+R1|oc>p3oyyZ>TFYCfmX;qSpTebkc{)chGnS!yTJJG z5Z&reB7D5R6!5|XJ2-bw+XiDVJMDUsorg8i-czsd-+*PXg$;b|v^3eD&ZiCi_o;HD z!t;fV{YlhtH!rtS<|g*lxt zOz}UYWn25NVzqZ+8-E&;ZSA}8?fv)ow3ELFnPwN3`aI*@=i%vv9sCV>zc%dhKcJFn zw%%<=o5voA_GNiaaeQ8J)D&W2sm&$SHf4E1IQ+B2n}8Q_Ul?e(@yh&h;jY@4B6$m8 z@ZaPgdv6j?lR^>0r~@U!{++)hoi9_?0bs)5>6KUq{vV-nulrXz;Ejp8?!bK!q@C_n WT)k0j0Zl0d>OLAaD~1xRA<8;b4R8#~6ff;obb?X{(~ELkHdi37`h-}imr zcMB8>w9o>D7FuYbg%(<9p@kM&XrYA`TIlcdc_U4BcYKBK?~i20JD>OF^FG>Rc6Rpd ziDNpu@}1>UCR?19%XhiOiTtzA&6Oq=*4*i&!Wh4>*7W3rT&mA44fMOk!rFdeY}=-5 ztg%LSIh##%=5r;L=_r@-Dv`|;ONDWb#pH&?a!0Y0DZy(#*WTrJ7Ypn7h4IPB{V7#+ z+xy&NG1UWC6P6YxCMS26l|pyz#e7+Hx`lNclM}n#&b&&|y0Bhja-$U7cjxn^T)yPC z7fUHsDok?LOs+#xnXY1CvR_y~JubN^8O;nZnkkGnC?>~urZd?t^itSxX=(jCeQk3!5Tdm0Dim6HBg<90%f{Scs>`B*#^@Z`L*wBGjbweQr%phpOpvm$})R z{(&B9SFC}G{8y|2`E*_tXDNuYd2*dns)w`-QCC2zMbx)hnjGJe>g-jNG_f?f7NeiKv@k8bK`J>`BQ3X)TQZdmzLA$K3(Z_R-CRj+NW5%DGG@ z4x5REecC3X!&$RxYLl(=7dN*Q_67O<{KEbnP-%kUSU7-69XOa$YgUyyXnMM)ZO^Ys zzi=@6{f1vSgc^KZCx~}XTWIWdE{=mvL|Y4?>-<7JJJ|qCqoOg$+0&EbU{Y3@wm2Zr zJX^}|Zy~X#V1Lm&4tE)J&3$wZG#JctVJ_mE=NIOq>*N|h*I}oi#D-mALAe9QW6&pl zyM=%|eqj-r>P;dzuM14KU+5u!v-jeM ztM0vNzmQ>D4cIO&VfPDOk&83rnv9cND%+n9nmfCs6o>=I|URm%9s;W%oh)J#+KoyGo!AkhS z^u|KDZB2-duZdL@(1Sbw+3+gz8 zPJ;5oF*+FvpW+uzt-3v46vmY@&6rN}3#T)ttq@afHj}9BE~Zn8L1p?d3`=z9RUgJ5 zi0q72k)e*2eEY~Fr4!c&d6lWM^G2|g$t|B&khB3 zkzcr&K_w7WE5=}{VxqQ(qoho(2L}OyYj#(xsQhA=MB}=25N;-}%OtML{lXROnzk1O z=$lf|Fpd>7~idf*gESnzS|Jr=t$Y^NOn<2o;XTm^?;V7tiSRy&@P5DWO?FP( zyMhsZYYDp73JmSP6OHiEL0FmyACm|l_Y2=;|FnHL7~%H@v2`Xf!Y3-f;pj*`i6Fo4 z7k*If(_O6Xu%|=39Q@cVs}@*MnjHeh^z{1BUrF!dx9%?;y}W z_=P`KyLl@V=(~R5Jq9`jfi5a{BD^}>6kuq=2pcoi6VjievHf`vekQi}CAJUz!e7`a zZQl*X_SZpdoede=hlp(iCLbZ3zxjo~S3Q3a3g=_L@JThCI^6u$rFeamU>Z`r`RZ}_ zk7zjm9E6ey=TiyiGr#aJc1qiigW>#p5L;&>hVywPoMD)JfpGrg7yeuI{8=cRFa5$- z3}-5Sorcs3gj2$;n7-i8PN~jfqF?UR^hoW0k*L%f7$FWqt{RwH6YY#mjX}j%YY9A- zrk^hZ5vsKZ_v37gAk|npsTmzbH4fm@PEzZj@YQ&6EB$$75DZ;S5XeLgY1Y)#Ra@F&rR;ZH`zSL+Kr=4n?R2?RyhK$&bbgwbGE zsv<=k22m+C6DJmVBgN*lp%hb4@zoXrk9pdaMiOe6^#%W1e>9kylWm>C$X@b7E9zCxUCfHv64n z4#9Ro;j0NpdA;D$}YL-T|ZO!vYrZb(w;Zv6y&?l0Hfu3|}pmJ(dHGoF7*;UM~ zXpAFwb_f{n$Zy58%W5o4+>xHD?Uw^eC7n z1NnYlTIz7Ubh9#+o14mYR(1?E5AdiO^Tmb5->9*GHdJFFD!y_A9`m#-k2Hd6ERtr+ zo3lC9XdqbMt&Duj!UtLUJq>)X^H%wlmHcwOyDRs)G`}nOrg7Pbuc7ioI?&I|I`W zU3?x;J$tmnEGo+};%aDFQnaBg9jN%KQ{XXAyYfgUC`*?#Ti%>4D2q#Q&FYfwh85)L zLE)>k_&42?Q%IhSpgfI|tK3{XXelO^;TEAT-`A%HCVYO?*OA5Hr0@JxFASo>WW|XU zirHWKXhUIgsQ4-`@R+Avc_b1PreB&ZZ_bt!ra-X1D36M+0v?hSQTVDPo=wMO6OyDX zsAU=@x(6=G^pH$n{1hC-}F#aG7)JmzUv9=i_; zahx<;-khx{gio-($ry&@@jxN`6Hxf-MDb_3BZpApqGu4-s*?@(qRR_x{Fo{ZWs<^Sp8!1ks4W&386!veCLgThzmif_|3`GjOSPf+J;l+5QYz#&qf=aVLCvSeO$?0x|-Q5`N6 zJBzu|;Ud~lhl^41)g=OtdD@l7zJoekD$SNRXB+Bp8NqtSc_@aL1A@S>K;f$^#hK}g z1VVvdC8(=4s%>}d53^ItGF=E=;gN*gi!R7<7Mim}MLavx^F*z+vs)5-RL>XJz&xtS zwc^r>!f0|GZK%ohsQBszfyX@U$|J3yCO1m6<;_V@lbZ;x`MTt9hBf561%sLtJ}`05^k z$2{%IBa5Iq_e!(n&6!Gd?ju+a%|_;WKfn;IwV~WpTOEu%1bkGEZ;KBr03*l4w4of2pyI3V2t4L#R~~r;<#<$@EpN^= z%JCS%HKS(xIN%WEyC{71J#lRMC7F;QPYCKsjgrR=vs1auGxuZ@hs{dVt9)O7i5Hke zQ>OaBN_`*Ts2V>I2Nr*$##6MR8c(C*t7ilr^Rz3EB!X)EP?{}o&bCzJS%USGkrAmr z2P~xc5ei@ZSiG7}$s{Dj^MZOoqvTO=lUs5V^;l0N!&7sK{RtpZ0e&iG7G)#Ai?pEt zFQMYAp9wtXX;&V*4hrydX|}vM+fjg*39cEA;445N>|dbp)i1@D>5Bb_!hTgyuW3}< z<~Stk)Bw&4JgLfE%AC5!xs_4*uYih1{%f(cxSGgcrwt>20~KHWM&L0|yYkq3F!J9@ zv*pd%o{_&vaLouD-vS81{|<$(elPA!Z=?_k{%t|Mqfu>}A^641F|9efta2GW4qs6j zd#gVH6pj6lVra27vA;_j#{M2EzWS5EW1e>9vGZW;f0ky;o3jIBf1lu*;VFIq3_|}4 z3Sa$IyqV6(AQbwCg8E3KWOY+5#?pAAg5ksLatVk1jKtyzQwI<>fJS*FvKU8JR{w)xQNaN}=q85Qd9(v20G5$a>wP^eE(@zp;B9`m#-k5q#~ z{ZpDPZ_bVs>QjPi{(lDa89YMPf1&WzzolG5o+=I z`S3i)00+cr27597QT?r>WmNg0bA zWsu%-*n)YL<7F3MqhibudyBpiVF$6+h&@pFYEN-$`XrH%5PJz~Z;g_BqxzJ}=8K7Wsccu}PJd1|vm&G9R=-lM&tuXo zYi7vyfq7J$eZ{2}jnQU5+EAPQQSsFQ0*`sxl}B1ZZ4Q)X%bPQk+8ji%zOnln9vHzeh^QGDH=FFll3kcS07>8rI5HJYfpzzfqacKG@iI4ydf@;(#*&Q2G z%UoP%=B2Ry8rPUwEc8$3OTCz0){h((0~-~gN$f4!MubCYLlK%$@l}h!W1e>9kwZ{~ zR%y1pIW-g^Nw7X}Mq;`IPzZ4t3SV)lCLU8)`y`Q&5Qhuu2#u1k z4ia>t@Ku+1G#!#fNCH<--5OO{4(P5x`~x{WaFStH6ZV39Pep?sAfp6A=DQuu;8UZdKk;-Xrc#S0pVd6{fSWx+}- z-aiVBF-`zFs>O-o!D4T;IEgmY;$&2Ob&9}ao_6JtMNo@VrP=c4>_II~BUsORjm-6Q zfFZ^iD13FMxHY|!N=S^e1a-DX$$r6GJ!*l=s+=kD^r^J6E>+BQR*sKz0FG*Lt~jvR z8!gVG4YfEQ6<=K-@R+Avc_b0k;zDV*yg7VZLtR9$-Y-U^dNHt&;t~|Tx>UTHPRS%B z#btuJT%+2iVZY$>SiY*0n3s1;E2~RC=Ba#sS@p7U1>jLJt`rv*eIv$Iw4oSRqvES; z1RnFWD~~jSVq7cDmN#cFig6vm`eEcK$X*XLzedU32-hJZ_`Iw-o#*C?>C6l~YjWKZ zmP}WkHhvTMs1V;09~N~Z!~?XU5D%i_tA_+0^Rz3EJc2@eTbeCz&OQ|4VS@GD$Y|I; z0yqTu4hmmADvnLRBoh+kF+n}9QS$Ig#%s@>oS65_LnW{;4x3T@<=79$q%I2^5*PIO`alHKW!T&;iq8% zS)M`Rs~?JQ(>3{oWO-Il&uLWKE;w&ArSOg=W_IS~v2GRDSb6Z&G`}e!?@jinI5k$) z=0~uLYV%|9WkqAOd7d`Z<^@!I^%H@|JnhOOpP)8Bm1fJEvmdp2k>HxuX8jV(AkfcH z`0D434D z@+xhp%4?|j>Q@4fdD@jn5GuHGa}VDfQ1ylLE)?4idWMqnS`Wx zQ&4YdRNHjyD+@7;nt>3d%rkf4!Trj_e9Zjhi}LJxac2p4Efq zX+ufgLB&^p5O~bft~`zlAtDQlpdTHv#DO3BJc)d@tH^EiaQVUqP&6AC(iW&j%u)hIIvh74K}0=HP{Fh zUu`V#n5SKNBoWkL6KS@*Ip3fLn-W|ZoR35`1}vnAqwv*c;?;CYCLt*{7t|Du5-H{> zw+Bk_p;QqwIdY9{M#ciXKcS`A0^q0=TZ#jVypdun+E9wEQSsF_0*`sxl}8dmDH76b zd2 zZ{7~K5_?BDh{`ivoLT`Hd3K@=<=Gh(U+p6Bn5SKNBo>rshBRB=oLb5=lVF{D;A_#J z1$#(VgThz4N>7Fe*@YzAO;EdQl#E=L;8g~kL^61ZDpeZteMhwiOrj#~DQ>K=j7WRY zh9d2aim&z&c+AtTJW>gYw68Q<-kds$v>(BG|k zYm}T^oAVus`FS_HQs%{6l}+qjIhwu!R8)yW#M0t!l&GZ*m8e6-SM>sqdD@l7-h)ca zmS)SFQ%@!45UfwGLvx%95Q3kF!dLUfo#~AfLcuQ()IyDtrIWMsWt>s+J(ZPD#m*jF zXY{$m0W2E*A~Ci2n&=y7!{{4P@zr91$2{%IWB0-6o21$D=FDdFhZ3xpP7Xt|87PF` zg2Gp=;?HzP4x#Xqf?A?cdff!Cs(CzKlIQjfDGoGr^oIczjlNARExsoD!)e3lk3hv& zM+!XVX;&V54@Q5KG+W-BIgEZO!IiZgLvlPCAOzoz!dJ(LJJTB}gn~~AszakBD-2)p znx9uP$edT(R0+Hjh-lzlVr5Y^fxEO};N7VBsz=~4PrLHib1?99kyB8W6Q$Ym=FF!mClRcZW2`RolVJ*>PC?7Ebfy6>W zohGQ$HA=r*$J{h|3@T*uOD2W6PwIW;3;?65oGHdu97dJ1XhT)bM#Wd>2t4L#R~`uj zRXJChEpN^Os&XE|l~(|Vqj^4Xkl+FozPeC6nhwb#B*8_3x>%#+eslp}G+2nXGTKmu%Te*w6#|cW+LcERK^3l)X3LwikSbh7 zu)ZH1iRsmVLWpZn`0845YWgIRkPz1i>Uxcm=Vx__nIW2IVG(s_Z{>cp)vZni-vDG( zh8xA&B5q{3i8hqsW>kE2i@;-^cIA;lP=;Hj+4AN%l;Jjl_4BjgdEO2nM7RTmukI9= zrbp5UiEx*o?$#)I_e8G_rVtA&?}WDC)!1wcM&U^DR@o))fk9M@d&P;x-e_?jZK%cl zsQBue0*`sxl}92$ExskqmN#b+wRnJF{qD)A=spNMBzXvhuf8pwO~+&tlH_4QJ)%)E zF*MuF7+D^p4P|*86<>W<;4x3T z@<=8q%lD+&^5!s6lzM_-J(o3V%1^=u(tICFcOIZ+!;vs3<=a7giWXlxJx}QJzD^S3eSX%+szs(g=$3 zV`;X$IgJ$Md4lz$q*0K40cgna6BNGssrWVBl1oUA7X|f_M#9kw8$0UrMv(%~?z#UL{yxO@^iU z8gP){S15e-Yw>70B#V#)uM6r8jWUZ6^paW!xgKyW!HBzeVRa$KZ-9(y@LRFASQ`!A zqzyHA3l(4ePT(<5yYk2&sKM{0+4ANzQG>S$UbP5eXrAu?2oe5(!dHJ3m!?P32#N5n zpx)Ccxeae}dwWv}C;QB;3eQU*0&ec|rNmsk#N{r>YRJkS@h6x>)%dfxvG^M`-lq-K z_y84O{YBt0PrLF+C8)+Fn6*p{)Z|Hib$!3Ilqb={{S>9$3Ml~3c$$mDQzgnXQ=q5d#i;ZG3MM2(V@BxaHOF}!f{*-|kt!_E3^s=DxCT>zs3tS83S zuVw_8L>uk{lTks|4S^#G1~sA(G2wyi8d$$2TP z1jk;0d#@r=gYrs|?k8D#Ui;!=i44*q$~NVh2=^Q$yg$Wx>sHk351x zOqXWMo3n&M>_o6$a)6``BeLBYa0s#s3gplb$EIJB2?;V&P_r~jW~pW)3o_Ms_DP*t zurX7;39SJtD#NZ~X%ROv>_!{PusbS9pCNGMvf$>p$KHc7>?zHbH|H?QuouC4mTG8@ zdjo{v_d$Wo8RE|LMhc6q8r8NN_J&oj;W#Se_GBvigM&=e-FP>VOO>)MAQdT(niixk>Z@Kt=K&biWxg0&kr-VT z(1yA!LCCv-+)+6^d#=s|%z8sgOSNg^R3GJ^6nO5Q(OhzW~DDXg+^)eJ6h z>&dz%hZA${Wh#R7!X_$6R{U5Y7(x1ILqT$=AeDx|kJ-LuprTT&5KD`^ zkz#;0lwu_+NTwlhWVhhvxX0duQXD7EmN#c9rSJ*XSDT?Z9uE+LKLG`DX^1=18!3c> zKS@w0Ym^)wEd$wQE)t2liA8RgD(iD-CY$Q0>zFRfn<9rcRM(!}0bo>sJH^prkO4zHnhwb#B*6oMdQhWe9%50xjQL#bU3gUl zV@nL8=46m#wmMPw5TH>JzAfe!Z6m_Nw4n%(pn~KV0!I=GZjO7T5ES82X|}vM9Ted) zg7rMa2t*$T5;A-j1@c~qPtzrNgk*R^P)}-<+=R6tuX4_%4#;$fypMQBPA%pSbRc(I zUZ*v*pd{q!!N-tZ%|b!}dAA zA;^zVAp3YZ0Yki*&d4AX`m2I^ zO`~MSavs*}VzkuI$wgiI{jrvTB3|EKf``ScULyMyOrk>kTHILFjS#QXhC;l73esT+ z90@A8Iqs24P>A13v*pckDa4xu>lw>Y5`GI7kmYwMkQ+mMo360s(st{Ah+_)5{jx|Y_;5%LGXqmuklTv$OEN#3OmC3z1OWXTXX5?63@+#`*k zB!8A>%bU|pN!}+|Ki?Py*$;q*9DhN9d>P``bW1KFIX)EBM;fKq(#R81h=C_!a`QQN z+lmT*11hS*-^J46ZB+P}HdNsgRFDEg;K(z<&2f*t2UYl|G+W-B9;)yu!IiZ%Lvs8K zAO!y}6v%2J?o4l_5DNZtL4Bc7vMK>#lC=-ID67~6@+KYCf&1h3bJE>h8%05Kz^usHMA}h zXhU5lqJnf60!Q`ad;+GYGUk3S_^K4ov?f6%uGe zL2aZ_lANwSRYHPKJl@c6<6V0TN0L52??>2pmx?MIbF`@wJ(EpJYi66{8>K3xvYad&_a{2nNf$wJ(j-bf)7{9c0ETcafS zYSM#-j2=$ZF0VfJ+y|&=@cW9TMb`wsA8i=?{-_{fg}{+1f}7(Wdk+SGpfp?FoIVDB z5Wzb5p*bE55Q6^(3go2_ccwQ|2nAm&s5*_3;Zz+m%41}mVQ&4LJ^{=g$l|G&oB|Tc z<+t=)RS%P>60^mP#oZ_|hc;AVE-FY-A#kLO;O4kTDnTXYOS9$8$x(>~1nc3{Cm#VZi{@fvMGf*TYYj|40KeHCh=g! zU=%r&HdLe;738ZBIC4jDbKE0~pdzi(YA)i#tLz3dL@;R z7>5h$2#u1v4bJsJiOS;4W_|-iYj7k$Q4Nj~LyNW1U@2{=!O^H7TZO=pJc66!9y@UN=A`bpS$X- zC#na)X!vO{wg{W>Gqhp&9x6ywA#kLP;O4kT0>SXJ(rkHi3JkxGU_A#hEX^EnkRXo& zc`C%C>5wc!5)=fbG)iZ#Vcw^P{IX)E$lQY%NzQJq-fk9wiz-kOTZ^+%piCPounZNX zs1P`^MR0T6WB)+~R!Fnu%~4cffZ$5znqgS31PlTkivrmx#G&brBtioCf;wKK+Gg;f zAMPL;krp0D0fKMFht!b#ySA})QS*#MGr!Lj%yD!A45NyiD9)@Hj3Ot|hKihw3KCTa z94RBXIqs2AP?1xm+4ANTsmN&r*Q`G6(_sgR&Om{j71DztKvp4%&Jxtw8YS~ojmU`A zIxErGQy#!s6Dl?2bNSv>CQ&R6U|4w$pixoI6>}>LBg%QSp(y90f{YacNAd`6j(emK z6y-u`w!AqdigFRbdY)plvC3wz2!7Y~0GKEmOq zWhgzr74wzmJ|i&=OWE;(V7{84%NM7qD_|Ox@45WgOlkm&{#$YUXW7z*SSlIbQv-KzfVy2Ym{73aHYcC=wi-X%BsW4-Kf5xeiOiG{NEB|i?NCS z0opMB2T?)t3V|bu1UJV$5(visZE3c=Im;RU!vyOq%CIya0S*#;2L-ZLh)2^QS%f5b zOi+(&luYN&>5|tN7VlV(WN4`#Ol@;Ns8<8XKv139{x0xQCB7#N>LXDE=3Lj0NT$RQN|%Yu4EqvU*mbRCH%tl>vWIPM5Jw^&~}AN&HS zX!O4nON+0G{#DvA`qxlF8VZ3UBLp|cJ@y`q{@2oMd2?1W`qv58=Yyd+z5x(|{|yS{ zpAdJZH&O@%|E8ec(x|rWc+J4Dq6tqmigM?T>|dpPCw~2oGM@9`v();$@H-epb@;tF zv6vej-lh$8cn1~ao)9?FKX7y0BaxsEf0Sm+n{zC6c$Z-P8pEjQz6U%c`4bA{oe#tx2f&PaA87an9GE&f2+#{)wKx?8M87VYMrtz@c51%LM zMIwAmV(39dW2R5#t2vC<0yZkj+G1~oVMG~A8;UXx738H5I5I_WbKE0`peW;|+4ANb zPf;citf%otVmc8}2(c~-WTz0PrcV+H2{B1flQl~Alv;jXcR6&(^`l>C)!Yjol!x4 z3V|an1UJV$b{$k*zpg;x+@nyPV|DmvV6V&b+C4(*} zh4gXVxSucLD~cR{CTG`HF1LFC77cw*F}28=(D$MZL*E+}WStN=Qa^BW+++8_(D#*Q z%bRmDL*I{JJ?I*SnYA_F z04y5*A!2F~HsROOhT+$tf>aX%NAd@5j(hAr82)T&w!Ar~F#I_L>+pvmITt8|KMw_R zO^83!9XW);Um&Q38l^Mp^Q4G(Xmt`+SzNfVWpQI=2XKIlDzHebEzU-P2HH@8MpTe) zLg2{%z|C=w41x+YNwek6Ih6_=N^m9f|FArp0fY!GD3EbNT$&z9BP2pnP)jsQCjarF zAuJWBYEYTqGSj<>a(@>-uv%1y!6d3io4B#~8#NB64b?aT6{MdKI1)l|bKE19pc+R> zv*pb>jcP06fGq7Okc&cmo36qf*chBN9G7_j(cPjR3|OX zmN(~gs*@qO=4CWdY%NNR(7eR{Z3_zo@oGIp3AV!w6XhT`f zMg_Sm1ddb^+#L5vAt=ka(rkHi&Y~>m5nTD|?(js<2NE(|fCAYo#HZwaRa#2s356@z>#2ro8um-1?9O?nk{e6*_7uhf@}US0bC6aknI{2$aNuo z87kx#lI=P{U9V9l_oADJaD4Za!!&$o6j!Q6nPPwCVtoV9QH5?44^~V@p_^z!g>FU# z`7Q*G>=WD^_sAls(5=#Jd2`O8LbnmTD)-{>TyF;$V%&iOIWNSm>6KJMV%#ODyEUrv zB-Z6?R4GgiQ475HSkd4ffT9}QD~1+pqrrW&p$7M(f;<-jN4g1aj(hApsKK|S+4AO` zOAQ_%xcVe^2#OB^gU}yBf!r42&2&Zvq0k=|)FT=t*Bh+lW9az$m0WF*=F+?fQB>an zFdF`&Vr&sM;Xg(jhW|J!$Y&vNq?F+1xJLrP@V_U`mN(}-hW`Y?`g$`g%_o6_1m8!2 z92VlybVwE<37!(v(;C&b1I{3=I0mr9l`<@MD_<~Qke`ugSiD$Pw8>myQ9T2bs2D#K zHx_*(#%TG`smxcH? zU6W5pmKO!}l19lv(du?3TGFZIaztPbc|mn~!p{JT3h{F>w5S^)UZxF&cm);Yu@E@Y zN^o=BW9LC3ekskCH|GKh@hZXkpcsu~EE@c8#nhr}f`5}X4E`-tkibIVNGHL~agW^xga5rWTi%=t8T{J> zS8n2lCixCf2>%Z#kiA0uneNCT6#lz{dQYR|L6VF$M@6(1le1Hm4R|p*WBe*&4kw;L6ze=;^&AEs=d`Pf$9{~G)kW&@!92UmV)5vX~5AvFZye|ASprku}yCbltL1WKFb-B4bcN5(|MN ztAx1n$S0`C+Jk#@E}8dgZx*Dv`%4&7xz$IHap0mVY$moAZ==HIw4n-9P(gMJfg{@lHzT_Ri+~DSO0(t7xr{1o zMX+AlG#tyV0fPYBpg?vDacKG@iI4zO1vO2hX$2yns6S65kild&0JW zMm5+@%q`YNgY9WU4R$~Ui7f<<1QXnh#1iZ+m@|vPCh!+g(pS$yrG`XN#yZ~*);xE2f!vO#)0C;qHn}Fh&B}CU{sLJ zLg2_F!Oh5K!6G2WA<}GlbFQQqwFK+;&qvF+4ki$$9tCn(h;!3735A52BdEC=RaqE? z1l0qHR=j`OQ~B=99EIi4Ju?z5g>t5g%m0}9LyniCng`RUKJ&$$6_L?r0d1(yLR65| zLf}X;!Oh5O!6Kl~B5Ag~Iag7i27;?Ax>k#LBP=1)Vid@8A$=GMGQFECRZ;Nwek6 zxth8hPOyFgI}+0)0EG}oqCiFqaccS`k&qBe1$DGW$*VMV`Hn!zWYav}22BZ}d=_Em&tWh!oZB6I| zOQ-tHd+nzH9M$DiabQJabUBSS)a7(kkk~@tNHW3ANNm9(pv#%kY$4|n~~^(ML>^BrP=c4+(11pBUmp;7#-isVE|FC zK!Lm$;@b2~Iw4W664ccir9TJR0YUH)gvz7_FD7%k@Q|stuA2Sf8laYA;TTmbihPXAol1fO7 z+XQvHM#&ka$?ea0xddKVU4qo`IITt&mDjhXdRBeS><(B)g}GC_S)mwV?xGEaxf>Ov z#Sl2MRB$uWVz3AZbFVa8-kh5#%zXswGs^1mz8{7V>6<8!Cque03`i>^(gT8eP@`mz zIV_zil zgGE4?N2S^F=G;tS9wS)qF(Y$*9AJp?T@=WcA#P2tq!JS22|+!nQ8E~lFFpcAGl$UD@vg8km85ZY~^M&|kfz!2jvD3B{d+?rlVB_zg&g8E3K^vheB zY>`S}aWPL6%r}QubF$T!p#KJFREfWfxy9Wm@iA?v#3!gAVTQnw!h)NTFoQ)viGND7 z<;}T+N_js6iGBtoWcU{fWX%wtrc3e&$?&0E7r@p+K$-acO!ajgSaq1vO5iWN40^4U2e=NFghJPI4^O&&7-oURc|s zqQg1>M|Bu44u;lY0&S?nL{yLE4UfiF<1nY*i4!&Z_eFRVsnD^WppH_Qvih!TcALe3~_4uB$1F1 zTM24wjnX-w5pUv%43i*3gGSuDBD+jQgl&L}ijWXni?$JADs3pjG*plwL*U3(!Oh5! z!6G2ScG7HlbMB!C+Y?;L0X+=M9RPy>JEA~#3~^}sBZ-gzI|*uMjS>Oy;EwSl?#fqC z@!^*2F#o?GpP;>19@>mnk@|hweqy&zFZUpNG zu)}!X9VjTX2MVOl5Pz6ArYYvBQB;*dIs~D;mjL(HKzUiGA%%B!IMnDZa^YJ77Y|N~ z;$s^f_@*u%%T87Mh`;nELGJsC3!D4>=^fHz$bUZ?=~rw<(Z&8iBaQ=5U@^4#MivaZ zK+X*m5(k1vrDMr8lI!xT@ne2+nj4doy7T!`4j({n$Llmjbucz!t{VR*$76$h zH(DJc8*9071AH$TFX^>ct%|A+o0qD3Hg1^0Duil__BUHv=dg8?h^Yq56~H_KCUoMX zS0bI7FIyMjf69_vud|F#6z59qe1%vo#OB82Mkbc_K4cQc+v!E+h}k0iPxkx-IO1#& z`1nj$J3hFDkAgSiZ)eTqq#)U%S}dkbG@VrCp&1^EZN6$|%LbWT7rxxsS!#!;9v5pH zTg0rDjpK{>m>J$hDyk&@oZi`$@5GLfEzasz*e&qA(1}RlS$2yP)e^Ml)nWJ_St*E3 zZe&zLM&MpV*;`bHqXj%SMt?~C*52h}I-twVb!HIg5ol{nuBW;?+dEQ4x4o>g>PT!$ zZjmmP`uDG?DdqF%8Kb@KS$Wk{lP>jTYt&IhOyEN=m))qP`1{P{%P%CEtY~qh0@r!?X+IU6lbWxd8*fM`DX<^q++o%H!s-U2aFY zNA=QEas#)o!{r`>*Z7Ob4pdTEY(FcxRlZ#6FPDb$-$zH|NUgJ^a{Oab5xYyS+}FN> zhn>n}8-CRFyUKn2?Pd=ys(x(8!H9h(lk3h`zy%GSjJJk!j0Jw(RG(6U-IPCDcP1-8 zemn92A{4$RhsNZ1w9VXp*FC#biGObBuE>a919wG#9{aHj#*y2xsE(8E8&SPtxucXRAy6%$FFx1R zUw7gep;sL*;K@830z2{vvUUB)FQ!h!=H%FNse9(W>Lk`DR$TEQI$3+l8INMAHuznHB1E!g$1`I@*^b1A1DWfi2GXEY_fGOD4oUnI_;X1IvanbH&3pQlTFE8QR49kVN2>9Y(FzO0Uru=Rf@mWx!BN{ zoGkm*DizO@t?LzW&sSRNEEIBxl(FHdpg4md-!yrx`>#Or}d+#>!+I3&EfLa%?;+xrILLF?B4bCCFMzw|7=f0#^WngQ)U*$iY!mS7PJR zWK52fOb)5=c!k07%U`ZbU4_;&lk2L~a*R>1hlMrY=n< ymf|ELiI>uwr?**}-gap@IiY%qD5{$QU8-)u|H*OO)6nOw_`_GX;s0{Stp5kfG{MOL literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/changelog.doctree b/doc/_build/doctrees/docs/changelog.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c36977996c27e205ac4510b523932592ed415fc3 GIT binary patch literal 197265 zcmeEv378yJ6?IqxVc&OX5|#v#$t+pfvv;M_NyucNX$a6W-AQ+4W_tSdOctP6ML>30 z1wq6GQ4kSS#08L50c8~sTo4yfQB+h=k^h|YYO1TNI!G4e|G)45l)Rd{=iPhHeXn1= zdi9pm*YC=gy9WA8-PNYva=uU<#y@)sz5T-~>y0|2vc6Z@U}VRpy}6!3|H{5XwX&gC z*=S^Diy=dXEGw95soa}rX=-h1scbwqvsvh7bJO_B(CDp+l}+Ymwgswh%`X;tXF@ z8PTz2*MKo7`4g(;0n=5e>@&AxSiaCzHaX_5>^rw(+uT5Zd2zYi-&^i4oKWr0nf}Ut zsr5RBvI>^+)yn=}W#q`>#vNPu^>0kenAR~Zl~Ki^9h(i_Y92GbazJsD@QsO;1B;t> zY&%%<#?)%w=;E-NvgR?9plnQWvvA%Cm8Rn6HB8HxHekjUw+P>A9n)HAE^b-7)jVb* zP%Xu+I<_2it96WOTWfLa8mtBWw^Z7S+jI;atZCzl+lH-Au8c2k7rrs6GNHJAO#{e6 z!^GkaHB8Hx=E|hvj^P_EmC41O!Z%tg2Nib?-)O5GT-+smV_fBs;;!Kv<12?2cMIQ` zP&ur)dyQZ7m==;bytqg0UdtHOs3VGdc5FTv2jVJIihI@FX|7Bi=-8yISnAHBhE%34 zs!WeIP1QmdtI4p+475x$y~-@KOeVM7uS>~}Asri|(xG})oZ|W&8~gWXN7a}@pBd;a zb)mT%R!L=sp{6%Ajh&X9GI!RD_R5^I�um%G}P5q5ZiftaX)n9YcN7mH8dRa{c|L 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

Du!2@K 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

<`T z$f{-KYqHeN51TSgGBwU6LsHjSX6T(`Q{=T$gi#6iGN1ia39syO+**- z-?(r$gAeNX79?eJt3(PSCo%0*RmZ;<>NbnYp9I5U3)Ddfc86$ZnlN&4a}~$2whe1n z{;GIC1eLa5n(dvY%`|dPbyMT)(stX`)YSS8Wc_DiY&f&Fe=EGjS_klwY1`bIntD^h z96x4?agfmXvDTxE>i~s=S|LTT%g6C{iJP%=+$`=;KEFBdlzMkL^*CL&aMVNP({g_0 z-z_E?p~C%D`F|j~nCDn!p-5ov0YTLAy-09Gqj(1kk396F>C{x}D^rF8TChpEy~eq3 z9xwyTGqY>VeZaxef07{gJ3%&qo}T|;chz4pMeZrXkgQ}=7Ime23k*-#hGkj)=vW>IU~J&?sb0yr%CD3Y>y z41X&lX{shmsH=Hg`G2wbdJ)g737fwHTv62<#XTV!*%o7^f0Bjl7-60ao&px4KaHep zo)Os~a$G5|q{q8aBeZ9Qdd{M3Anp2&PRtI?jh!>6&&0952ehOAjz0(8!C(H9+~EAUPUfU z`ZpxldMs#=N3uu;3dU5#i+-#!ue&lDXC?MztNw?w(sEfc9A~|Od{jM;9*7H?H*pgJ zy@dojl10IewEm83RIndTn_=22Bc^UD&b)2uy(4<>T6zjfHIIU^y53mpJrVhrBeDy) z+wlli-`nQ8sSHg>HYRhDO^xmRJmbW{^eyo!V61ImTM^fz>t^-7$fvEA48lG@zM9p) zCC!IUnw=M18mLSS{igMisAq%;XR2v^tXvyzr&pFR|3OLA@_&((%_kybV+8ez3HAF@i z@axqqvWf~XiUhm1@t3okX;dt}*TfcAi6vZ##HWG#YuJd~IHfWkkz08skha^>HMOOY zhhNliPL6S6=tb!cxkwK@mlU70O_H{@6!O*9mX=t{II)ry`~?@wEK44_h>H6yuSUEw zqJ=h8(sD%mt^^A~kmW%W6}|!z>`WK?Aac@Cf4yBQ-~THLwUR~Uhob&rc7#nX){cP> znd=MM?Y}P6+ zb3-$?xM0>0E`GJmjM~UAShtTUZP~t}o6#<|?3T!vWw(+T{hSzd!Jc0+On=hMMO4f; z^Z?P$h!VES&;yCKF4*(Uco1m7?t_saq=483k&}k{RoQ*0P{S-r?#A4((O!=g$PUf- zaoMpQ9zqyqVqO8ecCk{)1IRHY*wNV0*?|^buui|MfXb;Z=?WMw1{tm63fLO?s(@`I z&$dn;Mm%3&dCUkB&qY+#uZiu%BqLLJplV`!qHWCe1(#q45JQ#hhy-yF#5ahXSk$@y%srC=_p{BqR8|dvmkn%eGV|zsc+z%$(&YG)Hr5qI`Kf+wADjV z&L|sOeLV7I^$8MWq7!60SbhElF?*6~E~0Y2L zQpemjc0-ugq^l%nKkcxx5(zt9AA5^e#sqPF)FEH>v5!RC*NMh8wS_2}*^g{;5%u>g zXn(QGNEgmg1sy9?IN@E=NZGE3(o3gADI zrwH$HbdO}h;Z&Beq4}x^{sQ-*{b@+b=5&z>BFBZYBoE{nf}Cj~imseEK2F9tGoAOG zhcGjZp4X!u)7b0rER?JkU61M6BA6BZsMt8?u%Mk_>K(^lq9AlT7fIRtN_>LIi9u}= z-Odx_d<)6%uOR_u=v>@WI9gzxZ%Sh`yuP{1pYwQ(6Tx8#F6k{a3vWvPY;Hx&aW@T# zb=R7i3aQPdf4CzeoNu8+VaUw|VAX{&E|dgWV;mhD`$YmCyuFq?q>iRBMUiV$!aj||^2uX+0D@FAxOErJ!qFn^39baf~cCO%s z_V!Zq49x2@25l$8*7_rN#G5sUUxdK1dyfpq`8j(uGGcY@ z)uQbtp>HSRJS;5Mjl$8gMFpuH-B7})wPE1ow#JT`jmW|gIBiWBF}3@}!a_#}PPA_= zg7`SblIUnF^22Us<1DQJwlkb9hhpiQV_Q1gnsC|<|EO)*?-JtOR(xDdoG`8bBt(2} zug9|&)0=!CmzajCW#Z(h4m!m1TN3UiwOF_0JDz0hjEOrdmtiZa1mD9PGPk|4G#kQ4 z9B;Fh8+MQ5>|U*k$u!mYopFuw`O>%+S7q}X{kErhXvB%JB;yTjXRbpI=(E24H^B8O zkYNy_t>6uC1JPZ@+5Igt&}?r+QZ~O6jUaL?C`r<6ZxZBY3qiBR{O~RM(S4j<$q4SZ z3ddIZdl9+K63Gwb;I(&+(%g=+IYe+bP3 zfYKm;R*|#{i9sGDjs|%M7iIIX;6bF~xrl6igFK?_G_|_$1R3N}qV3@x^N{W_Aff-` zND%s1L}Q*5B%}Xdg?z#y6{@MHeT;b$g=mSVR5&erVu`1Tqa~ifMcF(nco3<0E}{Uw zC7x4unp$1>Gg;z!qKmzg^97WFOWFJ%^O79r>3{!zKNo+&|65bqA4!1 z5R@!qp|^#6$0GBqqhIOr%H{*XgGj}55xMzx__wmt z)at^Y%MKqBUHlrMJ^}#RevAasmqjaPMgAFW|10Dt7MVw4rvR#6iROQ}PgOq^EG=B3 z>Sx4J)z5KJHeU!HL@J(($jVpsOJ%32)rBWX)vt&yb|=vyI8PdSE{X&zeE7?C49ADe zGkPvA5;!eiqV3YeQQKv3Q8vp89z-gR6*cC1uZ0?Ar>WJ2 zCrjJqh%SD;T+0IkomW7D6*7^Fxlx3S&MOMJl0|BxfE&J;m2rG7G5=RwR z!$sMwE_e{BI2Nv$>#4YgveVS+!c(N;nnc_E3KcQd!YydDHWI8xsdP-795WiNE980> znMbln7sD{KJ~F7?2EwJ~NwnLLIBHjmi?Z2B@E}rgEFm%1({5vBr>WJ2r%Jm`h%R<3 z(x%9Urkf$bVv#7tjL1Es=@vrvvB>@gJz@l0Gc|8L0MwFGt+dLC({bRs+ksC;kGzXO zg)?yw4wvh2aKEcB@vI$CLQo`p+|f6WA9f|s(=>bKFlCa=Aw&QUOL3tFEM1i3O#8t&2B>3;cI+*mS?FxSjz-MLJ6{kk zMGYIIFasdkrCN6DB!UTXjso+8)2Ht=eL6YDaWz}<{mNrmni;SXu|hDfLCLx3$e5P3 zNlZ)5`VY}m;+C}&W^g+RJ})aZRkeIPWWbdCk$n<;_^3s(*^l}vIGRrTv=nwX_!s|(Lk9qmQ54ehefEMoYIMCI;{ zq-^TMKZu-ow1D4rX(oOjA@{XN?e$r}?!@a%SU>xTa@qz-{p^o?)z1MEWcoKEh$)au zE~2u21578)Rx|mXHk=nIDfnVnKW8 z>i(Iv)F|p{LnO5nAz!sLTf#JbW5Sqba>_+i+OMe=aZC$X7oMw{Y9+e(4cNxCfii0A zKqO^jBt#H78EK15ZM6&8VUhV})YgK({Ce@~V`X-VdD>PT+TZa{@Bo0168I+;ED{4^ z(dgpqO^hBb=rIn;z&;By8Z*a&5Vbo_1hd*z-t@;4$2a{?aZxrW2#!szyp2t+OuX-g zpD8;{tuDMkE$u|2ZCs!QlKtnP1LK{9q-;(W%UB|cndv@G5%N@v%=d%sdNmYBa=C~C`UbpMQohYZq6>Y&Vk>BX|2cl8a|$|U>sKN z4j!;gmnOSPq%u0hCc7H>GTAlae68cmCfEzk<~JmhizvQt!RtgW!#%u27QCKl+XQ>V z>jo5qL4S(`=fR3Y5IF&;MU_E+C)7i15nu`u>RlFHmh7P*LO`xSA!SY;#& zFH=R_L3A;{Fy*)tBvDCsA;CJLxCfCFj@nmM(jSDn$D;Dbz#LOx@kxa_Q(9-2T6T+f zqcn0qgWJ=@Sp#l)LNsqa2-C6Y$rR=w<^iWc8ZnJg!+n-K{+IxII(Lv*;~{XOfcu#{ ziU<_#{0fgWHU;ds#Vka9sZFyzT|Q9vO3I8S<2wE$@>R$8NvS_MrH=mID23KRd;6{9 zehHb;DZEmx;{oLs^MmI{1@mW=MniZIN!dIkQo;O@g5b1iGW>d2G#_y^xxFuL1stS2 zs*JQ&mI#Mnk0Bqep2Ie^9rHMDK-9k=L2zxAwmY%N2o2UBi;Y96h1t~16PEdtV*Zq6 zo?qBpViS5h!JZb!XB?iIhG`3(z zbBl``p6(!@6_<3CB>TXgL%trK=Oxq&PAG0PUpPX+0MyrS{4a`0MyBu@HU5{BYlHcD zBAAzPA8q9oBxUoeKsJJ)2Ldzdku=!93H_QwbDN%TU$)u5D=#gKrNcJ+I`YwGd4gP} zV$45q52Cz*q-@?40o!cJF4b)5Jkra0G;dk@{}lbVEq$%0_mWU-4zKaOBcks*q8wv; z_Cq8aY)t1Va_wEUzAn4x_e3gfz@&x!3;Akc?~C&Xjx)zQz2FR0D7oK^{w+!w#^H5p zMjt9S+l)TKebn8@NU(}6P*=@}!Y0k=ze0cF&^%PU%2I4c|5IjK8btrbeYT@dnc6MU zv5n1VxCvoCM}j47{KZnUzD3C})sS$fi-t77e2EOu_zFqcEV7#23eXK0Rc$BeJS-_)K1Ak@& zPQ`~7ata*`_N_hu@oD7ZCG-x=)H z{~rv7cEe`kcPtx7|BSi9o7Ayv$lU1p#r6Ex;s=~mRKNxa$+R$b1{-%t5n;!1pPj)b zOs)HFRr@rXA_Gs^W=PqK3pGqTCxenL zCEr#~J~*bKTSz~MthIhZq}xGKYyFXrTH{u+>f&Yqa!_ppk(A9Kk+H)QvQAYS9a?(+ z*qgzY^bnCAYDvperROv<1{o$|!yU2i4YIWm-5X>Z$t>_@`ZhJE_3Vwg88P4ZFGLdm`&~7iD;An31^C zFiIPeM)7h(ZAiK!-i9$+CAcAJ46e#%SN+axNE&2zW9eK(0USr|5gaSL$I)#_N;m{8 zk=c+m$mDPzhT9!U+3X=QIJKQ%oCl8twu91KzZfS-Xd!t9Xh^mPg@vX=N}YZP_7Iau zgSM{h860m3dSYuc(gYF9ihXBnn29WCgEaJ<+ny){ohBhcRB-VKA}0d1usYF|WQrhD zEkxscPeg5{nWnt%x6<4li@KMP^exGY>fV;B4jCNBD5I4f7<9GDwbC1?8N>CCLep$q zkHL8*aA4wwCj>&PPnuLy{5PX9>qjZ4i-0OGH7+bFC)APm-Ih+i4YY5jj(d zCZ;q|GcL-eMera}@mxgGzCl`*ou*b7-Xnvw5p4(dkl;Z4f)xxB9CfdPFdeIj!b%GsL@JIm-I?nxz8$LUG_|_$Ua4~! z(f0E@5u}Wp(CUXsaI(6}$K=T~qt%auJi;RLoCm0Spv;evL(Ps9A}vdz*-^w%v!CFi zY>pN@h*TVhmowMX>=Mif9?XgOO`U$O`)Mf>olYW-I-QJ*vN=WYAX0Ih5zbssr&E=krdAi;C!KylbTJm; zH2j1nrz64n-zpgsCbx_xX9{_iMdleT%yx0+Y}}$U=O`=9K2heE#8H`Zae-~7f(Ma` z@>By@J~|ae4=fzbtlCIxC4DIM1sSuRXC67ph;%&!>h6Zh2S z668^_ONB{`k|=f=aa8PbT$Ifff(Ma`@>By@O~+F716~m#km?;(C`{0 zI1yP?VkYFA(eO7yUT2ZoPvG7>=6c+tW;ZA=ElZ-=Z;7L3H{t@D1O*Qw701E7%=I+8 zN!e*?b>Rcj>}I0veu9b^x8N2ux)ljd#Z~E;I5}oCx=qO2EmFbf_y#q1;0D#XQyFOi z5_Rq(j_TZvi?aEH;6bF~IGvWco;vp^J58-F{Ik@#muMRRPcr-wzoE;0NO01uipG@5 zE~Cr+LOx)T(uKnS^JmydZ!?-A$M+6Td702nW%=L76RM}~2b>V~3 zH4N8S#yo{PROV^rq}eCRJVP9nc@`IC z^PJ#8q~bU*mARfW&nr7ktuA~>%Dh0dT@bTEyoejn<|QOJ0aayV(&U%X<`p4dwMeZ} zR7PaxZ@5W?UQ=dTghZjg6Gw$!#|2`03LZo%j+0B7>nZexveVS+!iS~Mn?&2yl30$n za1T2D6A8{IRq>cQS!Q&4N62?AGQSaeyLk>R&3iyo*?*~2TD(Nr_lcvjAK;>F{w;VA zsW_GxnCmI~p|aD|>cU5)>_oy_uc|dB$)Ip6dAT*i_u$P>7lWOC%=FWHuG~j6boJ0asgKbxSP0H zO>Xc&R99`Jm%9SO3jm3|A+r&CpdC{aBQcF>rD<=&94maNnoETig^ZYKg)Ep^Th`!@ z93eR0ikY+$LJ@OO?Ew0^Xu5Vzp&bG=b5D#G)utqspx7--$t0Odh`)xGM!u?d8Ch^y zXTcBu|Fj@lFZZW^^*W1f14;-5I3P`XmQiXzf6@oCV6wK2t zk4i;Pv!Y6`IjSB5vnnzm;%Z2+iBeSTloZ+G z(Sr-cYI+D!`gD~3em*v44XehQQe!Qv#`jp>OeL=^!Pjwu%fp2|0jqXh-R!<<*F!!k zhu>Q$V%En`ROkjs%4S2AwG~PhsS0ItsOoG?tu4KgN^fjStJPG&67k&vz$U_P>hNeU zTw=;}ThwMVVY=65bL2xCZoWzrFk2uGs`WuqHho3Nsz&x!wbx(<%mmt&Uh8+0W=mUo zE0ykNOG~vXSge}2fYx6{2Dlg+KCpIl+#~Elm zoJSiW)OHq?-vTDA_GqwG|;Zq$|Iry(9A~ffOA=r+e@`9-K8nVid;sc*pvbCWy+km@9wzMiK>^}%^oC` zi>QWg({Uo1ksy3tHVuik!9aS;Z#;^^xD$|+%|vktA}0j3sWR@KLQS$Lt#TkZbfsBh zogCYP-KJg|b(8{>b#K+lqLa}nw(1n*%c@hwcA8_`2UhJVTeBBwrO|$tXq&UGn_Cx zEwC`Ao|JPDmGo_16o-sJ;mfjliRfZ}A+VnbN~nohNXn)`OoPbDL|vGqI6^p zYMkyU_Jb}rX|!w|c22}c+1FTmwkTwji`#M&@@4I2F>G-RH@0ng9t=$@OXngA>sz!< zR5DD%S7p%yi7w`Q$ie^(tF; z{((`pzoyfjBk~#TVv`<>e3^7EF0jrbc%Y|=Pi-X@!+c0%4khVaL^XYTA0`$ViNe=p z?=sQFg~I=bAce{}90_&^ifa%#p{Q+DWgH>Yk1a}L2C84^=x;g^VlUk(kDfgFYixd` zsAM#ZZGIH;W%Hki>CuiU#|%AVYK|d=TtuOL(;h2I8OGu3GVO6h#|Q59KsR$dO2C3Y zMS^XGA|6DJH)XG~;Ln6Q(W3Ihpp1KqW)973uSIap`qIo!p4x;yBJus}vJd{bNM^K( z&3O{?WzLf&!6{CHq4Ot!IhEvc5!LZ+`wNlHND;mv+nz>rF+aaNPe*YW`V1sECR3b( z$O%HNstkRWP-k0|VjbHrno&)dtJ;eZO(t`~sY_d)qf!|yVq5+a`LgA?V)84;WDVG| zYbNGAmdHgE$~V{fDw$yvz9n;AKy)$xHDoUY0v7o-lCrr-#Dd82qHI+bxmc)6EGmB# zgzZTv2Ylm{bg5wsy<_RFSYK$< z;h~stj$aj{CXZ2b89RQeymM>Yb(pAiZ%t1R+#nVi6UGhWx5!t+xKR@Q&PgRyAc#zExdqRy3S@m%C?7xoT| z&AQ0lsSHnga~JM343~@C-Mm~yE^;5n?p1$K3A)JLgR8Q+SHG=meG+1Og!v;2=OXfV z=8}ipeS&)o-RDrk;7=@J{rP=*_v1Ene*g($q>4%qIVO}ux~ujd6yzZb(RX>`vKExg zjP{O0N{t;&t?dYw9LLt5P~TBI*v8i1rmuMzg{y^^pWGv&nHBz{*gB80U~&GKK8CW; z@Npyvu_{(U=_3Pwo60QDA z9JTrc7ud2Uco3<0E+P|Ot521krdAjJPg;FOwDt6@lI3&Uhi+dWDVr}vBIZE08Qs1T zauJLJx%Eat+ft94SrnPnZ!v+=5+(XAP8{`H0vBboq~JlM;<<>7eEpW{l3HE(sq|Z# zv|JFmv^>io4>~T3q-<(LCgwuc86B4sa(Ro)FNeOz>p#p2xKH(dp#1LDTah@bw-PR} zWGHwLsdz3T4`01il%1wl7k(!7RwdfLhI~<0!)<7`I+C(kLlj~L@>By@Jp$=4be6tZdW30i)?5*0tvQhh*Hdm z+%uYPFXRpundkCnSMOr8BLGx&CjryKC93XB997)~7iBY2@E}t0TtsHRs-u*hrdAhz zB~?cgUF=?_G02CmyCNx@-9#$pMD`h7#|jx(q;=k`9$=Up@~GzS!lVUD)ZBwOsyPl9 zWfKY>L@J(($j4W6yt32O>cT}9=L>fN(ax7NCC)@-LBljX_xt_v5HhWik0J*O&k z_Qfq|wjYwR*B|HoK^vuQZN=Hl;a?ZXXX z^e5Av4)_17r6f9JY-b7TB`RH~m zzBJ$~+RVVYjV*1RcIAD0$ceA&cEsv!!WlcQ@b2O< zC?Ei#0a|<+R@rtDL$^#&6kTff&sVA zLYx{*0yV=WtPy))aqLQEjhJOHB?|>`^iRB=VZZCc#+Jr0-YjrxG+t2kWEw;~8lRzj zK0)=kDx0EyyFrlsIH}a!cBX_(G&)wi-{@wlOom6exEkFoqPq!&+kiZ@zD6WCFivEG z$Z?@OYJCcYJ6n(@3$bJJX8q`XOfE6;T(=0vF?p+qv{@qg0eGBx*E-FCD9Uchh(ucB zTtq3^m9#UZQ9E#ffRKU*k&5Rcis9SuAZ4ei)rCvSeshQ}&X2SQqa>_57YUYB#3Yu1 zg89$3JQfZW@-U0c^ZeZTeHcv{L};lWidb5=#8QV7M@#((7iDvV;6bF~xrhS!min=> z)70w1rDUliiMGe@&bQo0fd*{$6C~IaBX+Sg6ftA7V}v}`BJ)MqYyo?r9`!*q?Q!Cn zHb!FF1Z{!}8K@GXmIen$Sehz9cO@I=Xx7P~H7T6OqyqKn^}9nDGLhx$Gl2{sH# zv>Gh@5+ggoCO<9J}bdJ~!pP?`q2 zP*lSiBYaWzKn9Mc>Kok*tCZ{%yle}6V;e_ z{`%L8PMU39xSXta1JU*Xjh-lCehWMdb|Vt(p%Q5vv_>Mih;sV|OASeHQkk1=nf&?g z;ViYlmy*5;{s6KALpYAFxRj>BmOX_&Sp@D&pU#?63ku<&h5@yEw|2VWV9ORAwQwx0 zo!Wv0xngNoV|XOPOvIK%YN?1B>_)w zk@y*F#zVGSk*`Ypy|lf}X?x!HUt4oKMaRJ;OuY7Uhg8UD9Il}Db0^Wo{Qm|0?t-Xj zx_2YNemQA{Gwdio4$?zno38T@y+^2fEh_&*RG(ejE?~b#|A`2w1Sc9oOsL<4j4+~D}BT}Dj_3iW|#!@qa;$UCOtQNaaoNkJL zlyI4fiJRhm$X8SRlXSV?>B2xI->EJzH?8Zpu?HkuMwM`7wXr`d*X|mtNNyg)P1NQ? zNN@_E5P`nsD+sWm;z>M|M+AM;LAmMIRwZ9pkLhk&084@2438rp&3rKw>Oax^1;4=i zuSm+~2^9^r4n-DdMt)ezRuuV`8;g0;%J-Dyd)msE{|*F+tHATMe?~$*>xAOV%~sfu z;am6DcR3DJHO-AJmXaOsT7Sq`wRGxOIVijds%SWvFW^CbV>19%JHFJ`&h=#V|&(kxuvst21EUHXv(utOJ~&jCb%C| z{H?2X?6S=+E$V6GCmrlE$XAIUcVdz-CV8WQ?NEv|+nRp}7<;5W*P`Iwz<_bhx zzxD-W{{v7$U9O0vY*rG}AaXKM*Q%~%WuaEFDDC}p-ItDv+s4LA)b3vE)s-H_t*Vk4 zrQ)7pHRQ|6tBcVZj?vn%a<`1knk|)+ju@$>kGSq#d4Tb9j0tUWq3lFTHI;qFCVOpcv&MKtc@0L*r!2DUK^_f zeXuscRoQH+-_}Vb@tN9oz+kf(i{~Or;OrnTtj$%xW9huG5*AyqgmqM@rq~A=(7!Jd zoOCHVSR^GHOR-3#zv^o%LHb#UTyXou?pC{Zw$u*UMq$a|Zq?rw_oS4&)c_UEO1W`t zh=D9v{94+B0D-)Nkzff{6obeyq=Z&pdQ}Y-WSE6$H0uc@ud3n7>)xws(^#;rh2*UM zHln(%rK$jacA8=0gfYnpjNVp-N&m0CD*=3C5Y8>7MDnnVBA{yORvsDx#8rC@z42h#)E;B7!LL08tQ86kJe5QBmAi+&9$s z|9@5Ad;8v*FcShs-}}B~>h?XS&Q|NKI(4dsgZlEDRG&nlT*>L&`!OOEvx(nY<`JI@ zOUL4&ZjKXrvT=Y4do;t~YmO%oTxQ86)cu?wVlm!nsEwiML}J?zal_WooP2Uo!mrQsNL^oFIX;3?3CvIpfpDZ3R zO?@jb23%G?MIt4gNQ<_TNG3)4xNnh3r~pnCpO{$bm#YAl5IZji+^u03vlR4DHfbbv zbDCIVTbWF-ca5Z}Y?cXYxy91is%9Cm56VhzLsJY|Anu^>(1mikh{v?|3*`*JRVXVY z%StE9@v%Y~p)4jt!nnVYNvJf=6oZ&N=}9V$Rm9F`pFel@ZYYMckl@Zn@x+~tq>c@C zBu&L|wy<7du^K0IxV6l^*~Zi-wl!;)SE60b8c~Vq=iB?0fXm)(V%qMQx)VCXU}|!t zfO{92gbdpuN-@UiBV^c4V*4j_hQlV09I#*k2_g=PIPO#=8SEA#X|iCqu!Tr5ID*QaBr)kuFCDDkf;oHvxT=rWlmOYLozt3&k*(^)b%j~!c zkx9sSeIgU%nw~1-m5FV?&xgaKALy{$IY_XrEXugwkTkGrkECI_&}63~+^WTmPj+eo zgv2xJ@TNFhlb!W^+*6aC8U9eZK{+_t8Nd^^iuF6{a6Z?(ikWd|AQNj3O?6%^^bkWg z)d?8XnIr0OKG(bkuc7;Ek<`uWLjvr4J&>SN!{Ea!aiRLV|&ez_xg>(yvbt94$ob=&4++aJKU^nQON^4e3*E&!!39~ ztVyBcG#6i|JhBek;Z}j8)K;fw%MKqUwzb1BB)kpSu*2<0>gHo2?DM5CF+1EL%#T}4 zc_a_re$6L-|4$N+`rm~IM5Yuvj!p4($|K9L{&x!;rM5afNBZAGZ0jq% z8OiPi7WDoUlDfH11bu!KBBuAJh4~qasX526x+Zf!a?k`1C}&jYzyzNq9!>Bd9uUw{ z=t)o6Qy#g8P4JMwQEIExb7g|h6FWZwA-{kOu*SnkaNC+_`>ZKX%o<-3<|7s}%SHF$ zbin3OWS}v=tc+3d17m!Jcr?aW@qmb!LQi_ip7O{%Y>dYQj#68lK1Rm)I{H$~d#OmSkictV)pvY1+#8hVt0?%x(-RN6rICjpo4-x1yKI=cJ8#zWCH z-(#MXM@hnlc}jVstX8Mz$uQq1c0RjV!ao2GjPW!Q+%hI|NzZYkd|_imJSl#pJU_O1 zvYR0ON=(n2mvrU1TEyN&4u_MmyKEgPrZpCZ9= zYW>`)wQ(C#3l)Gi4_AO+NX(d4>El!Zeko`^+xMa?VSWYHs8_#6f{iiBk^DEv0h6&j zgAJc&B+zf2K=y7(SB=-3BEiWv<+hvfWQ4{O z-h|%+xngzI{Ml0YizxinQpgU9>MIl4g87@W{oQ4|&J}d~!WGyP?AM&$-ns-wb+h6d1GsCwJD91YG)xErZ~7(^D}Qjt%)1zV4O)lyeU z7d-I#HGHRI8qPM0wLS*pvdbLN*7>Xyh}u2a<@pETYMuX-zW;LiUi+V*FN%$&6mGWL zp-&zx9@R-|w%ZG8qeriV<;)Ivfl9U`lDgSR(4^v96AJP)3aWSxffg~OjuP6=4voPV zo2mn=`7Q!R&20&>nvVt?)m%pagPLT<;5FoEL4xbtM8j5gvb2@G1b%Q{%4aWOW#^%Y zZK&p%u~va`QeeDQV4IZGFVs*|-%V2Q?xcPc_HAsvwV%NoikJ1t&CuSBTtd)bgOQO9 zTlW`Z2&TV;yTcf*zo4PCMN7T#RqWH*af?N7MK~AWT4WnX1ny?IAidPlQ&`2IEn3uH z9O8gcw{IOTd8Id51D=>9G(;l7?l1oK71nc4xH6d|dpWVr(rdxN7ev^Btb_Lpdq~@8 zMGg9e34p6#*i**Y%Ngg9|2pHKLa_Y9oygu&HfEdjB6TAB2pVx$+ZQjZ~~kD3I}BBz2R(--g=+ zMTvAWDRwejtB#vPEa!>he5mD|-Ks25ip}PInRp%Mc*(p&wKSUd$k4fhjAi$_ePbV~iiEJ3X^RbUk}8?RAK<{&{BTj5w| zssIP9s6^0L93$j;4w+Nfm?Esi#|j}Tk0r)F;yA!jiRp|LDI0S7_^J6E%?YdkuIDg8I+C)cBxf4ErxJP|rYpa70FmIlJciBXpYb7`a$Rl7_XBCd$ zEtbxp-^eFR%xK93m3J}Vs=TL2tEAKF0$7?e(QQC0lcI>&v}Y39kULeP#xzSWRU24B z?0j}x(qkz^LQPL2!M?ww$G$)1#J)cgRCfK7PsTD~Ew@oL5QQ_Wzq^Y)@Ev#2qtn7N% z_#=V%+i~ScwOH28Ce2HNHVz%mqSyty_RdO0KB4|$7FWd@m9SFiLC=K`5}cO85(O(6 z53uwN+Jmi;R59cGHS3jtt7f%HiFT*Nx__GzFfi>Iu0S~n71JTTQWdB}(9q&QCtjfJ z@<{5YAZXL#05uK9=q{mkJ2b{IiWVG)=%V0J5#XqS_Z*^2Ozma7IOP_)HpX~>K$^8k z>ZS*O8?$#Zj*QTZ>^@sKcg;cTm5Eq;A%UfSsU_Sw#IARNpPN4Y$sl^_IZ~F&MB66zOiHlzel9CM)NP z>Z=^p$&jyU9MSkr&%Pk!1{d}bH)GJY_-fIK+Ao+*)B#spe2v(?*0E)o4wtQY9ciRI z3Lb7k=ZRK~b$XSW(Cdk9Cq2iV@;CL6ZxYr87At!S6tc7C zT%xOhC?TN$9ezB@h*`sq4)9@Ukq^V5R^BKsF;)E@Zxi6M@`V!WA}3Vv5%he8GH)h_ zlt-n*WpJ@L#RN;Ar80O6vGdujD8^es5hZj9lDc`Dm?u3a8+C6gp|=a`9TqFw5h|gO zi(b>&U(La_)Q~S#Fi+RgHjeHs^AGD(5Rey(YBk*9)vXn8Kv($CK@0Dl5+G(Hzwj;v zT!nX; zthSpc3){^j4F!_amvB58y9@IBhOROsNkl>kTfeQwr6NO5Lcp zLo0O?;0>i#m=EC>WVsm$!UQO*Rf;SkN^#J0BTlQi#b*47GTv%4YFKPw_(F%qnvV+m zHiylzW{?_!JzEzZaY@^{c}Bk|ZWo=XromYAF~HT3?hxCLJGO@ppDlEt$l>Pj z2~mkLO}D8z+$pFH|2Bwf=97TK+;<^?LyVA<3STz}GMH2FU>bL~a@`ZkHHfKL1@09} zR7OjV_4-qQqY7}bCT44MAAk_?(@1buU6gE%AbVRQ{QVxp_S&u$$oC8R0gIf~TVHxx z{P>H1#gnmB^;sc5Xp!T7s-F`eB)oYDZ;CVJr}}w5j+dWmr|;qT1?8Zh>ce<~tBZa| z59Q3kp`0%Nk`%E@j>~#N*5uJ(SZ-`bHgRq(zYrYDggYpngZNp?y%he8IjeOgbKZPgI|>RI?es zDfX1ARo-M#>Mr)+f0e^&c+Oq5lfV$=Om?FR6Vc=r4^`O2M&k5+@I{Sa5ZN-FcY;SV$_^}6_c2HzB&H}xXk%?$@Hv~iKnNwhD_!kq@VJr zaoFnr6rY$_>9w-@zld#5Pi++;w!@AZ3TJyHh|7$>m|l5KGV0wZoY0W8qi}b!xbY!r zlmH?5&CYmJoT4FV7e0>GkW}_NywS?RA!!Vr5Q$m8qemy^m|dAU<&nQLmDwrg}68u%s)>j;aL{RfPRXdHdrZr}_2ZRCT4Tf7mLww$QcN;V{doNuNE zfl?BMYG*4vrdqnnHLSCtV^U>)E?2+G0=8IyT3b)Mf5V(;5y+li`Zg5zo{+l zE=*aawT3O6)`bkaa9X*#n1tI~6Dj!n!7HbTWekisaPxss9X2*YxvQo9OvZzfJ5jr& zFnR2VgA-2NFg{cV?r(w@A#Rt&8c9FKrj8P3Z3BbW%PF!=ta$x;ITdi#%V{!Yt25=Z z|Hn;w;bl9iN0UUh_m;AYXVcV3Mi?>ki7$k_tE)w=@mkiP9;mYfO z?M_72=Wc`MSWEIakv!g#)X}2n&Kpzv1Q9vW5#hvivrU|KI7!Gu+hIQ7umkUx-%M{| z761)~S%?G|@`|Q43`L3w!#NWnl zD;Y$pDdUa3kX69stuO@%(`AKGl(QF-D@xFsHq;EdB|*_iun~Hvb8w*I=QQSK_ReZl zXidK8v62raV2G^`uN4T4o0xHXKwni(F)eawfy07uOFaeMaf^8msy-iZZFJP&E{#cC3z+u~Iz1{$%xHlJt;7Rdtz@mV>Tz1pS7{s3%Jfo11VLaDn%DP9 z)R<=Jx>{11*w*K2ThXH*BB3>%g9N+(k{*E;C?^6fAVGuDKlQa0VO1@bKAK%$+m{Gk zR}tRFjhvnzv^La4FJ?1;vb+v()rR$AzrnGmE5S(Fn*q{7tOh2bVmntfV^1{A#B#8PiHc8J(L4BI+`&wbW&SGV64OjPOehvOx$hFkZ+sk#4Mv%%yr`8MBdEmv<%-Vcv;eD&k9mVbcpB{513HuJJP!_? z3Ig5XqMJoWzsXS-hNdYakK~#z+=tzonBP+=PvvSx;OzjI0_I}v!oZmsKQ&x()P+jC zG)K45LWEopT$cl?J#^^DJ#Rr?J8({=u+-45nl!ZGiL$^0FgokJSVoOiFu#et1#mU7 zx2g;-ab+;;|I2{q!(7E1K^dTpvo?p@_}gUDSP`TzP#b@{p!w{W@R()ZfwyQr??h5J zmkK4>i~>e1vS1Q@nQ$+6xH{(;ZabV!ze~WVB$g0o(^mkF{)XoqLs`w0cnx8$LIOV& z(Xd~CWQm3xUI}2J(T4BcmNipzwPp7nvAf2yQ}njyM>l4$_lm)_j)5E=8wIX!kLv^( z+FI`e9M+=mM_bBo=UR&HkT>OicX$9XAZk7MNYb%Tju!1Yr%-8c!HP6?^w(m? zqp<|;Z;;@`7NU&zXjgR5nbyscB3hS&&#Dgtu3_L73H=c#G-MksuV1$XWNgEg}a6XuF_4zC(0B?&z|YXp|(o;!o&( zR5?q7UGbfOqjRAHn=OCyNxXr$cOij;l(O5dg^VIy3;oB2U0=-ImhwHKe6OXf=&Zvg z;VU1i{+|-L`y9EskjPEy5))BbtA&Y)wS|H8_y)leLAN&b*&I~kHH&JTJRGz>e_CXt z<_qfcX8>1yzF$&2;G~$d`3hb1GHQ7vKD?(ucI1R60C(^0vxrF@jaBuJc1XH?@=U( zYNXt@5|T}%60*v>(}Jz$D>ma-mGNsfqjie3=Sy3C!9!K(F=2n*Ve?c5w&=Y2 z8xksNxu60*4!A1dH>JZ9PKVmRO9!YxYlf@uwES#^E3dE=Z8q@=12J3 zSnws=NOdId&Kyg@h2TT$^-I8^ z*LXpu>&hpD{1;W1JLaqAuV)6&a zgp)$ss?UKN06Z6UCcZL;1%q$=#B%z9;N2=5MlY|gU`HN7 zF7<`Yw<{4-10eW|*flD=a*>^@fE2iWPc$6pQIoHkLVjgoLlv(U4fN#tkn+QvHD*Df zs|I(5M4?i~7k#M{!K2Fv%hiideYjY{)1k)c*`$Hoz#)@^ZsRn@Rb++uqm+(Th@jW_ zli>79`Lm4l7iXj+x5!B5ugH!Ppuxip|8JrilOlbo8vfsjozHF|%V&`r755)V>gJzf zl=Pe&)CqMLK9Y1n`j=3)!|n67(ZW32>&MX1I;9BugB^rNkE0#&gcv}Uh}^bgwZe=7 zl*Zp#SW&f89tB}9vkUQP`_Xu)n=wL9dddz*G(tn`!Yu+vsjW_5E+g(rZ0koJ7icVi zu+caqbu(Ucd^Y4Q8{whE?k~&(EM}Jd zYP9W|0|BI(2MH-ESfJ*?#G{%CJk-r0LQi_ip7O{jtmZ_4qtsTXuaKID65HO$9Fyl| zfI-K@kRT$7$oO2yI;P{{!klC=RcB+Jk(mrAl{`XNQLzFgrx1@yPQ^prOcQ$2Q}&cc zPGKcm1&&f%oxV~^PA9glvvGlD00=E-BEgjvqT{n6@0gZH3G--+sgjI#uVxm2RC2bE zqGAO~&LJL^oQsFLIY#J7PuUUToX}8(ohNXV+UoRGQu0`0+mejQa~xpM@pvS4bArhD zT*x}69qVdeT$<=1e#TE-3rM5c# zZYg#OvF%jd3X#MMXp=$$w-4p@Nt0hpnS*~Dh}nKjIu@+fN9rmqx{7|--IvS}N!^V#8XXa_P3m_t%G9ip4`99v3k4d}+e zPGRLOR`yh1g^67T^Tq)edxQI(WlYpeB9GljIc9bnIggf2shbxVVjpx}sdrjOu2RU$ z4Z$A2h?=$_Mlm&g({=$a({@X)qLVANHRUoTGD&$(v%3JKtAN@d>epYznxPz`CJfyPmyiF5$cx zOXp(c*u^p}YcmloWpFo~y6DGr^{xFHz-8^%N}Sg@aZcI_;+XSDJLOT)u=!sv9x;*9 zACURaCw4x&RRnkgXrVmbh@@`bgum#dJtr0QZ7PoogtgIPWm{o@hR1tHp_p4&f>R(I zqS{M+?TKY@p~x|G3$}!@)`@tMgCAYkBw{g5edAvUxQu_1c)!{4o;Fh6FfyeN8~I|< zim^`LAS1s;(0q2UAvl@00s)r01POu;2s=3>HrP{vV6Euw%JvSIO>TfN8z)ll)Vruy zHa|bzE(IK=&*SK&K64pcI8H&S!^1|NTHkIeY*~-F#3~lb&NrX`9;74Z^z7 zV(G#fd+@tb#&K4xvcQ?Cw?ad4rNw=pSa00H8_`Xo6w|_QL>~fNcDq@OKkOJE0lN*K zvAKm*QXYj5oA4u|7Gs{iSth)d*!j@Cd&AMud=$B0&D)UF&Fx~4^c;Wc&}7Yz3F{7v zr75me3PJVO7OItbi9=`3##M)h&YUw>e~;ncxw!uae{tIS&?9HewC5Dc~#!u_&Y}Fab2l%+F&Pd+opQ!t+a`24g zgLuN_82TMOBRShV#LOv={GEApM)LDQ4>5FSBm)LtV2oFvC^L24adQJ#xV)f#p14qw*mdjA=T6#pQ@2C-$k<8!m}+;hA>@c&MB22|bz3`9sMID6e^n%u^ms z6>jR^mk=?T(=anPhKQYiktBQ?%utJdhyC{Wn2zf!&!oAjMB?5~M! zCwhYt{SDx-#WP6i=C>l1^c*M3)ntp`3G4S3OZRVEnu?poFBBK40(-8AR8hkmnTPw` zd4#6;obL8A8%8r~xIc(NOe5cLe*|2H`;+APvy&(IgnAzGn7@#C%A=}bEB{qYVlt)g zl9m5P?0o1W?)gaYcMwC7Jc|T(w2N=jb7E2BrXu;Lu>NJS^wr{re(SCk;6RH>mW^0x zC#malrc_2`)X+pVYX0qTZf=m1LcaO82VCag0S|SvqtKICezlB%3%Jx|x7iu;QLb>Siy&lX7mdaIm1n!KdKfLfpq8%6ZC}ke`G5>V1^GrNLog zKfqDgbe^)g%uDbF{9lTsZuVDp`$k;cdfm=7YsgFjvV8xo(htaj zClWia5pRU-PC`ytc0Lm9?1>4kg(o>&3y-A9vI~W^$YO;on`;Eo?}IXd)X@BOhWNzsYT>Eabr+qe4}fXnVHB-%4=>wVqLgdJ*5h zgfom-I4pFPa3kBGUDX;16tkRPu&)GM1=}Y1+nxO9{5#}_S!u;^!RI7TO#Jl2D)FLuPI(^b);{gT<*CIjibP=+XHZn&A3s2f~ZO+!KE~eM=?i25_NM^r;M5Zg}qM!;$Sxlk$2MN&7f5`(1Y_)~|bj_1|Fs#~n= z15oN@ccjn%5|ioXX%_~&47kTg-@e$8X1|kXyeai4?zYGlx8;Dto+<&ZUby3&40M1M z3=B4m^Vnq&e@akoxXSMUV^YTe4oy26xDw8tlx}Ztl%yXYo12DiCPXU1Xf^oU;5AY) zW@*1GdoAE9=GVz0=Q)eq|KDK|R6Uk-xaz%L8paHg{<5mx`GV%Nmu{>2n>Rp0RP#3? z!5*~4O>Vp5q5xR2Fg&=};ulEnjZW^dFmt$$b70scShRpF9S#f^0*>CH>2&2qcn71r z8A;t-ECO~wAUiuC_;JP+lFBVu58al`TP(@9isU7hqzy^+oOykvL*4h=MCa{}&gsy5 z1@|uzP{Cjtsz8V6IqZu5q$yJ-H`=%#h=u1H5O~3!L}zpb-Zh7bYfX!yn8(noJle^> zL;Rw)3_AID0a?iMMR)i)St;tCUAOgq!2L#4;vf`Y|=fD~O%Xz7XvI4^RDINUfRxk!rutG zPC2-p_dYz;&Gq^njlw+(F|*&#>?w~DIO}Oc?*qyZV(B*Y0u~=+j%XBaQoI2G=zk-U zy17YolAdEjX{5jE#)pJ*vqgzS;a=8RO&sNK-+dT3%~ERn?iOW@OZhF|5FcU2XcX>d z+P4A)@_rOa-P|UMNzXB)gjQZ|)!iSaxpC;2g@@5{7HGSPJV(R9kVM z6o;6t{PFrO;&UtRfACN@cMCnKor32r5X7OH;pTad=*PrK!$Rna?-ev0y5B!GLvxr< z0gf`e4@up8TFBwh{Y}VVPL+a@;xo#1zssdt5~JqjaPfc;q7qtSl<~8Gy9N;QcAK`; zJO}`U`y7(Gc}P_3m_f#oF@sSAH(QqG^Oo8dMD1ZqO;NEoo6T3+jubcn)97oyC_-Pd zgyMb8BLal9Hjm;>@d))bU*_X3>T90zYw}l=gMH0c@l-co)9uCZ8-(ZfY>%c7YI9|id-$YV3Pl!s=b4(~n(9e8JDBrdyI%XUMI$l1oq^D3r z{8c}!a&zzSByu%Nt)AyQA{LkW`@UJe%Z&LEa{C@KL8qsX;EbYpBt0hrwFvs69|+}X zi=w_LWLWh@KNM`}zUXOR)E@!UZXt{4Pb^X0f|BYhRZF>^M1QTL2WQWmk+il!35uu6 z@mg_d;2?nD$oV{%ymDPw2}`uLPG6Xuf7&T0uP{F)vOALYGtrOP&hLqSPF(gxzraJ? z{8H#ijSoYJV}8Xf*l}hOTB!Q9vc@>2p*kAyZ-{NjhN0*_0~D0UZ;{l^??f%>IcAhj z7%wO<&jrl8qd+@r_2E@|)o1lLubgxKOi}0)v{y~H>od|xc zHB0kPz5N&d7SAs3kQv)qGX`_PHckW0b_Y=K3BE3Ez4%n+sYkOtAUG3;zm%Tai_mjN zp^q-*aT{IERLxHKy=42$xUjGlGfG)^X4Y{HIjn@c;9cE}CS-SB@XPB`+dv76G!-*O z*;)u3T`5$#u39m>;^(AJx}hMza-|g?z=)58YbX>(w9;b60$w)b@E3>Ph?|++QH|nH(D;?n8p3P%vh|?91nIjf0=ah``YM@!bxEKJyYjjN!cxCH<{1Z53PxjwC$U=9#sOA&F_9NK|I8eVFpdQ`rE%S6l}q?Fmc(A!a9jlspJm13b#H52iE zQ|3Us#4!~8LrG|7iq=^*FXNAK6;zkLT5sD1Hal||-l0%;%h!7Q+x!|_F)zn^G)B~! zQeRiuAs=p$$0MM2A1W54p-a1&B;37OY;=5L;kPw*q|9UhGot~UcG!%g^X3Tt+yhJg zyo)hctyP>Ar;zlh%+A))#7q@Ql{qT+x>BVC=WH`gZ};x(Dd*O<;Xp#Erw#q6L2HA> zTLIjdIS{J$`n^F=joK;*&{8ndfwU>JW1(-InIU3U@%~Doh8vtW^!AvUdcAvL1A>(m zaNoA|=&G0_^?m}ahiEU=5-xsmRyj&EceRHY*dwepM+@%`rq9qb$=ZrEW8izjtfneQ$8aMO~-2jyYC&$DpIJ zYwhMZqOry0I@;Ek^3|d_9&eV6&Wvxaq~-)7j>@cD43SRc^Db>xCUX*gY13?a5ns>K zyF1MEJX_23Mp)+Qs51OtnQpgkd&=Fd1{GyK$?S$c3gI8BY{n>$s#$=y8#80vHUWxw zAzqx88L#RX7=Mx8j;-K~c(v`E8b*hTIT`OZWyZ4B`CZOpyvrQyx}5dv*SGc$;A+=C zbvY1oI*=>V%_+pfz|mLDZD{i^?=eZf-l?bD*KJaKJfPX=k(PTZP&~CL-0W1v&FsFF zmoW1VrMy|nhw-pQxVEJ6a#Lo1+gsqmSS=}_G^)im1+|A}rvU|R&lRKERK+aA%QcyO z)WG~(;87!3;CZtg(2bd0O>Vva>U6x~up(3XL%|uOUF*o~9Uc7aShRwfw#)2T%2&)v zJl9PIeh>Q=aABgA)M7*!(Vd literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/cmdline.doctree b/doc/_build/doctrees/docs/cmdline.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6a722335f5dfc1b28bafe91fe3b3072976e3e34d GIT binary patch literal 29843 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

X2StMYPG>nR)I(Qr$7t+2ut0f@Rh! zW%UGUBuvvHl*0}K@CbT~ar z2CsJlXGJ_1*08&jH7dMVnpk3*;M-AkVjUQOI$8lV(PF%&kO=R`t&6W#ep{5~*&3nsbVKXeyOmami$xPPv0iDofzF;QS(n#J zVRI8(hcfi|i;;wMhEyES#F#~6V(X>)22)+%NsV>|TbL`Q^(3`s84Xi)Ca3yNY88~u zLN4gxxiIde;;%I@ZZfKY+cp+DTjM!L@SLmhJhg#ESnLzX^9*D&1M8Qv@fjRIdA)%p zkq7n$k>F;iAkYTJ%|+Sc7^O9rI#s2#M&b#QA&o?Wn&SXKUo>O2<~1zvzJZ^P`JEZX z^z8sU9kV7Pdkpg04RepE=8c^Crl7eF5Uapoj;;4S^bUnRXvq6WJblA00{u4Y3V=D1 zXc6J%;Yma-s>S+Ve=rtcN{KDN<$R(Q-w@!5et?~mc8sVwgctKiz#pIynJcy-^pWyo zI%vVS>T!^#P#(rBOc12a<8uwm*RNQ;I&y0suMCCEWf@+X!&sFRw@>1B9xToq=pVJyj1uz6BP(%`v z67HP;8SY>>to&x6AmK4EJnBON);@WVC`n0u$7>Ya_hppBhjPeWgV84BKzO4_LfS0g z+JkaaQ4e}NV4jW(pfTOj`O?w_x~0U^#aa<2vuQfdP2tcuJAY_ov=7gSLym!OZ`{t`UzcDVM4nm{5Ajh9kTB965;*{ z$4n8rcntu1-I}D>Uh9i&sirj$SgU3h^6(5Dckw1ht&*Ycn1u=Rr z$_sQ0{^EE7*LC-@^6cl&Y=O&-0lgn3pmQF7#Ddbe!o%0I;E(Y(J^BF3dfgc`lmY<0 zwpOMb-HJSSf4@{Jc6WB-b$R&KT*fO6#S1jt$*)@Nqz`h97RW8-$=AF-gy${zV4GL0 zUWy3l!-9Jjzg@7{&#%tn?~BoGk~_0h;1(^3w==@Y{EELZx`Thu#I2{{GH&n!FzwMt zIB%ktr;qZFmNd>S;WWiakv@iJreFG~KgXXkqmLsGUkjT7PVrqieR+yLAr)hOGKX-u zRQn`Xo9xas^yzPp(Wkhce{!$85Sm?}emidU>qj5aD@AMNKL4EhXb zPfmM-zSM2C6JXQ#^}#r}#02XqheVT?Fj!RIkd<$HDIS^SQ3C>DQZ3a>Pw`=suC?lwM8 z#+~1fl@wUPQtW;d;@#w4vE$ICN2Tcjew^!V&hSmJWT_k&DL%-kC%aQHdlE$=kBZ5pbUJSf)8eER#=!=p)2N&k>cFTS~8%y{yQb1pl{JmIu_|TxfGowZL zWx+XJe-;mWB>9c>s8pWC<^ZRnZ}$ZB70I1l*JJcmWV@5grJ;^v>1+HuW>B#aeO+Uc z)q16q=^I?FML;_6?l}4;KhN$@XM*G)I=~3=TLRkxM}xbRLz&I=ZLY=^mmKUL&7`qn z{SI<^rn$3fm6X2A6(_qJR)VDO@$aeTLy7c#JoyK^vvHY*&x5i(;v;<}`T_E{xGm;R zDEjJ$$mn%viC$Hu_#?@kA=_yE`YoaKW8`gh@zVWb)ptCGJog~uJ4Q!Gad4ZzZzaA1 z9~$gL<)D*(!nH60@U7YY%JFFWDQ8dOLy+_{{<*MLdUYoFb5zNSY0P2|++P*fFBo`Y zCQZNOAG2T!(QbbnnOoicwb|oRs<WcovlBcNX+v(H^1mV(1v z93VO4e_X#p8pBvf|T!%ec#f?)>^u3}!_o`W*vJkgp}u zllUFd@A0?IpRbRzF3|Ta_r}Yb_tpE^`{}zX`^fu;%I;n@U(?jX?jHotAMw{e1j8Wa z8GjO-m}lr)Q|8l<__`s!W60lJY_Y>gKz~NnKKcv(%4ZDl6-W9j9zyyX{+0*h{|7Jh BnWF#z literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/filterdevelopment.doctree b/doc/_build/doctrees/docs/filterdevelopment.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0358f7bbb05cf4381b1362ed7c1820e384d98cdb GIT binary patch literal 10798 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/filters.doctree b/doc/_build/doctrees/docs/filters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ca747770b7024ab35666e24f89f865e6581a047e GIT binary patch literal 41394 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/formatters.doctree b/doc/_build/doctrees/docs/formatters.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e820056976e60058095078163329f45f007dbc73 GIT binary patch literal 175624 zcmeEv2Y_5v^?s;*1aLMXSqNoeLvNuh2`vjF5VEtolk7}(cXsZ~rT`BFq)8W4 zM4E_V11pFkiVZ|X>{viW5k*l^v0(jw-*@hN^XAPPl3*zQ{uo794U_0Gu2flpIcousIJ!0yY^^dq*z}%R;*Q552|Z)|un#rchpdC17vQ6q%~#YVxzi}M?>;E+Q>zLC9_!OtnWkJ4>ZQtPt(uuF@<){BC&;g3;Kvl|#U%~u>soFCcD;-9n}T%6 zbN9Wv8W`)FJSP+uddjy4K5xH!KqkWQ%2Z{%%g!1F`xvjfA0S`F6OXtsb)T(qD8 zyz#{{*OB#+n3kKED1}9Z(r}@FxR{M-)vBACu1Ak8NXWn0#pAsj)yDg4^->*GRvDc) zSe#$0ZXQ&(=v{xT;A+KrBgI+`=C4(^oLk+hcm08J=TMjPYL#&}P^@k}yEijf9H_Vg zv8&t6?%lXBUa!orRO+LZdU0N@UU2p5YkF4coyZz54c4mL2G#94hStQtiTJk`{;iFF z8IV>5O$#e%`=NF4Z(aOb5C7K3zYXwjL;TyQccVzTX`!LALmT7YCiu5$@1~IzrbU3Y z>JCGj4Q)2wyVk%^X?PGyR42`??%0v^R!Sjf-3iXRb5MOPoYfT;dwp|qnrTy}Wk=wA zGqSE$&*G_fO&AMU)sCT6d)M@^lk>Zwns*(lj1+fW(C>B~EG{Yz?>e@00qNIvMYG`l zYr8f?>;$>$l-`N;!U9^Wx=ZgwFHUu8ZwAf6mHNl)sEcVqwG(nJ85y2Y8!Mn5cI{nj z%oS@zx2Ra%t#>urdHUSmwfYMK3mt28cRUP^kCAGvy2o75_5QWz+}<@TcdxnQy{iwG zMvK+1o>c+uTWxjkp;d=qseO`$np0eYCf%KGkm`&J&aLhnRQKx`%Johd>KNL2yuUEs zpQKSM4$yBh)%{`Y1A^*-A^568lZU1ZL4OZXJ!l9zAKWpt$K0Vk=ML>YcWCLEir z6o&SiTRn7W)57>rSI-(lUe?1}Y8C!HT+CDt2b-Be^$4(0!#y~ywHyg?5Agig5MuQx zazDC>I~X_d>>28APx2U8V^&a|4ZcGpKQq-D@S(y2R~Q@0RF8$A#|72nDQJ#8%uuP8 z9YZ_J4wq{6TDCAeob4Yk4cAMfv4-ARJs~Fh+7Z3#iIjg%n*0+(oApBe72$LeR604R z=BX079w(KCSdp&_s;3}Z_3jNhr20FxNrLKWL))wV<_=|4f0sP(Q}cpq9}U3X z`_Sgzy8w=_vpO15<@7g^_LUP69Ds5uR0g3#F{sX`4x~8GbfEDU1XX0@@;ig~!7z5C zk!EY-V`CLp&(?>~;KK1_Mzs_ZN%k(MiL`F0<3fnE{KSVL=}1r=rKDuEAk~4;d6z~@ z>c{COnQ8@^j0IJ6OI8~&*=)3`4HAG=NB^j$$U8d}x8BmE5;W$O>cx>vbsQWQ1=Yp0 z-HEGBn9x@o9jFYJMi=yDj+&ocP+C+RothmPN4MEu%oawoVR4q7P`0BsJ}{Im)Uthj zlg8`wr|mPTuWxc^R^Gq3G(4OE(s->nn5|c`1C`N5MXLrpVua1s&_9kYsAW4A50yy9 z6|=pgC9p4sMUyi?>|a`sGO}ntsK;z&ygoKw&vrnm!uW7~1_YR087-1~=BRp>ywT=r zKrUt%yAlGFQKH5bz%V$B22AV2MN0K>5GMU72J(KCEzK9(zWE4w`n(Ti(Zpq-Y)7$k zL1(rAArK@LGSC$K>eCo6_4Q>3OOD;3N~4P^1IEAN$(Kf<6-?Zh z!6>ni-3L&PDawO84h&ZX)vIZtD_5B?;eS2aDB8K+ zSzZl28l3bp9}{Q*ep72*cJ*w)y1b?XE;SV{wIVfGy%uiw=Ail(R{x43L$<408%eLjw$~W{*fy?j)dcjY$=jjGL?HO#vU&q#yfLWWWDeaibe%Pg ziJnvS=J9@DECR+WGp<%|fq?G_s<%?pS56G8jv<=;ok8_B3d0^I8~|wZceSeS5B%RBR6jr!UV3)kZtT482 I>6)~g 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≻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 MMywCu85L*#3u?FezW@LL literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/integrate.doctree b/doc/_build/doctrees/docs/integrate.doctree new file mode 100644 index 0000000000000000000000000000000000000000..42418e9326ed84e89aea8e323997533c48da28cd GIT binary patch literal 9218 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/lexerdevelopment.doctree b/doc/_build/doctrees/docs/lexerdevelopment.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cf737fd75403eb8bd07f1ba26de516c2ac1066c9 GIT binary patch literal 119266 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 Y$}l)bZ=Bv3gy=mkn5NIMvS`l#0HIlK=>Px# literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/docs/unicode.doctree b/doc/_build/doctrees/docs/unicode.doctree new file mode 100644 index 0000000000000000000000000000000000000000..660687e76501ee8f70c231d96d5d4339ac1a2423 GIT binary patch literal 13790 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/download.doctree b/doc/_build/doctrees/download.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c7aa88c4d0c00be2471649e5785c9d77773e1105 GIT binary patch literal 10002 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/environment.pickle b/doc/_build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..ffb8f174743d4bf7f0ba4c2998271ae66e53d3ad GIT binary patch literal 139204 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 literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/faq.doctree b/doc/_build/doctrees/faq.doctree new file mode 100644 index 0000000000000000000000000000000000000000..87b776f733eff89eca8fa8decde3e328d07ff429 GIT binary patch literal 51050 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, + the `arg` is then given by the ``-a`` option. + + .. method:: format(tokensource, outfile) + + This method must format the tokens from the `tokensource` iterable and + write the formatted version to the file object `outfile`. + + Formatter options can control how exactly the tokens are converted. + + .. versionadded:: 0.7 + A formatter must have the following attributes that are used by the + builtin lookup mechanism. + + .. attribute:: name + + Full name for the formatter, in human-readable form. + + .. attribute:: aliases + + A list of short, unique identifiers that can be used to lookup + the formatter from a list, e.g. using :func:`.get_formatter_by_name()`. + + .. attribute:: filenames + + A list of :mod:`fnmatch` patterns that match filenames for which this + formatter can produce output. The patterns in this list should be unique + among all formatters. + + +.. module:: pygments.util + +Option processing +================= + +The :mod:`pygments.util` module has some utility functions usable for option +processing: + +.. exception:: OptionError + + This exception will be raised by all option processing functions if + the type or value of the argument is not correct. + +.. function:: get_bool_opt(options, optname, default=None) + + Interpret the key `optname` from the dictionary `options` as a boolean and + return it. Return `default` if `optname` is not in `options`. + + The valid string values for ``True`` are ``1``, ``yes``, ``true`` and + ``on``, the ones for ``False`` are ``0``, ``no``, ``false`` and ``off`` + (matched case-insensitively). + +.. function:: get_int_opt(options, optname, default=None) + + As :func:`get_bool_opt`, but interpret the value as an integer. + +.. function:: get_list_opt(options, optname, default=None) + + If the key `optname` from the dictionary `options` is a string, + split it at whitespace and return it. If it is already a list + or a tuple, it is returned as a list. + +.. function:: get_choice_opt(options, optname, allowed, default=None) + + If the key `optname` from the dictionary is not in the sequence + `allowed`, raise an error, otherwise return it. + + .. versionadded:: 0.8 diff --git a/doc/_build/html/_sources/docs/authors.txt b/doc/_build/html/_sources/docs/authors.txt new file mode 100644 index 0000000..f8373f0 --- /dev/null +++ b/doc/_build/html/_sources/docs/authors.txt @@ -0,0 +1,4 @@ +Full contributor list +===================== + +.. include:: ../../AUTHORS diff --git a/doc/_build/html/_sources/docs/changelog.txt b/doc/_build/html/_sources/docs/changelog.txt new file mode 100644 index 0000000..f264cab --- /dev/null +++ b/doc/_build/html/_sources/docs/changelog.txt @@ -0,0 +1 @@ +.. include:: ../../CHANGES diff --git a/doc/_build/html/_sources/docs/cmdline.txt b/doc/_build/html/_sources/docs/cmdline.txt new file mode 100644 index 0000000..165af96 --- /dev/null +++ b/doc/_build/html/_sources/docs/cmdline.txt @@ -0,0 +1,149 @@ +.. -*- mode: rst -*- + +====================== +Command Line Interface +====================== + +You can use Pygments from the shell, provided you installed the +:program:`pygmentize` script:: + + $ pygmentize test.py + print "Hello World" + +will print the file test.py to standard output, using the Python lexer +(inferred from the file name extension) and the terminal formatter (because +you didn't give an explicit formatter name). + +If you want HTML output:: + + $ pygmentize -f html -l python -o test.html test.py + +As you can see, the -l option explicitly selects a lexer. As seen above, if you +give an input file name and it has an extension that Pygments recognizes, you can +omit this option. + +The ``-o`` option gives an output file name. If it is not given, output is +written to stdout. + +The ``-f`` option selects a formatter (as with ``-l``, it can also be omitted +if an output file name is given and has a supported extension). +If no output file name is given and ``-f`` is omitted, the +:class:`.TerminalFormatter` is used. + +The above command could therefore also be given as:: + + $ pygmentize -o test.html test.py + +To create a full HTML document, including line numbers and stylesheet (using the +"emacs" style), highlighting the Python file ``test.py`` to ``test.html``:: + + $ pygmentize -O full,style=emacs -o test.html test.py + + +Options and filters +------------------- + +Lexer and formatter options can be given using the ``-O`` option:: + + $ pygmentize -f html -O style=colorful,linenos=1 -l python test.py + +Be sure to enclose the option string in quotes if it contains any special shell +characters, such as spaces or expansion wildcards like ``*``. If an option +expects a list value, separate the list entries with spaces (you'll have to +quote the option value in this case too, so that the shell doesn't split it). + +Since the ``-O`` option argument is split at commas and expects the split values +to be of the form ``name=value``, you can't give an option value that contains +commas or equals signs. Therefore, an option ``-P`` is provided (as of Pygments +0.9) that works like ``-O`` but can only pass one option per ``-P``. Its value +can then contain all characters:: + + $ pygmentize -P "heading=Pygments, the Python highlighter" ... + +Filters are added to the token stream using the ``-F`` option:: + + $ pygmentize -f html -l pascal -F keywordcase:case=upper main.pas + +As you see, options for the filter are given after a colon. As for ``-O``, the +filter name and options must be one shell word, so there may not be any spaces +around the colon. + + +Generating styles +----------------- + +Formatters normally don't output full style information. For example, the HTML +formatter by default only outputs ```` tags with ``class`` attributes. +Therefore, there's a special ``-S`` option for generating style definitions. +Usage is as follows:: + + $ pygmentize -f html -S colorful -a .syntax + +generates a CSS style sheet (because you selected the HTML formatter) for +the "colorful" style prepending a ".syntax" selector to all style rules. + +For an explanation what ``-a`` means for :doc:`a particular formatter +`, look for the `arg` argument for the formatter's +:meth:`.get_style_defs()` method. + + +Getting lexer names +------------------- + +.. versionadded:: 1.0 + +The ``-N`` option guesses a lexer name for a given filename, so that :: + + $ pygmentize -N setup.py + +will print out ``python``. It won't highlight anything yet. If no specific +lexer is known for that filename, ``text`` is printed. + + +Getting help +------------ + +The ``-L`` option lists lexers, formatters, along with their short +names and supported file name extensions, styles and filters. If you want to see +only one category, give it as an argument:: + + $ pygmentize -L filters + +will list only all installed filters. + +The ``-H`` option will give you detailed information (the same that can be found +in this documentation) about a lexer, formatter or filter. Usage is as follows:: + + $ pygmentize -H formatter html + +will print the help for the HTML formatter, while :: + + $ pygmentize -H lexer python + +will print the help for the Python lexer, etc. + + +A note on encodings +------------------- + +.. versionadded:: 0.9 + +Pygments tries to be smart regarding encodings in the formatting process: + +* If you give an ``encoding`` option, it will be used as the input and + output encoding. + +* If you give an ``outencoding`` option, it will override ``encoding`` + as the output encoding. + +* If you give an ``inencoding`` option, it will override ``encoding`` + as the input encoding. + +* If you don't give an encoding and have given an output file, the default + encoding for lexer and formatter is the terminal encoding or the default + locale encoding of the system. As a last resort, ``latin1`` is used (which + will pass through all non-ASCII characters). + +* If you don't give an encoding and haven't given an output file (that means + output is written to the console), the default encoding for lexer and + formatter is the terminal encoding (``sys.stdout.encoding``). diff --git a/doc/_build/html/_sources/docs/filterdevelopment.txt b/doc/_build/html/_sources/docs/filterdevelopment.txt new file mode 100644 index 0000000..bc399a6 --- /dev/null +++ b/doc/_build/html/_sources/docs/filterdevelopment.txt @@ -0,0 +1,70 @@ +.. -*- mode: rst -*- + +===================== +Write your own filter +===================== + +.. versionadded:: 0.7 + +Writing own filters is very easy. All you have to do is to subclass +the `Filter` class and override the `filter` method. Additionally a +filter is instanciated with some keyword arguments you can use to +adjust the behavior of your filter. + + +Subclassing Filters +=================== + +As an example, we write a filter that converts all `Name.Function` tokens +to normal `Name` tokens to make the output less colorful. + +.. sourcecode:: python + + from pygments.util import get_bool_opt + from pygments.token import Name + from pygments.filter import Filter + + class UncolorFilter(Filter): + + def __init__(self, **options): + Filter.__init__(self, **options) + self.class_too = get_bool_opt(options, 'classtoo') + + def filter(self, lexer, stream): + for ttype, value in stream: + if ttype is Name.Function or (self.class_too and + ttype is Name.Class): + ttype = Name + yield ttype, value + +Some notes on the `lexer` argument: that can be quite confusing since it doesn't +need to be a lexer instance. If a filter was added by using the `add_filter()` +function of lexers, that lexer is registered for the filter. In that case +`lexer` will refer to the lexer that has registered the filter. It *can* be used +to access options passed to a lexer. Because it could be `None` you always have +to check for that case if you access it. + + +Using a decorator +================= + +You can also use the `simplefilter` decorator from the `pygments.filter` module: + +.. sourcecode:: python + + from pygments.util import get_bool_opt + from pygments.token import Name + from pygments.filter import simplefilter + + + @simplefilter + def uncolor(lexer, stream, options): + class_too = get_bool_opt(options, 'classtoo') + for ttype, value in stream: + if ttype is Name.Function or (class_too and + ttype is Name.Class): + ttype = Name + yield ttype, value + +The decorator automatically subclasses an internal filter class and uses the +decorated function for filtering. diff --git a/doc/_build/html/_sources/docs/filters.txt b/doc/_build/html/_sources/docs/filters.txt new file mode 100644 index 0000000..ff2519a --- /dev/null +++ b/doc/_build/html/_sources/docs/filters.txt @@ -0,0 +1,41 @@ +.. -*- mode: rst -*- + +======= +Filters +======= + +.. versionadded:: 0.7 + +You can filter token streams coming from lexers to improve or annotate the +output. For example, you can highlight special words in comments, convert +keywords to upper or lowercase to enforce a style guide etc. + +To apply a filter, you can use the `add_filter()` method of a lexer: + +.. sourcecode:: pycon + + >>> from pygments.lexers import PythonLexer + >>> l = PythonLexer() + >>> # add a filter given by a string and options + >>> l.add_filter('codetagify', case='lower') + >>> l.filters + [] + >>> from pygments.filters import KeywordCaseFilter + >>> # or give an instance + >>> l.add_filter(KeywordCaseFilter(case='lower')) + +The `add_filter()` method takes keyword arguments which are forwarded to +the constructor of the filter. + +To get a list of all registered filters by name, you can use the +`get_all_filters()` function from the `pygments.filters` module that returns an +iterable for all known filters. + +If you want to write your own filter, have a look at :doc:`Write your own filter +`. + + +Builtin Filters +=============== + +.. pygmentsdoc:: filters diff --git a/doc/_build/html/_sources/docs/formatterdevelopment.txt b/doc/_build/html/_sources/docs/formatterdevelopment.txt new file mode 100644 index 0000000..2bfac05 --- /dev/null +++ b/doc/_build/html/_sources/docs/formatterdevelopment.txt @@ -0,0 +1,169 @@ +.. -*- mode: rst -*- + +======================== +Write your own formatter +======================== + +As well as creating :doc:`your own lexer `, writing a new +formatter for Pygments is easy and straightforward. + +A formatter is a class that is initialized with some keyword arguments (the +formatter options) and that must provides a `format()` method. +Additionally a formatter should provide a `get_style_defs()` method that +returns the style definitions from the style in a form usable for the +formatter's output format. + + +Quickstart +========== + +The most basic formatter shipped with Pygments is the `NullFormatter`. It just +sends the value of a token to the output stream: + +.. sourcecode:: python + + from pygments.formatter import Formatter + + class NullFormatter(Formatter): + def format(self, tokensource, outfile): + for ttype, value in tokensource: + outfile.write(value) + +As you can see, the `format()` method is passed two parameters: `tokensource` +and `outfile`. The first is an iterable of ``(token_type, value)`` tuples, +the latter a file like object with a `write()` method. + +Because the formatter is that basic it doesn't overwrite the `get_style_defs()` +method. + + +Styles +====== + +Styles aren't instantiated but their metaclass provides some class functions +so that you can access the style definitions easily. + +Styles are iterable and yield tuples in the form ``(ttype, d)`` where `ttype` +is a token and `d` is a dict with the following keys: + +``'color'`` + Hexadecimal color value (eg: ``'ff0000'`` for red) or `None` if not + defined. + +``'bold'`` + `True` if the value should be bold + +``'italic'`` + `True` if the value should be italic + +``'underline'`` + `True` if the value should be underlined + +``'bgcolor'`` + Hexadecimal color value for the background (eg: ``'eeeeeee'`` for light + gray) or `None` if not defined. + +``'border'`` + Hexadecimal color value for the border (eg: ``'0000aa'`` for a dark + blue) or `None` for no border. + +Additional keys might appear in the future, formatters should ignore all keys +they don't support. + + +HTML 3.2 Formatter +================== + +For an more complex example, let's implement a HTML 3.2 Formatter. We don't +use CSS but inline markup (````, ````, etc). Because this isn't good +style this formatter isn't in the standard library ;-) + +.. sourcecode:: python + + from pygments.formatter import Formatter + + class OldHtmlFormatter(Formatter): + + def __init__(self, **options): + Formatter.__init__(self, **options) + + # create a dict of (start, end) tuples that wrap the + # value of a token so that we can use it in the format + # method later + self.styles = {} + + # we iterate over the `_styles` attribute of a style item + # that contains the parsed style values. + for token, style in self.style: + start = end = '' + # a style item is a tuple in the following form: + # colors are readily specified in hex: 'RRGGBB' + if style['color']: + start += '' % style['color'] + end = '' + end + if style['bold']: + start += '' + end = '' + end + if style['italic']: + start += '' + end = '' + end + if style['underline']: + start += '' + end = '' + end + self.styles[token] = (start, end) + + def format(self, tokensource, outfile): + # lastval is a string we use for caching + # because it's possible that an lexer yields a number + # of consecutive tokens with the same token type. + # to minimize the size of the generated html markup we + # try to join the values of same-type tokens here + lastval = '' + lasttype = None + + # wrap the whole output with

+            outfile.write('
')
+
+            for ttype, value in tokensource:
+                # if the token type doesn't exist in the stylemap
+                # we try it with the parent of the token type
+                # eg: parent of Token.Literal.String.Double is
+                # Token.Literal.String
+                while ttype not in self.styles:
+                    ttype = ttype.parent
+                if ttype == lasttype:
+                    # the current token type is the same of the last
+                    # iteration. cache it
+                    lastval += value
+                else:
+                    # not the same token as last iteration, but we
+                    # have some data in the buffer. wrap it with the
+                    # defined style and write it to the output file
+                    if lastval:
+                        stylebegin, styleend = self.styles[lasttype]
+                        outfile.write(stylebegin + lastval + styleend)
+                    # set lastval/lasttype to current values
+                    lastval = value
+                    lasttype = ttype
+
+            # if something is left in the buffer, write it to the
+            # output file, then close the opened 
 tag
+            if lastval:
+                stylebegin, styleend = self.styles[lasttype]
+                outfile.write(stylebegin + lastval + styleend)
+            outfile.write('
\n') + +The comments should explain it. Again, this formatter doesn't override the +`get_style_defs()` method. If we would have used CSS classes instead of +inline HTML markup, we would need to generate the CSS first. For that +purpose the `get_style_defs()` method exists: + + +Generating Style Definitions +============================ + +Some formatters like the `LatexFormatter` and the `HtmlFormatter` don't +output inline markup but reference either macros or css classes. Because +the definitions of those are not part of the output, the `get_style_defs()` +method exists. It is passed one parameter (if it's used and how it's used +is up to the formatter) and has to return a string or ``None``. diff --git a/doc/_build/html/_sources/docs/formatters.txt b/doc/_build/html/_sources/docs/formatters.txt new file mode 100644 index 0000000..9e7074e --- /dev/null +++ b/doc/_build/html/_sources/docs/formatters.txt @@ -0,0 +1,48 @@ +.. -*- mode: rst -*- + +==================== +Available formatters +==================== + +This page lists all builtin formatters. + +Common options +============== + +All formatters support these options: + +`encoding` + If given, must be an encoding name (such as ``"utf-8"``). This will + be used to convert the token strings (which are Unicode strings) + to byte strings in the output (default: ``None``). + It will also be written in an encoding declaration suitable for the + document format if the `full` option is given (e.g. a ``meta + content-type`` directive in HTML or an invocation of the `inputenc` + package in LaTeX). + + If this is ``""`` or ``None``, Unicode strings will be written + to the output file, which most file-like objects do not support. + For example, `pygments.highlight()` will return a Unicode string if + called with no `outfile` argument and a formatter that has `encoding` + set to ``None`` because it uses a `StringIO.StringIO` object that + supports Unicode arguments to `write()`. Using a regular file object + wouldn't work. + + .. versionadded:: 0.6 + +`outencoding` + When using Pygments from the command line, any `encoding` option given is + passed to the lexer and the formatter. This is sometimes not desirable, + for example if you want to set the input encoding to ``"guess"``. + Therefore, `outencoding` has been introduced which overrides `encoding` + for the formatter if given. + + .. versionadded:: 0.7 + + +Formatter classes +================= + +All these classes are importable from :mod:`pygments.formatters`. + +.. pygmentsdoc:: formatters diff --git a/doc/_build/html/_sources/docs/index.txt b/doc/_build/html/_sources/docs/index.txt new file mode 100644 index 0000000..30d5c08 --- /dev/null +++ b/doc/_build/html/_sources/docs/index.txt @@ -0,0 +1,66 @@ +Pygments documentation +====================== + +**Starting with Pygments** + +.. toctree:: + :maxdepth: 1 + + ../download + quickstart + cmdline + +**Builtin components** + +.. toctree:: + :maxdepth: 1 + + lexers + filters + formatters + styles + +**Reference** + +.. toctree:: + :maxdepth: 1 + + unicode + tokens + api + +**Hacking for Pygments** + +.. toctree:: + :maxdepth: 1 + + lexerdevelopment + formatterdevelopment + filterdevelopment + plugins + +**Hints and tricks** + +.. toctree:: + :maxdepth: 1 + + rstdirective + moinmoin + java + integrate + +**About Pygments** + +.. toctree:: + :maxdepth: 1 + + changelog + authors + + +If you find bugs or have suggestions for the documentation, please look +:ref:`here ` for info on how to contact the team. + +.. XXX You can download an offline version of this documentation from the + :doc:`download page `. + diff --git a/doc/_build/html/_sources/docs/integrate.txt b/doc/_build/html/_sources/docs/integrate.txt new file mode 100644 index 0000000..03fc268 --- /dev/null +++ b/doc/_build/html/_sources/docs/integrate.txt @@ -0,0 +1,44 @@ +.. -*- mode: rst -*- + +=================================== +Using Pygments in various scenarios +=================================== + +PyGtk +----- + +Armin has written a piece of sample code that shows how to create a Gtk +`TextBuffer` object containing Pygments-highlighted text. + +See the article here: http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-gtk-rendering/ + +Wordpress +--------- + +He also has a snippet that shows how to use Pygments in WordPress: + +http://lucumr.pocoo.org/cogitations/2007/05/30/pygments-in-wordpress/ + +Markdown +-------- + +Since Pygments 0.9, the distribution ships Markdown_ preprocessor sample code +that uses Pygments to render source code in +:file:`external/markdown-processor.py`. You can copy and adapt it to your +liking. + +.. _Markdown: http://www.freewisdom.org/projects/python-markdown/ + +TextMate +-------- + +Antonio Cangiano has created a Pygments bundle for TextMate that allows to +colorize code via a simple menu option. It can be found here_. + +.. _here: http://antoniocangiano.com/2008/10/28/pygments-textmate-bundle/ + +Bash completion +--------------- + +The source distribution contains a file ``external/pygments.bashcomp`` that +sets up completion for the ``pygmentize`` command in bash. diff --git a/doc/_build/html/_sources/docs/java.txt b/doc/_build/html/_sources/docs/java.txt new file mode 100644 index 0000000..5eb6196 --- /dev/null +++ b/doc/_build/html/_sources/docs/java.txt @@ -0,0 +1,70 @@ +===================== +Use Pygments in Java +===================== + +Thanks to `Jython `__ it is possible to use Pygments in +Java. + +This page is a simple tutorial to get an idea of how this is working. You can +then look at the `Jython documentation `__ for more +advanced use. + +Since version 1.5, Pygments is deployed on `Maven Central +`__ as a JAR so is Jython +which makes it a lot easier to create the Java project. + +Here is an example of a `Maven `__ ``pom.xml`` file for a +project running Pygments: + +.. sourcecode:: xml + + + + + 4.0.0 + example + example + 1.0-SNAPSHOT + + + org.python + jython-standalone + 2.5.3 + + + org.pygments + pygments + 1.5 + runtime + + + + +The following Java example: + +.. sourcecode:: java + + PythonInterpreter interpreter = new PythonInterpreter(); + + // Set a variable with the content you want to work with + interpreter.set("code", code); + + // Simple use Pygments as you would in Python + interpreter.exec("from pygments import highlight\n" + + "from pygments.lexers import PythonLexer\n" + + "from pygments.formatters import HtmlFormatter\n" + + "\nresult = highlight(code, PythonLexer(), HtmlFormatter())"); + + // Get the result that has been set in a variable + System.out.println(interpreter.get("result", String.class)); + +will print something like: + +.. sourcecode:: html + +
+
print "Hello World"
+
diff --git a/doc/_build/html/_sources/docs/lexerdevelopment.txt b/doc/_build/html/_sources/docs/lexerdevelopment.txt new file mode 100644 index 0000000..23bcb4f --- /dev/null +++ b/doc/_build/html/_sources/docs/lexerdevelopment.txt @@ -0,0 +1,682 @@ +.. -*- mode: rst -*- + +.. highlight:: python + +==================== +Write your own lexer +==================== + +If a lexer for your favorite language is missing in the Pygments package, you +can easily write your own and extend Pygments. + +All you need can be found inside the :mod:`pygments.lexer` module. As you can +read in the :doc:`API documentation `, a lexer is a class that is +initialized with some keyword arguments (the lexer options) and that provides a +:meth:`.get_tokens_unprocessed()` method which is given a string or unicode +object with the data to lex. + +The :meth:`.get_tokens_unprocessed()` method must return an iterator or iterable +containing tuples in the form ``(index, token, value)``. Normally you don't +need to do this since there are base lexers that do most of the work and that +you can subclass. + + +RegexLexer +========== + +The lexer base class used by almost all of Pygments' lexers is the +:class:`RegexLexer`. This class allows you to define lexing rules in terms of +*regular expressions* for different *states*. + +States are groups of regular expressions that are matched against the input +string at the *current position*. If one of these expressions matches, a +corresponding action is performed (such as yielding a token with a specific +type, or changing state), the current position is set to where the last match +ended and the matching process continues with the first regex of the current +state. + +Lexer states are kept on a stack: each time a new state is entered, the new +state is pushed onto the stack. The most basic lexers (like the `DiffLexer`) +just need one state. + +Each state is defined as a list of tuples in the form (`regex`, `action`, +`new_state`) where the last item is optional. In the most basic form, `action` +is a token type (like `Name.Builtin`). That means: When `regex` matches, emit a +token with the match text and type `tokentype` and push `new_state` on the state +stack. If the new state is ``'#pop'``, the topmost state is popped from the +stack instead. To pop more than one state, use ``'#pop:2'`` and so on. +``'#push'`` is a synonym for pushing the current state on the stack. + +The following example shows the `DiffLexer` from the builtin lexers. Note that +it contains some additional attributes `name`, `aliases` and `filenames` which +aren't required for a lexer. They are used by the builtin lexer lookup +functions. :: + + from pygments.lexer import RegexLexer + from pygments.token import * + + class DiffLexer(RegexLexer): + name = 'Diff' + aliases = ['diff'] + filenames = ['*.diff'] + + tokens = { + 'root': [ + (r' .*\n', Text), + (r'\+.*\n', Generic.Inserted), + (r'-.*\n', Generic.Deleted), + (r'@.*\n', Generic.Subheading), + (r'Index.*\n', Generic.Heading), + (r'=.*\n', Generic.Heading), + (r'.*\n', Text), + ] + } + +As you can see this lexer only uses one state. When the lexer starts scanning +the text, it first checks if the current character is a space. If this is true +it scans everything until newline and returns the data as a `Text` token (which +is the "no special highlighting" token). + +If this rule doesn't match, it checks if the current char is a plus sign. And +so on. + +If no rule matches at the current position, the current char is emitted as an +`Error` token that indicates a lexing error, and the position is increased by +one. + + +Adding and testing a new lexer +============================== + +To make pygments aware of your new lexer, you have to perform the following +steps: + +First, change to the current directory containing the pygments source code: + +.. code-block:: console + + $ cd .../pygments-main + +Select a matching module under ``pygments/lexers``, or create a new module for +your lexer class. + +Next, make sure the lexer is known from outside of the module. All modules in +the ``pygments.lexers`` specify ``__all__``. For example, ``esoteric.py`` sets:: + + __all__ = ['BrainfuckLexer', 'BefungeLexer', ...] + +Simply add the name of your lexer class to this list. + +Finally the lexer can be made publicly known by rebuilding the lexer mapping: + +.. code-block:: console + + $ make mapfiles + +To test the new lexer, store an example file with the proper extension in +``tests/examplefiles``. For example, to test your ``DiffLexer``, add a +``tests/examplefiles/example.diff`` containing a sample diff output. + +Now you can use pygmentize to render your example to HTML: + +.. code-block:: console + + $ ./pygmentize -O full -f html -o /tmp/example.html tests/examplefiles/example.diff + +Note that this explicitely calls the ``pygmentize`` in the current directory +by preceding it with ``./``. This ensures your modifications are used. +Otherwise a possibly already installed, unmodified version without your new +lexer would have been called from the system search path (``$PATH``). + +To view the result, open ``/tmp/example.html`` in your browser. + +Once the example renders as expected, you should run the complete test suite: + +.. code-block:: console + + $ make test + +It also tests that your lexer fulfills the lexer API and certain invariants, +such as that the concatenation of all token text is the same as the input text. + + +Regex Flags +=========== + +You can either define regex flags locally in the regex (``r'(?x)foo bar'``) or +globally by adding a `flags` attribute to your lexer class. If no attribute is +defined, it defaults to `re.MULTILINE`. For more informations about regular +expression flags see the page about `regular expressions`_ in the Python +documentation. + +.. _regular expressions: http://docs.python.org/library/re.html#regular-expression-syntax + + +Scanning multiple tokens at once +================================ + +So far, the `action` element in the rule tuple of regex, action and state has +been a single token type. Now we look at the first of several other possible +values. + +Here is a more complex lexer that highlights INI files. INI files consist of +sections, comments and ``key = value`` pairs:: + + from pygments.lexer import RegexLexer, bygroups + from pygments.token import * + + class IniLexer(RegexLexer): + name = 'INI' + aliases = ['ini', 'cfg'] + filenames = ['*.ini', '*.cfg'] + + tokens = { + 'root': [ + (r'\s+', Text), + (r';.*?$', Comment), + (r'\[.*?\]$', Keyword), + (r'(.*?)(\s*)(=)(\s*)(.*?)$', + bygroups(Name.Attribute, Text, Operator, Text, String)) + ] + } + +The lexer first looks for whitespace, comments and section names. Later it +looks for a line that looks like a key, value pair, separated by an ``'='`` +sign, and optional whitespace. + +The `bygroups` helper yields each capturing group in the regex with a different +token type. First the `Name.Attribute` token, then a `Text` token for the +optional whitespace, after that a `Operator` token for the equals sign. Then a +`Text` token for the whitespace again. The rest of the line is returned as +`String`. + +Note that for this to work, every part of the match must be inside a capturing +group (a ``(...)``), and there must not be any nested capturing groups. If you +nevertheless need a group, use a non-capturing group defined using this syntax: +``(?:some|words|here)`` (note the ``?:`` after the beginning parenthesis). + +If you find yourself needing a capturing group inside the regex which shouldn't +be part of the output but is used in the regular expressions for backreferencing +(eg: ``r'(<(foo|bar)>)(.*?)()'``), you can pass `None` to the bygroups +function and that group will be skipped in the output. + + +Changing states +=============== + +Many lexers need multiple states to work as expected. For example, some +languages allow multiline comments to be nested. Since this is a recursive +pattern it's impossible to lex just using regular expressions. + +Here is a lexer that recognizes C++ style comments (multi-line with ``/* */`` +and single-line with ``//`` until end of line):: + + from pygments.lexer import RegexLexer + from pygments.token import * + + class CppCommentLexer(RegexLexer): + name = 'Example Lexer with states' + + tokens = { + 'root': [ + (r'[^/]+', Text), + (r'/\*', Comment.Multiline, 'comment'), + (r'//.*?$', Comment.Singleline), + (r'/', Text) + ], + 'comment': [ + (r'[^*/]', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline) + ] + } + +This lexer starts lexing in the ``'root'`` state. It tries to match as much as +possible until it finds a slash (``'/'``). If the next character after the slash +is an asterisk (``'*'``) the `RegexLexer` sends those two characters to the +output stream marked as `Comment.Multiline` and continues lexing with the rules +defined in the ``'comment'`` state. + +If there wasn't an asterisk after the slash, the `RegexLexer` checks if it's a +singleline comment (i.e. followed by a second slash). If this also wasn't the +case it must be a single slash, which is not a comment starter (the separate +regex for a single slash must also be given, else the slash would be marked as +an error token). + +Inside the ``'comment'`` state, we do the same thing again. Scan until the +lexer finds a star or slash. If it's the opening of a multiline comment, push +the ``'comment'`` state on the stack and continue scanning, again in the +``'comment'`` state. Else, check if it's the end of the multiline comment. If +yes, pop one state from the stack. + +Note: If you pop from an empty stack you'll get an `IndexError`. (There is an +easy way to prevent this from happening: don't ``'#pop'`` in the root state). + +If the `RegexLexer` encounters a newline that is flagged as an error token, the +stack is emptied and the lexer continues scanning in the ``'root'`` state. This +can help producing error-tolerant highlighting for erroneous input, e.g. when a +single-line string is not closed. + + +Advanced state tricks +===================== + +There are a few more things you can do with states: + +- You can push multiple states onto the stack if you give a tuple instead of a + simple string as the third item in a rule tuple. For example, if you want to + match a comment containing a directive, something like: + + .. code-block:: text + + /* rest of comment */ + + you can use this rule:: + + tokens = { + 'root': [ + (r'/\* <', Comment, ('comment', 'directive')), + ... + ], + 'directive': [ + (r'[^>]*', Comment.Directive), + (r'>', Comment, '#pop'), + ], + 'comment': [ + (r'[^*]+', Comment), + (r'\*/', Comment, '#pop'), + (r'\*', Comment), + ] + } + + When this encounters the above sample, first ``'comment'`` and ``'directive'`` + are pushed onto the stack, then the lexer continues in the directive state + until it finds the closing ``>``, then it continues in the comment state until + the closing ``*/``. Then, both states are popped from the stack again and + lexing continues in the root state. + + .. versionadded:: 0.9 + The tuple can contain the special ``'#push'`` and ``'#pop'`` (but not + ``'#pop:n'``) directives. + + +- You can include the rules of a state in the definition of another. This is + done by using `include` from `pygments.lexer`:: + + from pygments.lexer import RegexLexer, bygroups, include + from pygments.token import * + + class ExampleLexer(RegexLexer): + tokens = { + 'comments': [ + (r'/\*.*?\*/', Comment), + (r'//.*?\n', Comment), + ], + 'root': [ + include('comments'), + (r'(function )(\w+)( {)', + bygroups(Keyword, Name, Keyword), 'function'), + (r'.', Text), + ], + 'function': [ + (r'[^}/]+', Text), + include('comments'), + (r'/', Text), + (r'\}', Keyword, '#pop'), + ] + } + + This is a hypothetical lexer for a language that consist of functions and + comments. Because comments can occur at toplevel and in functions, we need + rules for comments in both states. As you can see, the `include` helper saves + repeating rules that occur more than once (in this example, the state + ``'comment'`` will never be entered by the lexer, as it's only there to be + included in ``'root'`` and ``'function'``). + +- Sometimes, you may want to "combine" a state from existing ones. This is + possible with the `combined` helper from `pygments.lexer`. + + If you, instead of a new state, write ``combined('state1', 'state2')`` as the + third item of a rule tuple, a new anonymous state will be formed from state1 + and state2 and if the rule matches, the lexer will enter this state. + + This is not used very often, but can be helpful in some cases, such as the + `PythonLexer`'s string literal processing. + +- If you want your lexer to start lexing in a different state you can modify the + stack by overloading the `get_tokens_unprocessed()` method:: + + from pygments.lexer import RegexLexer + + class ExampleLexer(RegexLexer): + tokens = {...} + + def get_tokens_unprocessed(self, text): + stack = ['root', 'otherstate'] + for item in RegexLexer.get_tokens_unprocessed(text, stack): + yield item + + Some lexers like the `PhpLexer` use this to make the leading ``', Name.Tag), + ], + 'script-content': [ + (r'(.+?)(<\s*/\s*script\s*>)', + bygroups(using(JavascriptLexer), Name.Tag), + '#pop'), + ] + } + +Here the content of a ```` end tag is processed by the `JavascriptLexer`, +while the end tag is yielded as a normal token with the `Name.Tag` type. + +Also note the ``(r'<\s*script\s*', Name.Tag, ('script-content', 'tag'))`` rule. +Here, two states are pushed onto the state stack, ``'script-content'`` and +``'tag'``. That means that first ``'tag'`` is processed, which will lex +attributes and the closing ``>``, then the ``'tag'`` state is popped and the +next state on top of the stack will be ``'script-content'``. + +Since you cannot refer to the class currently being defined, use `this` +(imported from `pygments.lexer`) to refer to the current lexer class, i.e. +``using(this)``. This construct may seem unnecessary, but this is often the +most obvious way of lexing arbitrary syntax between fixed delimiters without +introducing deeply nested states. + +The `using()` helper has a special keyword argument, `state`, which works as +follows: if given, the lexer to use initially is not in the ``"root"`` state, +but in the state given by this argument. This does not work with advanced +`RegexLexer` subclasses such as `ExtendedRegexLexer` (see below). + +Any other keywords arguments passed to `using()` are added to the keyword +arguments used to create the lexer. + + +Delegating Lexer +================ + +Another approach for nested lexers is the `DelegatingLexer` which is for example +used for the template engine lexers. It takes two lexers as arguments on +initialisation: a `root_lexer` and a `language_lexer`. + +The input is processed as follows: First, the whole text is lexed with the +`language_lexer`. All tokens yielded with the special type of ``Other`` are +then concatenated and given to the `root_lexer`. The language tokens of the +`language_lexer` are then inserted into the `root_lexer`'s token stream at the +appropriate positions. :: + + from pygments.lexer import DelegatingLexer + from pygments.lexers.web import HtmlLexer, PhpLexer + + class HtmlPhpLexer(DelegatingLexer): + def __init__(self, **options): + super(HtmlPhpLexer, self).__init__(HtmlLexer, PhpLexer, **options) + +This procedure ensures that e.g. HTML with template tags in it is highlighted +correctly even if the template tags are put into HTML tags or attributes. + +If you want to change the needle token ``Other`` to something else, you can give +the lexer another token type as the third parameter:: + + DelegatingLexer.__init__(MyLexer, OtherLexer, Text, **options) + + +Callbacks +========= + +Sometimes the grammar of a language is so complex that a lexer would be unable +to process it just by using regular expressions and stacks. + +For this, the `RegexLexer` allows callbacks to be given in rule tuples, instead +of token types (`bygroups` and `using` are nothing else but preimplemented +callbacks). The callback must be a function taking two arguments: + +* the lexer itself +* the match object for the last matched rule + +The callback must then return an iterable of (or simply yield) ``(index, +tokentype, value)`` tuples, which are then just passed through by +`get_tokens_unprocessed()`. The ``index`` here is the position of the token in +the input string, ``tokentype`` is the normal token type (like `Name.Builtin`), +and ``value`` the associated part of the input string. + +You can see an example here:: + + from pygments.lexer import RegexLexer + from pygments.token import Generic + + class HypotheticLexer(RegexLexer): + + def headline_callback(lexer, match): + equal_signs = match.group(1) + text = match.group(2) + yield match.start(), Generic.Headline, equal_signs + text + equal_signs + + tokens = { + 'root': [ + (r'(=+)(.*?)(\1)', headline_callback) + ] + } + +If the regex for the `headline_callback` matches, the function is called with +the match object. Note that after the callback is done, processing continues +normally, that is, after the end of the previous match. The callback has no +possibility to influence the position. + +There are not really any simple examples for lexer callbacks, but you can see +them in action e.g. in the `SMLLexer` class in `ml.py`_. + +.. _ml.py: http://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/ml.py + + +The ExtendedRegexLexer class +============================ + +The `RegexLexer`, even with callbacks, unfortunately isn't powerful enough for +the funky syntax rules of languages such as Ruby. + +But fear not; even then you don't have to abandon the regular expression +approach: Pygments has a subclass of `RegexLexer`, the `ExtendedRegexLexer`. +All features known from RegexLexers are available here too, and the tokens are +specified in exactly the same way, *except* for one detail: + +The `get_tokens_unprocessed()` method holds its internal state data not as local +variables, but in an instance of the `pygments.lexer.LexerContext` class, and +that instance is passed to callbacks as a third argument. This means that you +can modify the lexer state in callbacks. + +The `LexerContext` class has the following members: + +* `text` -- the input text +* `pos` -- the current starting position that is used for matching regexes +* `stack` -- a list containing the state stack +* `end` -- the maximum position to which regexes are matched, this defaults to + the length of `text` + +Additionally, the `get_tokens_unprocessed()` method can be given a +`LexerContext` instead of a string and will then process this context instead of +creating a new one for the string argument. + +Note that because you can set the current position to anything in the callback, +it won't be automatically be set by the caller after the callback is finished. +For example, this is how the hypothetical lexer above would be written with the +`ExtendedRegexLexer`:: + + from pygments.lexer import ExtendedRegexLexer + from pygments.token import Generic + + class ExHypotheticLexer(ExtendedRegexLexer): + + def headline_callback(lexer, match, ctx): + equal_signs = match.group(1) + text = match.group(2) + yield match.start(), Generic.Headline, equal_signs + text + equal_signs + ctx.pos = match.end() + + tokens = { + 'root': [ + (r'(=+)(.*?)(\1)', headline_callback) + ] + } + +This might sound confusing (and it can really be). But it is needed, and for an +example look at the Ruby lexer in `ruby.py`_. + +.. _ruby.py: https://bitbucket.org/birkenfeld/pygments-main/src/tip/pygments/lexers/ruby.py + + +Handling Lists of Keywords +========================== + +For a relatively short list (hundreds) you can construct an optimized regular +expression directly using ``words()`` (longer lists, see next section). This +function handles a few things for you automatically, including escaping +metacharacters and Python's first-match rather than longest-match in +alternations. Feel free to put the lists themselves in +``pygments/lexers/_$lang_builtins.py`` (see examples there), and generated by +code if possible. + +An example of using ``words()`` is something like:: + + from pygments.lexer import RegexLexer, words, Name + + class MyLexer(RegexLexer): + + tokens = { + 'root': [ + (words(('else', 'elseif'), suffix=r'\b'), Name.Builtin), + (r'\w+', Name), + ], + } + +As you can see, you can add ``prefix`` and ``suffix`` parts to the constructed +regex. + + +Modifying Token Streams +======================= + +Some languages ship a lot of builtin functions (for example PHP). The total +amount of those functions differs from system to system because not everybody +has every extension installed. In the case of PHP there are over 3000 builtin +functions. That's an incredibly huge amount of functions, much more than you +want to put into a regular expression. + +But because only `Name` tokens can be function names this is solvable by +overriding the ``get_tokens_unprocessed()`` method. The following lexer +subclasses the `PythonLexer` so that it highlights some additional names as +pseudo keywords:: + + from pygments.lexers.python import PythonLexer + from pygments.token import Name, Keyword + + class MyPythonLexer(PythonLexer): + EXTRA_KEYWORDS = set(('foo', 'bar', 'foobar', 'barfoo', 'spam', 'eggs')) + + def get_tokens_unprocessed(self, text): + for index, token, value in PythonLexer.get_tokens_unprocessed(self, text): + if token is Name and value in self.EXTRA_KEYWORDS: + yield index, Keyword.Pseudo, value + else: + yield index, token, value + +The `PhpLexer` and `LuaLexer` use this method to resolve builtin functions. diff --git a/doc/_build/html/_sources/docs/lexers.txt b/doc/_build/html/_sources/docs/lexers.txt new file mode 100644 index 0000000..fefc940 --- /dev/null +++ b/doc/_build/html/_sources/docs/lexers.txt @@ -0,0 +1,69 @@ +.. -*- mode: rst -*- + +================ +Available lexers +================ + +This page lists all available builtin lexers and the options they take. + +Currently, **all lexers** support these options: + +`stripnl` + Strip leading and trailing newlines from the input (default: ``True``) + +`stripall` + Strip all leading and trailing whitespace from the input (default: + ``False``). + +`ensurenl` + Make sure that the input ends with a newline (default: ``True``). This + is required for some lexers that consume input linewise. + + .. versionadded:: 1.3 + +`tabsize` + If given and greater than 0, expand tabs in the input (default: ``0``). + +`encoding` + If given, must be an encoding name (such as ``"utf-8"``). This encoding + will be used to convert the input string to Unicode (if it is not already + a Unicode string). The default is ``"guess"``. + + If this option is set to ``"guess"``, a simple UTF-8 vs. Latin-1 + detection is used, if it is set to ``"chardet"``, the + `chardet library `__ is used to + guess the encoding of the input. + + .. versionadded:: 0.6 + + +The "Short Names" field lists the identifiers that can be used with the +`get_lexer_by_name()` function. + +These lexers are builtin and can be imported from `pygments.lexers`: + +.. pygmentsdoc:: lexers + + +Iterating over all lexers +------------------------- + +.. versionadded:: 0.6 + +To get all lexers (both the builtin and the plugin ones), you can +use the `get_all_lexers()` function from the `pygments.lexers` +module: + +.. sourcecode:: pycon + + >>> from pygments.lexers import get_all_lexers + >>> i = get_all_lexers() + >>> i.next() + ('Diff', ('diff',), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')) + >>> i.next() + ('Delphi', ('delphi', 'objectpascal', 'pas', 'pascal'), ('*.pas',), ('text/x-pascal',)) + >>> i.next() + ('XML+Ruby', ('xml+erb', 'xml+ruby'), (), ()) + +As you can see, the return value is an iterator which yields tuples +in the form ``(name, aliases, filetypes, mimetypes)``. diff --git a/doc/_build/html/_sources/docs/moinmoin.txt b/doc/_build/html/_sources/docs/moinmoin.txt new file mode 100644 index 0000000..8b2216b --- /dev/null +++ b/doc/_build/html/_sources/docs/moinmoin.txt @@ -0,0 +1,39 @@ +.. -*- mode: rst -*- + +============================ +Using Pygments with MoinMoin +============================ + +From Pygments 0.7, the source distribution ships a `Moin`_ parser plugin that +can be used to get Pygments highlighting in Moin wiki pages. + +To use it, copy the file `external/moin-parser.py` from the Pygments +distribution to the `data/plugin/parser` subdirectory of your Moin instance. +Edit the options at the top of the file (currently ``ATTACHMENTS`` and +``INLINESTYLES``) and rename the file to the name that the parser directive +should have. For example, if you name the file ``code.py``, you can get a +highlighted Python code sample with this Wiki markup:: + + {{{ + #!code python + [...] + }}} + +where ``python`` is the Pygments name of the lexer to use. + +Additionally, if you set the ``ATTACHMENTS`` option to True, Pygments will also +be called for all attachments for whose filenames there is no other parser +registered. + +You are responsible for including CSS rules that will map the Pygments CSS +classes to colors. You can output a stylesheet file with `pygmentize`, put it +into the `htdocs` directory of your Moin instance and then include it in the +`stylesheets` configuration option in the Moin config, e.g.:: + + stylesheets = [('screen', '/htdocs/pygments.css')] + +If you do not want to do that and are willing to accept larger HTML output, you +can set the ``INLINESTYLES`` option to True. + + +.. _Moin: http://moinmoin.wikiwikiweb.de/ diff --git a/doc/_build/html/_sources/docs/plugins.txt b/doc/_build/html/_sources/docs/plugins.txt new file mode 100644 index 0000000..a6f8d7b --- /dev/null +++ b/doc/_build/html/_sources/docs/plugins.txt @@ -0,0 +1,93 @@ +================ +Register Plugins +================ + +If you want to extend Pygments without hacking the sources, but want to +use the lexer/formatter/style/filter lookup functions (`lexers.get_lexer_by_name` +et al.), you can use `setuptools`_ entrypoints to add new lexers, formatters +or styles as if they were in the Pygments core. + +.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools + +That means you can use your highlighter modules with the `pygmentize` script, +which relies on the mentioned functions. + + +Entrypoints +=========== + +Here is a list of setuptools entrypoints that Pygments understands: + +`pygments.lexers` + + This entrypoint is used for adding new lexers to the Pygments core. + The name of the entrypoint values doesn't really matter, Pygments extracts + required metadata from the class definition: + + .. sourcecode:: ini + + [pygments.lexers] + yourlexer = yourmodule:YourLexer + + Note that you have to define ``name``, ``aliases`` and ``filename`` + attributes so that you can use the highlighter from the command line: + + .. sourcecode:: python + + class YourLexer(...): + name = 'Name Of Your Lexer' + aliases = ['alias'] + filenames = ['*.ext'] + + +`pygments.formatters` + + You can use this entrypoint to add new formatters to Pygments. The + name of an entrypoint item is the name of the formatter. If you + prefix the name with a slash it's used as a filename pattern: + + .. sourcecode:: ini + + [pygments.formatters] + yourformatter = yourmodule:YourFormatter + /.ext = yourmodule:YourFormatter + + +`pygments.styles` + + To add a new style you can use this entrypoint. The name of the entrypoint + is the name of the style: + + .. sourcecode:: ini + + [pygments.styles] + yourstyle = yourmodule:YourStyle + + +`pygments.filters` + + Use this entrypoint to register a new filter. The name of the + entrypoint is the name of the filter: + + .. sourcecode:: ini + + [pygments.filters] + yourfilter = yourmodule:YourFilter + + +How To Use Entrypoints +====================== + +This documentation doesn't explain how to use those entrypoints because this is +covered in the `setuptools documentation`_. That page should cover everything +you need to write a plugin. + +.. _setuptools documentation: http://peak.telecommunity.com/DevCenter/setuptools + + +Extending The Core +================== + +If you have written a Pygments plugin that is open source, please inform us +about that. There is a high chance that we'll add it to the Pygments +distribution. diff --git a/doc/_build/html/_sources/docs/quickstart.txt b/doc/_build/html/_sources/docs/quickstart.txt new file mode 100644 index 0000000..dba7698 --- /dev/null +++ b/doc/_build/html/_sources/docs/quickstart.txt @@ -0,0 +1,205 @@ +.. -*- mode: rst -*- + +=========================== +Introduction and Quickstart +=========================== + + +Welcome to Pygments! This document explains the basic concepts and terms and +gives a few examples of how to use the library. + + +Architecture +============ + +There are four types of components that work together highlighting a piece of +code: + +* A **lexer** splits the source into tokens, fragments of the source that + have a token type that determines what the text represents semantically + (e.g., keyword, string, or comment). There is a lexer for every language + or markup format that Pygments supports. +* The token stream can be piped through **filters**, which usually modify + the token types or text fragments, e.g. uppercasing all keywords. +* A **formatter** then takes the token stream and writes it to an output + file, in a format such as HTML, LaTeX or RTF. +* While writing the output, a **style** determines how to highlight all the + different token types. It maps them to attributes like "red and bold". + + +Example +======= + +Here is a small example for highlighting Python code: + +.. sourcecode:: python + + from pygments import highlight + from pygments.lexers import PythonLexer + from pygments.formatters import HtmlFormatter + + code = 'print "Hello World"' + print highlight(code, PythonLexer(), HtmlFormatter()) + +which prints something like this: + +.. sourcecode:: html + +
+
print "Hello World"
+
+ +As you can see, Pygments uses CSS classes (by default, but you can change that) +instead of inline styles in order to avoid outputting redundant style information over +and over. A CSS stylesheet that contains all CSS classes possibly used in the output +can be produced by: + +.. sourcecode:: python + + print HtmlFormatter().get_style_defs('.highlight') + +The argument to :func:`get_style_defs` is used as an additional CSS selector: +the output may look like this: + +.. sourcecode:: css + + .highlight .k { color: #AA22FF; font-weight: bold } + .highlight .s { color: #BB4444 } + ... + + +Options +======= + +The :func:`highlight()` function supports a fourth argument called *outfile*, it +must be a file object if given. The formatted output will then be written to +this file instead of being returned as a string. + +Lexers and formatters both support options. They are given to them as keyword +arguments either to the class or to the lookup method: + +.. sourcecode:: python + + from pygments import highlight + from pygments.lexers import get_lexer_by_name + from pygments.formatters import HtmlFormatter + + lexer = get_lexer_by_name("python", stripall=True) + formatter = HtmlFormatter(linenos=True, cssclass="source") + result = highlight(code, lexer, formatter) + +This makes the lexer strip all leading and trailing whitespace from the input +(`stripall` option), lets the formatter output line numbers (`linenos` option), +and sets the wrapping ``
``'s class to ``source`` (instead of +``highlight``). + +Important options include: + +`encoding` : for lexers and formatters + Since Pygments uses Unicode strings internally, this determines which + encoding will be used to convert to or from byte strings. +`style` : for formatters + The name of the style to use when writing the output. + + +For an overview of builtin lexers and formatters and their options, visit the +:doc:`lexer ` and :doc:`formatters ` lists. + +For a documentation on filters, see :doc:`this page `. + + +Lexer and formatter lookup +========================== + +If you want to lookup a built-in lexer by its alias or a filename, you can use +one of the following methods: + +.. sourcecode:: pycon + + >>> from pygments.lexers import (get_lexer_by_name, + ... get_lexer_for_filename, get_lexer_for_mimetype) + + >>> get_lexer_by_name('python') + + + >>> get_lexer_for_filename('spam.rb') + + + >>> get_lexer_for_mimetype('text/x-perl') + + +All these functions accept keyword arguments; they will be passed to the lexer +as options. + +A similar API is available for formatters: use :func:`.get_formatter_by_name()` +and :func:`.get_formatter_for_filename()` from the :mod:`pygments.formatters` +module for this purpose. + + +Guessing lexers +=============== + +If you don't know the content of the file, or you want to highlight a file +whose extension is ambiguous, such as ``.html`` (which could contain plain HTML +or some template tags), use these functions: + +.. sourcecode:: pycon + + >>> from pygments.lexers import guess_lexer, guess_lexer_for_filename + + >>> guess_lexer('#!/usr/bin/python\nprint "Hello World!"') + + + >>> guess_lexer_for_filename('test.py', 'print "Hello World!"') + + +:func:`.guess_lexer()` passes the given content to the lexer classes' +:meth:`analyse_text()` method and returns the one for which it returns the +highest number. + +All lexers have two different filename pattern lists: the primary and the +secondary one. The :func:`.get_lexer_for_filename()` function only uses the +primary list, whose entries are supposed to be unique among all lexers. +:func:`.guess_lexer_for_filename()`, however, will first loop through all lexers +and look at the primary and secondary filename patterns if the filename matches. +If only one lexer matches, it is returned, else the guessing mechanism of +:func:`.guess_lexer()` is used with the matching lexers. + +As usual, keyword arguments to these functions are given to the created lexer +as options. + + +Command line usage +================== + +You can use Pygments from the command line, using the :program:`pygmentize` +script:: + + $ pygmentize test.py + +will highlight the Python file test.py using ANSI escape sequences +(a.k.a. terminal colors) and print the result to standard output. + +To output HTML, use the ``-f`` option:: + + $ pygmentize -f html -o test.html test.py + +to write an HTML-highlighted version of test.py to the file test.html. +Note that it will only be a snippet of HTML, if you want a full HTML document, +use the "full" option:: + + $ pygmentize -f html -O full -o test.html test.py + +This will produce a full HTML document with included stylesheet. + +A style can be selected with ``-O style=``. + +If you need a stylesheet for an existing HTML file using Pygments CSS classes, +it can be created with:: + + $ pygmentize -S default -f html > style.css + +where ``default`` is the style name. + +More options and tricks and be found in the :doc:`command line reference +`. diff --git a/doc/_build/html/_sources/docs/rstdirective.txt b/doc/_build/html/_sources/docs/rstdirective.txt new file mode 100644 index 0000000..c0d503b --- /dev/null +++ b/doc/_build/html/_sources/docs/rstdirective.txt @@ -0,0 +1,22 @@ +.. -*- mode: rst -*- + +================================ +Using Pygments in ReST documents +================================ + +Many Python people use `ReST`_ for documentation their sourcecode, programs, +scripts et cetera. This also means that documentation often includes sourcecode +samples or snippets. + +You can easily enable Pygments support for your ReST texts using a custom +directive -- this is also how this documentation displays source code. + +From Pygments 0.9, the directive is shipped in the distribution as +`external/rst-directive.py`. You can copy and adapt this code to your liking. + +.. removed -- too confusing + *Loosely related note:* The ReST lexer now recognizes ``.. sourcecode::`` and + ``.. code::`` directives and highlights the contents in the specified language + if the `handlecodeblocks` option is true. + +.. _ReST: http://docutils.sf.net/rst.html diff --git a/doc/_build/html/_sources/docs/styles.txt b/doc/_build/html/_sources/docs/styles.txt new file mode 100644 index 0000000..d56db0d --- /dev/null +++ b/doc/_build/html/_sources/docs/styles.txt @@ -0,0 +1,145 @@ +.. -*- mode: rst -*- + +====== +Styles +====== + +Pygments comes with some builtin styles that work for both the HTML and +LaTeX formatter. + +The builtin styles can be looked up with the `get_style_by_name` function: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_style_by_name + >>> get_style_by_name('colorful') + + +You can pass a instance of a `Style` class to a formatter as the `style` +option in form of a string: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_style_by_name + >>> from pygments.formatters import HtmlFormatter + >>> HtmlFormatter(style='colorful').style + + +Or you can also import your own style (which must be a subclass of +`pygments.style.Style`) and pass it to the formatter: + +.. sourcecode:: pycon + + >>> from yourapp.yourmodule import YourStyle + >>> from pygments.formatters import HtmlFormatter + >>> HtmlFormatter(style=YourStyle).style + + + +Creating Own Styles +=================== + +So, how to create a style? All you have to do is to subclass `Style` and +define some styles: + +.. sourcecode:: python + + from pygments.style import Style + from pygments.token import Keyword, Name, Comment, String, Error, \ + Number, Operator, Generic + + class YourStyle(Style): + default_style = "" + styles = { + Comment: 'italic #888', + Keyword: 'bold #005', + Name: '#f00', + Name.Function: '#0f0', + Name.Class: 'bold #0f0', + String: 'bg:#eee #111' + } + +That's it. There are just a few rules. When you define a style for `Name` +the style automatically also affects `Name.Function` and so on. If you +defined ``'bold'`` and you don't want boldface for a subtoken use ``'nobold'``. + +(Philosophy: the styles aren't written in CSS syntax since this way +they can be used for a variety of formatters.) + +`default_style` is the style inherited by all token types. + +To make the style usable for Pygments, you must + +* either register it as a plugin (see :doc:`the plugin docs `) +* or drop it into the `styles` subpackage of your Pygments distribution one style + class per style, where the file name is the style name and the class name is + `StylenameClass`. For example, if your style should be called + ``"mondrian"``, name the class `MondrianStyle`, put it into the file + ``mondrian.py`` and this file into the ``pygments.styles`` subpackage + directory. + + +Style Rules +=========== + +Here a small overview of all allowed styles: + +``bold`` + render text as bold +``nobold`` + don't render text as bold (to prevent subtokens being highlighted bold) +``italic`` + render text italic +``noitalic`` + don't render text as italic +``underline`` + render text underlined +``nounderline`` + don't render text underlined +``bg:`` + transparent background +``bg:#000000`` + background color (black) +``border:`` + no border +``border:#ffffff`` + border color (white) +``#ff0000`` + text color (red) +``noinherit`` + don't inherit styles from supertoken + +Note that there may not be a space between ``bg:`` and the color value +since the style definition string is split at whitespace. +Also, using named colors is not allowed since the supported color names +vary for different formatters. + +Furthermore, not all lexers might support every style. + + +Builtin Styles +============== + +Pygments ships some builtin styles which are maintained by the Pygments team. + +To get a list of known styles you can use this snippet: + +.. sourcecode:: pycon + + >>> from pygments.styles import STYLE_MAP + >>> STYLE_MAP.keys() + ['default', 'emacs', 'friendly', 'colorful'] + + +Getting a list of available styles +================================== + +.. versionadded:: 0.6 + +Because it could be that a plugin registered a style, there is +a way to iterate over all styles: + +.. sourcecode:: pycon + + >>> from pygments.styles import get_all_styles + >>> styles = list(get_all_styles()) diff --git a/doc/_build/html/_sources/docs/tokens.txt b/doc/_build/html/_sources/docs/tokens.txt new file mode 100644 index 0000000..9193d5f --- /dev/null +++ b/doc/_build/html/_sources/docs/tokens.txt @@ -0,0 +1,352 @@ +.. -*- mode: rst -*- + +============== +Builtin Tokens +============== + +.. module:: pygments.token + +In the :mod:`pygments.token` module, there is a special object called `Token` +that is used to create token types. + +You can create a new token type by accessing an attribute of `Token`: + +.. sourcecode:: pycon + + >>> from pygments.token import Token + >>> Token.String + Token.String + >>> Token.String is Token.String + True + +Note that tokens are singletons so you can use the ``is`` operator for comparing +token types. + +As of Pygments 0.7 you can also use the ``in`` operator to perform set tests: + +.. sourcecode:: pycon + + >>> from pygments.token import Comment + >>> Comment.Single in Comment + True + >>> Comment in Comment.Multi + False + +This can be useful in :doc:`filters ` and if you write lexers on your +own without using the base lexers. + +You can also split a token type into a hierarchy, and get the parent of it: + +.. sourcecode:: pycon + + >>> String.split() + [Token, Token.Literal, Token.Literal.String] + >>> String.parent + Token.Literal + +In principle, you can create an unlimited number of token types but nobody can +guarantee that a style would define style rules for a token type. Because of +that, Pygments proposes some global token types defined in the +`pygments.token.STANDARD_TYPES` dict. + +For some tokens aliases are already defined: + +.. sourcecode:: pycon + + >>> from pygments.token import String + >>> String + Token.Literal.String + +Inside the :mod:`pygments.token` module the following aliases are defined: + +============= ============================ ==================================== +`Text` `Token.Text` for any type of text data +`Whitespace` `Token.Text.Whitespace` for specially highlighted whitespace +`Error` `Token.Error` represents lexer errors +`Other` `Token.Other` special token for data not + matched by a parser (e.g. HTML + markup in PHP code) +`Keyword` `Token.Keyword` any kind of keywords +`Name` `Token.Name` variable/function names +`Literal` `Token.Literal` Any literals +`String` `Token.Literal.String` string literals +`Number` `Token.Literal.Number` number literals +`Operator` `Token.Operator` operators (``+``, ``not``...) +`Punctuation` `Token.Punctuation` punctuation (``[``, ``(``...) +`Comment` `Token.Comment` any kind of comments +`Generic` `Token.Generic` generic tokens (have a look at + the explanation below) +============= ============================ ==================================== + +The `Whitespace` token type is new in Pygments 0.8. It is used only by the +`VisibleWhitespaceFilter` currently. + +Normally you just create token types using the already defined aliases. For each +of those token aliases, a number of subtypes exists (excluding the special tokens +`Token.Text`, `Token.Error` and `Token.Other`) + +The `is_token_subtype()` function in the `pygments.token` module can be used to +test if a token type is a subtype of another (such as `Name.Tag` and `Name`). +(This is the same as ``Name.Tag in Name``. The overloaded `in` operator was newly +introduced in Pygments 0.7, the function still exists for backwards +compatiblity.) + +With Pygments 0.7, it's also possible to convert strings to token types (for example +if you want to supply a token from the command line): + +.. sourcecode:: pycon + + >>> from pygments.token import String, string_to_tokentype + >>> string_to_tokentype("String") + Token.Literal.String + >>> string_to_tokentype("Token.Literal.String") + Token.Literal.String + >>> string_to_tokentype(String) + Token.Literal.String + + +Keyword Tokens +============== + +`Keyword` + For any kind of keyword (especially if it doesn't match any of the + subtypes of course). + +`Keyword.Constant` + For keywords that are constants (e.g. ``None`` in future Python versions). + +`Keyword.Declaration` + For keywords used for variable declaration (e.g. ``var`` in some programming + languages like JavaScript). + +`Keyword.Namespace` + For keywords used for namespace declarations (e.g. ``import`` in Python and + Java and ``package`` in Java). + +`Keyword.Pseudo` + For keywords that aren't really keywords (e.g. ``None`` in old Python + versions). + +`Keyword.Reserved` + For reserved keywords. + +`Keyword.Type` + For builtin types that can't be used as identifiers (e.g. ``int``, + ``char`` etc. in C). + + +Name Tokens +=========== + +`Name` + For any name (variable names, function names, classes). + +`Name.Attribute` + For all attributes (e.g. in HTML tags). + +`Name.Builtin` + Builtin names; names that are available in the global namespace. + +`Name.Builtin.Pseudo` + Builtin names that are implicit (e.g. ``self`` in Ruby, ``this`` in Java). + +`Name.Class` + Class names. Because no lexer can know if a name is a class or a function + or something else this token is meant for class declarations. + +`Name.Constant` + Token type for constants. In some languages you can recognise a token by the + way it's defined (the value after a ``const`` keyword for example). In + other languages constants are uppercase by definition (Ruby). + +`Name.Decorator` + Token type for decorators. Decorators are synatic elements in the Python + language. Similar syntax elements exist in C# and Java. + +`Name.Entity` + Token type for special entities. (e.g. `` `` in HTML). + +`Name.Exception` + Token type for exception names (e.g. ``RuntimeError`` in Python). Some languages + define exceptions in the function signature (Java). You can highlight + the name of that exception using this token then. + +`Name.Function` + Token type for function names. + +`Name.Label` + Token type for label names (e.g. in languages that support ``goto``). + +`Name.Namespace` + Token type for namespaces. (e.g. import paths in Java/Python), names following + the ``module``/``namespace`` keyword in other languages. + +`Name.Other` + Other names. Normally unused. + +`Name.Tag` + Tag names (in HTML/XML markup or configuration files). + +`Name.Variable` + Token type for variables. Some languages have prefixes for variable names + (PHP, Ruby, Perl). You can highlight them using this token. + +`Name.Variable.Class` + same as `Name.Variable` but for class variables (also static variables). + +`Name.Variable.Global` + same as `Name.Variable` but for global variables (used in Ruby, for + example). + +`Name.Variable.Instance` + same as `Name.Variable` but for instance variables. + + +Literals +======== + +`Literal` + For any literal (if not further defined). + +`Literal.Date` + for date literals (e.g. ``42d`` in Boo). + + +`String` + For any string literal. + +`String.Backtick` + Token type for strings enclosed in backticks. + +`String.Char` + Token type for single characters (e.g. Java, C). + +`String.Doc` + Token type for documentation strings (for example Python). + +`String.Double` + Double quoted strings. + +`String.Escape` + Token type for escape sequences in strings. + +`String.Heredoc` + Token type for "heredoc" strings (e.g. in Ruby or Perl). + +`String.Interpol` + Token type for interpolated parts in strings (e.g. ``#{foo}`` in Ruby). + +`String.Other` + Token type for any other strings (for example ``%q{foo}`` string constructs + in Ruby). + +`String.Regex` + Token type for regular expression literals (e.g. ``/foo/`` in JavaScript). + +`String.Single` + Token type for single quoted strings. + +`String.Symbol` + Token type for symbols (e.g. ``:foo`` in LISP or Ruby). + + +`Number` + Token type for any number literal. + +`Number.Bin` + Token type for binary literals (e.g. ``0b101010``). + +`Number.Float` + Token type for float literals (e.g. ``42.0``). + +`Number.Hex` + Token type for hexadecimal number literals (e.g. ``0xdeadbeef``). + +`Number.Integer` + Token type for integer literals (e.g. ``42``). + +`Number.Integer.Long` + Token type for long integer literals (e.g. ``42L`` in Python). + +`Number.Oct` + Token type for octal literals. + + +Operators +========= + +`Operator` + For any punctuation operator (e.g. ``+``, ``-``). + +`Operator.Word` + For any operator that is a word (e.g. ``not``). + + +Punctuation +=========== + +.. versionadded:: 0.7 + +`Punctuation` + For any punctuation which is not an operator (e.g. ``[``, ``(``...) + + +Comments +======== + +`Comment` + Token type for any comment. + +`Comment.Multiline` + Token type for multiline comments. + +`Comment.Preproc` + Token type for preprocessor comments (also ```. + +.. versionadded:: 0.7 + The formatters now also accept an `outencoding` option which will override + the `encoding` option if given. This makes it possible to use a single + options dict with lexers and formatters, and still have different input and + output encodings. + +.. _chardet: http://chardet.feedparser.org/ diff --git a/doc/_build/html/_sources/download.txt b/doc/_build/html/_sources/download.txt new file mode 100644 index 0000000..cf32f48 --- /dev/null +++ b/doc/_build/html/_sources/download.txt @@ -0,0 +1,41 @@ +Download and installation +========================= + +The current release is version |version|. + +Packaged versions +----------------- + +You can download it `from the Python Package Index +`_. For installation of packages from +PyPI, we recommend `Pip `_, which works on all +major platforms. + +Under Linux, most distributions include a package for Pygments, usually called +``pygments`` or ``python-pygments``. You can install it with the package +manager as usual. + +Development sources +------------------- + +We're using the `Mercurial `_ version control +system. You can get the development source using this command:: + + hg clone http://bitbucket.org/birkenfeld/pygments-main pygments + +Development takes place at `Bitbucket +`_, you can browse the source +online `here `_. + +The latest changes in the development source code are listed in the `changelog +`_. + +.. Documentation + ------------- + +.. XXX todo + + You can download the documentation either as + a bunch of rst files from the Mercurial repository, see above, or + as a tar.gz containing rendered HTML files:

+

pygmentsdocs.tar.gz

diff --git a/doc/_build/html/_sources/faq.txt b/doc/_build/html/_sources/faq.txt new file mode 100644 index 0000000..f040e05 --- /dev/null +++ b/doc/_build/html/_sources/faq.txt @@ -0,0 +1,143 @@ +:orphan: + +Pygments FAQ +============= + +What is Pygments? +----------------- + +Pygments is a syntax highlighting engine written in Python. That means, it will +take source code (or other markup) in a supported language and output a +processed version (in different formats) containing syntax highlighting markup. + +Its features include: + +* a wide range of common languages and markup formats is supported (look here + for a list) +* new languages and formats are added easily +* a number of output formats is available, including: + + - HTML + - ANSI sequences (console output) + - LaTeX + - RTF + +* it is usable as a command-line tool and as a library +* parsing and formatting is fast + +Pygments is licensed under the BSD license. + +Where does the name Pygments come from? +--------------------------------------- + +*Py* of course stands for Python, while *pigments* are used for coloring paint, +and in this case, source code! + +What are the system requirements? +--------------------------------- + +Pygments only needs a standard Python install, version 2.6 or higher or version +3.3 or higher for Python 3. No additional libraries are needed. + +How can I use Pygments? +----------------------- + +Pygments is usable as a command-line tool as well as a library. + +From the command-line, usage looks like this (assuming the pygmentize script is +properly installed):: + + pygmentize -f html /path/to/file.py + +This will print a HTML-highlighted version of /path/to/file.py to standard output. + +For a complete help, please run ``pygmentize -h``. + +Usage as a library is thoroughly demonstrated in the Documentation section. + +How do I make a new style? +-------------------------- + +Please see the :doc:`documentation on styles `. + +How can I report a bug or suggest a feature? +-------------------------------------------- + +Please report bugs and feature wishes in the tracker at Bitbucket. + +You can also e-mail the author or use IRC, see the contact details. + +I want this support for this language! +-------------------------------------- + +Instead of waiting for others to include language support, why not write it +yourself? All you have to know is :doc:`outlined in the docs +`. + +Can I use Pygments for programming language processing? +------------------------------------------------------- + +The Pygments lexing machinery is quite powerful can be used to build lexers for +basically all languages. However, parsing them is not possible, though some +lexers go some steps in this direction in order to e.g. highlight function names +differently. + +Also, error reporting is not the scope of Pygments. It focuses on correctly +highlighting syntactically valid documents, not finding and compensating errors. + +Who uses Pygments? +------------------ + +This is an (incomplete) list of projects and sites known to use the Pygments highlighter. + +* `Pygments API `_, a HTTP POST interface to Pygments +* `The Sphinx documentation builder `_, for embedded source examples +* `rst2pdf `_, a reStructuredText to PDF converter +* `Zine `_, a Python blogging system +* `Trac `_, the universal project management tool +* `Bruce `_, a reStructuredText presentation tool +* `AsciiDoc `_, a text-based documentation generator +* `ActiveState Code `_, the Python Cookbook successor +* `ViewVC `_, a web-based version control repository browser +* `BzrFruit `_, a Bazaar branch viewer +* `QBzr `_, a cross-platform Qt-based GUI front end for Bazaar +* `BitBucket `_, a Mercurial and Git hosting site +* `GitHub `_, a site offering secure Git hosting and collaborative development +* `Review Board `_, a collaborative code reviewing tool +* `skeletonz `_, a Python powered content management system +* `Diamanda `_, a Django powered wiki system with support for Pygments +* `Progopedia `_ (`English `_), + an encyclopedia of programming languages +* `Postmarkup `_, a BBCode to XHTML generator +* `Language Comparison `_, a site that compares different programming languages +* `BPython `_, a curses-based intelligent Python shell +* `Challenge-You! `_, a site offering programming challenges +* `PIDA `_, a universal IDE written in Python +* `PuDB `_, a console Python debugger +* `XWiki `_, a wiki-based development framework in Java, using Jython +* `roux `_, a script for running R scripts + and creating beautiful output including graphs +* `hurl `_, a web service for making HTTP requests +* `wxHTMLPygmentizer `_ is + a GUI utility, used to make code-colorization easier +* `WpPygments `_, a highlighter plugin for WordPress +* `LodgeIt `_, a pastebin with XMLRPC support and diffs +* `SpammCan `_, a pastebin (demo see + `here `_) +* `WowAce.com pastes `_, a pastebin +* `Siafoo `_, a tool for sharing and storing useful code and programming experience +* `D source `_, a community for the D programming language +* `dumpz.org `_, a pastebin +* `dpaste.com `_, another Django pastebin +* `PylonsHQ Pasties `_, a pastebin +* `Django snippets `_, a pastebin for Django code +* `Fayaa `_, a Chinese pastebin +* `Incollo.com `_, a free collaborative debugging tool +* `PasteBox `_, a pastebin focused on privacy +* `xinotes.org `_, a site to share notes, code snippets etc. +* `hilite.me `_, a site to highlight code snippets +* `patx.me `_, a pastebin + +If you have a project or web site using Pygments, drop me a line, and I'll add a +link here. + diff --git a/doc/_build/html/_sources/index.txt b/doc/_build/html/_sources/index.txt new file mode 100644 index 0000000..2611404 --- /dev/null +++ b/doc/_build/html/_sources/index.txt @@ -0,0 +1,54 @@ +Welcome! +======== + +This is the home of Pygments. It is a generic syntax highlighter suitable for +use in code hosting, forums, wikis or other applications that need to prettify +source code. Highlights are: + +* a wide range of over 300 languages and other text formats is supported +* special attention is paid to details that increase highlighting quality +* support for new languages and formats are added easily; most languages use a + simple regex-based lexing mechanism +* a number of output formats is available, among them HTML, RTF, LaTeX and ANSI + sequences +* it is usable as a command-line tool and as a library +* ... and it highlights even Perl 6! + +Read more in the :doc:`FAQ list ` or the :doc:`documentation `, +or `download the latest release `_. + +.. _contribute: + +Contribute +---------- + +Like every open-source project, we are always looking for volunteers to help us +with programming. Python knowledge is required, but don't fear: Python is a very +clear and easy to learn language. + +Development takes place on `Bitbucket +`_, where the Mercurial +repository, tickets and pull requests can be viewed. + +Our primary communication instrument is the IRC channel **#pocoo** on the +Freenode network. To join it, let your IRC client connect to +``irc.freenode.net`` and do ``/join #pocoo``. + +If you found a bug, just open a ticket in the Bitbucket tracker. Be sure to log +in to be notified when the issue is fixed -- development is not fast-paced as +the library is quite stable. You can also send an e-mail to the developers, see +below. + +The authors +----------- + +Pygments is maintained by **Georg Brandl**, e-mail address *georg*\ *@*\ *python.org*. + +Many lexers and fixes have been contributed by **Armin Ronacher**, the rest of +the `Pocoo `_ team and **Tim Hatch**. + +.. toctree:: + :maxdepth: 1 + :hidden: + + docs/index diff --git a/doc/_build/html/_sources/languages.txt b/doc/_build/html/_sources/languages.txt new file mode 100644 index 0000000..0f98c58 --- /dev/null +++ b/doc/_build/html/_sources/languages.txt @@ -0,0 +1,151 @@ +:orphan: + +Supported languages +=================== + +Pygments supports an ever-growing range of languages. Watch this space... + +Programming languages +--------------------- + +* ActionScript +* Ada +* ANTLR +* AppleScript +* Assembly (various) +* Asymptote +* Awk +* Befunge +* Boo +* BrainFuck +* C, C++ +* C# +* Clojure +* CoffeeScript +* ColdFusion +* Common Lisp +* Coq +* Cryptol (incl. Literate Cryptol) +* `Cython `_ +* `D `_ +* Dart +* Delphi +* Dylan +* Erlang +* Factor +* Fancy +* Fortran +* F# +* GAP +* Gherkin (Cucumber) +* GL shaders +* Groovy +* `Haskell `_ (incl. Literate Haskell) +* IDL +* Io +* Java +* JavaScript +* LLVM +* Logtalk +* `Lua `_ +* Matlab +* MiniD +* Modelica +* Modula-2 +* MuPad +* Nemerle +* Nimrod +* Objective-C +* Objective-J +* Octave +* OCaml +* PHP +* `Perl `_ +* PovRay +* PostScript +* PowerShell +* Prolog +* `Python `_ 2.x and 3.x (incl. console sessions and tracebacks) +* `REBOL `_ +* `Red `_ +* Redcode +* `Ruby `_ (incl. irb sessions) +* Rust +* S, S-Plus, R +* Scala +* Scheme +* Scilab +* Smalltalk +* SNOBOL +* Tcl +* Vala +* Verilog +* VHDL +* Visual Basic.NET +* Visual FoxPro +* XQuery +* Zephir + + +Template languages +------------------ + +* Cheetah templates +* `Django `_ / `Jinja + `_ templates +* ERB (Ruby templating) +* `Genshi `_ (the Trac template language) +* JSP (Java Server Pages) +* `Myghty `_ (the HTML::Mason based framework) +* `Mako `_ (the Myghty successor) +* `Smarty `_ templates (PHP templating) +* Tea + +Other markup +------------ + +* Apache config files +* Bash shell scripts +* BBCode +* CMake +* CSS +* Debian control files +* Diff files +* DTD +* Gettext catalogs +* Gnuplot script +* Groff markup +* HTML +* HTTP sessions +* INI-style config files +* IRC logs (irssi style) +* Lighttpd config files +* Makefiles +* MoinMoin/Trac Wiki markup +* MySQL +* Nginx config files +* POV-Ray scenes +* Ragel +* Redcode +* ReST +* Robot Framework +* RPM spec files +* SQL, also MySQL, SQLite +* Squid configuration +* TeX +* tcsh +* Vim Script +* Windows batch files +* XML +* XSLT +* YAML + +... that's all? +--------------- + +Well, why not write your own? Contributing to Pygments is easy and fun. Look +:doc:`here ` for the docs on lexer development and +:ref:`here ` for contact details. + +Note: the languages listed here are supported in the development version. The +latest release may lack a few of them. diff --git a/doc/_build/html/_static/ajax-loader.gif b/doc/_build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/basic.css b/doc/_build/html/_static/basic.css new file mode 100644 index 0000000..037fd64 --- /dev/null +++ b/doc/_build/html/_static/basic.css @@ -0,0 +1,599 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.container { + padding: 1em 1em 0; +} + +div.container div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/doc/_build/html/_static/comment-bright.png b/doc/_build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 GIT binary patch literal 3500 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/comment.png b/doc/_build/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 GIT binary patch literal 3445 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 Xn!ZpXD%P(H00000NkvXXu0mjf= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/_build/html/_static/down-pressed.png b/doc/_build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7c30d004b71b32bb2fc06b3bd4dc8278baab0946 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMor^(NtW3yF87Slz;1l8sq&LUMQwy<>&kwMol#tg zK_ydLmzem(vK1>2TzUEGl*lj!N<7$PCrdoWV0 z$w0*Ap!bZ4if7h;-yfL#MC0e;t{xY+$l~DX2EWYIPet1cohf^BdG+jXhtuq&W-0|c zKPmlKv-7OTjb}T)7@fTGd9y~u4{g8An;)c2U=w=nwQ7}zVDc>n+a literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/favicon.ico b/doc/_build/html/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..777f617dd904043a7ae5ae7469fc2b2afd18cee3 GIT binary patch literal 16958 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 XNySl69UDkT$>)lCmA+Hn{ipu}r=-;_ literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/file.png b/doc/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..254c60bfbe2715ae2edca48ebccfd074deb8031d GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w%FV~i&ZxO9L3Zxqw8>dd4I&zcKG){Yx14xKr0

ZQJ$m%mv17-NAAj}g)$7-<-@JMA z_U+TRK=AR}yLa#2zkmPX!-tO_KYsf3>Hq)#%qnY_1Fd8&3GxeO2wSmci|LJf=|BO- zByV>Yl`U*PX977no-U3d5|XS39sLdkFt8q|+|QqL_#ErUf6I%zFA7b%b>3$hFGGFs zc72AL|61pRJ1(+5wNdg|xP#*`gQ~lOnTFKiIjl#S3)+QV=h{~`9{M=hx#5uZ&-tIF sG!8onYS_8EFr8v&@CavkqYey&g)1epR*Fkm0PSV)boFyt=akR{044O6bN~PV literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/jquery-1.11.1.js b/doc/_build/html/_static/jquery-1.11.1.js new file mode 100644 index 0000000..d4b67f7 --- /dev/null +++ b/doc/_build/html/_static/jquery-1.11.1.js @@ -0,0 +1,10308 @@ +/*! + * jQuery JavaScript Library v1.11.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:42Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "

"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "