From 26ac52644c5a08e3671e5facf9eef262180576fa Mon Sep 17 00:00:00 2001 From: GaboFDC Date: Tue, 8 Mar 2016 10:33:39 -0500 Subject: [PATCH 1/5] Updated docstring to use rst format --- asterisk/agi.py | 9 ++++++--- asterisk/agitb.py | 30 ++++++++++++++++++++---------- asterisk/config.py | 16 +++++++++++++--- asterisk/fastagi.py | 18 +++++++++++++----- asterisk/manager.py | 11 ++++++++++- 5 files changed, 62 insertions(+), 22 deletions(-) diff --git a/asterisk/agi.py b/asterisk/agi.py index 90ed288..6336f14 100755 --- a/asterisk/agi.py +++ b/asterisk/agi.py @@ -1,8 +1,9 @@ #!/usr/bin/env python2 # vim: set et sw=4: -"""agi - -This module contains functions and classes to implment AGI scripts in python. +""" +.. module:: agi + :synopsis: This module contains functions and classes to implment AGI scripts in python. + pyvr {'agi_callerid' : 'mars.putland.int', @@ -17,6 +18,8 @@ pyvr 'agi_request' : 'pyst', 'agi_type' : 'IAX'} +Specification +------------- """ import sys diff --git a/asterisk/agitb.py b/asterisk/agitb.py index a712194..cdd3be9 100644 --- a/asterisk/agitb.py +++ b/asterisk/agitb.py @@ -1,20 +1,27 @@ -"""More comprehensive traceback formatting for Python scripts. +""" +.. module:: agitb + :synopsis: More comprehensive traceback formatting for Python scripts. + +Example +------- To enable this module, do: - import asterisk.agitb, asterisk.agi - asterisk.agitb.enable(display = False, logdir = '/var/log/asterisk/') +.. code-block:: python - agi = asterisk.agi.AGI() - asterisk.agitb.enable(agi, False, '/var/log/asterisk') + import asterisk.agitb, asterisk.agi + asterisk.agitb.enable(display = False, logdir = '/var/log/asterisk/') + + agi = asterisk.agi.AGI() + asterisk.agitb.enable(agi, False, '/var/log/asterisk') at the top of your script. The optional arguments to enable() are: - agi - the agi handle to write verbose messages to - display - if true, tracebacks are displayed on the asterisk console - (used with the agi option) - logdir - if set, tracebacks are written to files in this directory - context - number of lines of source code to show for each stack frame +* agi - the agi handle to write verbose messages to +* display - if true, tracebacks are displayed on the asterisk console + (used with the agi option) +* logdir - if set, tracebacks are written to files in this directory +* context - number of lines of source code to show for each stack frame By default, tracebacks are displayed but not saved, and the context is 5 lines. @@ -27,6 +34,9 @@ for you, call agitb.handler(). The optional argument to handler() is a If you do not pass anything to handler() it will use sys.exc_info(). This script was adapted from Ka-Ping Yee's cgitb. + +Specification +------------- """ __author__ = 'Matthew Nicholson' diff --git a/asterisk/config.py b/asterisk/config.py index b86a9ae..7c53b0b 100644 --- a/asterisk/config.py +++ b/asterisk/config.py @@ -1,13 +1,19 @@ #!/usr/bin/env python # vim: set expandtab: """ -Parse Asterisk configuration files. +.. module:: config + :synopsis: Parse Asterisk configuration files. This module provides parsing functionality for asterisk config files. +Example +---------- + +.. code-block:: python + import asterisk.config import sys - + # load and parse the config file try: config = asterisk.config.Config('/etc/asterisk/extensions.conf') @@ -17,13 +23,17 @@ This module provides parsing functionality for asterisk config files. except IOError as e: print "Error opening file: %s" % e.strerror sys.exit(1) - + # print our parsed output for category in config.categories: print '[%s]' % category.name # print the current category for item in category.items: print ' %s = %s' % (item.name, item.value) + + +Specification +------------- """ import sys diff --git a/asterisk/fastagi.py b/asterisk/fastagi.py index db76608..2e137fd 100755 --- a/asterisk/fastagi.py +++ b/asterisk/fastagi.py @@ -1,9 +1,17 @@ #!/usr/bin/env python -# FastAGI service for Asterisk -# Requires modified pyst2 to support reading stdin/out/err -# -# Copyright 2011 VOICE1, LLC -# By: Ben Davis + +""" +.. module:: fastagi + :synopsis: FastAGI service for Asterisk + +Requires modified pyst2 to support reading stdin/out/err + + Copyright 2011 VOICE1, LLC + By: Ben Davis + +Specification +------------- +""" import sys import SocketServer diff --git a/asterisk/manager.py b/asterisk/manager.py index 2f84f68..60e70d0 100644 --- a/asterisk/manager.py +++ b/asterisk/manager.py @@ -2,10 +2,16 @@ # vim: set expandtab shiftwidth=4: """ -Python Interface for Asterisk Manager +.. module:: manager + :synopsis: Python Interface for Asterisk Manager This module provides a Python API for interfacing with the asterisk manager. +Example +------- + +.. code-block:: python + import asterisk.manager import sys @@ -50,6 +56,9 @@ Remember all header, response, and event names are case sensitive. Not all manager actions are implmented as of yet, feel free to add them and submit patches. + +Specification +------------- """ import sys From 5dc07b628bbcc48995e22c302c10b8afe7ec564d Mon Sep 17 00:00:00 2001 From: GaboFDC Date: Tue, 8 Mar 2016 10:34:28 -0500 Subject: [PATCH 2/5] Initial Sphinx documentation, with quickstart and some minor changes --- docs/Makefile | 216 +++++++++++++++++++++++++++++ docs/make.bat | 263 +++++++++++++++++++++++++++++++++++ docs/source/agi.rst | 6 + docs/source/agitb.rst | 6 + docs/source/changes.rst | 5 + docs/source/conf.py | 294 ++++++++++++++++++++++++++++++++++++++++ docs/source/config.rst | 6 + docs/source/fastagi.rst | 6 + docs/source/index.rst | 29 ++++ docs/source/manager.rst | 6 + docs/source/readme.rst | 1 + 11 files changed, 838 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/make.bat create mode 100644 docs/source/agi.rst create mode 100644 docs/source/agitb.rst create mode 100644 docs/source/changes.rst create mode 100644 docs/source/conf.py create mode 100644 docs/source/config.rst create mode 100644 docs/source/fastagi.rst create mode 100644 docs/source/index.rst create mode 100644 docs/source/manager.rst create mode 100644 docs/source/readme.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..377f0d2 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,216 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = ../ + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/* + +.PHONY: html +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +.PHONY: dirhtml +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +.PHONY: singlehtml +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +.PHONY: pickle +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +.PHONY: json +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +.PHONY: htmlhelp +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +.PHONY: qthelp +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pyst2.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pyst2.qhc" + +.PHONY: applehelp +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +.PHONY: devhelp +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/pyst2" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pyst2" + @echo "# devhelp" + +.PHONY: epub +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +.PHONY: latex +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +.PHONY: latexpdf +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: latexpdfja +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: text +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +.PHONY: man +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +.PHONY: texinfo +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +.PHONY: info +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +.PHONY: gettext +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +.PHONY: changes +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +.PHONY: linkcheck +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +.PHONY: doctest +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +.PHONY: coverage +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +.PHONY: xml +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +.PHONY: pseudoxml +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..1e7677a --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,263 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source +set I18NSPHINXOPTS=%SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 1>NUL 2>NUL +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\pyst2.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\pyst2.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/docs/source/agi.rst b/docs/source/agi.rst new file mode 100644 index 0000000..151586f --- /dev/null +++ b/docs/source/agi.rst @@ -0,0 +1,6 @@ +AGI +========================= + +.. automodule:: asterisk.agi + :members: + diff --git a/docs/source/agitb.rst b/docs/source/agitb.rst new file mode 100644 index 0000000..90c9471 --- /dev/null +++ b/docs/source/agitb.rst @@ -0,0 +1,6 @@ +AGITB +========================= + +.. automodule:: asterisk.agitb + :members: + diff --git a/docs/source/changes.rst b/docs/source/changes.rst new file mode 100644 index 0000000..e815f47 --- /dev/null +++ b/docs/source/changes.rst @@ -0,0 +1,5 @@ +Changes +******* + +.. include:: ../../CHANGELOG + diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..d8c3d7f --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,294 @@ +# -*- coding: utf-8 -*- +# +# pyst2 documentation build configuration file, created by +# sphinx-quickstart on Mon Mar 7 10:41:33 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../../')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'pyst2' +copyright = u'2016, Randall Degges' +author = u'Randall Degges' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'0.4.9' +# The full version, including alpha/beta/rc tags. +release = u'0.4.9' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pyst2doc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'pyst2.tex', u'pyst2 Documentation', + u'Randall Degges', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'pyst2', u'pyst2 Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'pyst2', u'pyst2 Documentation', + author, 'pyst2', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/docs/source/config.rst b/docs/source/config.rst new file mode 100644 index 0000000..f9b03e9 --- /dev/null +++ b/docs/source/config.rst @@ -0,0 +1,6 @@ +Config +========================= + +.. automodule:: asterisk.config + :members: + diff --git a/docs/source/fastagi.rst b/docs/source/fastagi.rst new file mode 100644 index 0000000..753e25d --- /dev/null +++ b/docs/source/fastagi.rst @@ -0,0 +1,6 @@ +fastAGI +========================= + +.. automodule:: asterisk.fastagi + :members: + diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..196309b --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,29 @@ +.. pyst2 documentation master file, created by + sphinx-quickstart on Mon Mar 7 10:41:33 2016. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to pyst2's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 2 + + readme + agi + agitb + config + fastagi + manager + + changes + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/docs/source/manager.rst b/docs/source/manager.rst new file mode 100644 index 0000000..cbf7d39 --- /dev/null +++ b/docs/source/manager.rst @@ -0,0 +1,6 @@ +Manager +========================= + +.. automodule:: asterisk.manager + :members: + diff --git a/docs/source/readme.rst b/docs/source/readme.rst new file mode 100644 index 0000000..a6210d3 --- /dev/null +++ b/docs/source/readme.rst @@ -0,0 +1 @@ +.. include:: ../../README.rst From 00cb52915a7f6718e99cef3a8d180576c074f433 Mon Sep 17 00:00:00 2001 From: GaboFDC Date: Tue, 8 Mar 2016 10:36:00 -0500 Subject: [PATCH 3/5] Generated files by make --- doctrees/agi.doctree | Bin 0 -> 94021 bytes doctrees/agitb.doctree | Bin 0 -> 20736 bytes doctrees/changes.doctree | Bin 0 -> 41478 bytes doctrees/config.doctree | Bin 0 -> 5349 bytes doctrees/environment.pickle | Bin 0 -> 1349300 bytes doctrees/fastagi.doctree | Bin 0 -> 4376 bytes doctrees/index.doctree | Bin 0 -> 5552 bytes doctrees/manager.doctree | Bin 0 -> 20705 bytes doctrees/readme.doctree | Bin 0 -> 24920 bytes html/_modules/asterisk/agi.html | 808 ++ html/_modules/asterisk/agitb.html | 334 + html/_modules/asterisk/manager.html | 767 ++ html/_modules/index.html | 86 + html/_sources/agi.txt | 6 + html/_sources/agitb.txt | 6 + html/_sources/changes.txt | 5 + html/_sources/config.txt | 6 + html/_sources/fastagi.txt | 6 + html/_sources/index.txt | 29 + html/_sources/manager.txt | 6 + html/_sources/readme.txt | 1 + html/_static/ajax-loader.gif | Bin 0 -> 673 bytes html/_static/alabaster.css | 593 ++ html/_static/basic.css | 599 ++ html/_static/comment-bright.png | Bin 0 -> 3500 bytes html/_static/comment-close.png | Bin 0 -> 3578 bytes html/_static/comment.png | Bin 0 -> 3445 bytes html/_static/doctools.js | 263 + html/_static/down-pressed.png | Bin 0 -> 347 bytes html/_static/down.png | Bin 0 -> 347 bytes html/_static/file.png | Bin 0 -> 358 bytes html/_static/jquery-1.11.1.js | 10308 ++++++++++++++++++++++++++ html/_static/jquery.js | 4 + html/_static/minus.png | Bin 0 -> 173 bytes html/_static/plus.png | Bin 0 -> 173 bytes html/_static/pygments.css | 65 + html/_static/searchtools.js | 651 ++ html/_static/underscore-1.3.1.js | 999 +++ html/_static/underscore.js | 31 + html/_static/up-pressed.png | Bin 0 -> 345 bytes html/_static/up.png | Bin 0 -> 345 bytes html/_static/websupport.js | 808 ++ html/agi.html | 460 ++ html/agitb.html | 171 + html/changes.html | 317 + html/config.html | 136 + html/fastagi.html | 114 + html/genindex.html | 468 ++ html/index.html | 150 + html/manager.html | 201 + html/objects.inv | 7 + html/py-modindex.html | 160 + html/readme.html | 245 + html/search.html | 99 + html/searchindex.js | 1 + 55 files changed, 18910 insertions(+) create mode 100644 doctrees/agi.doctree create mode 100644 doctrees/agitb.doctree create mode 100644 doctrees/changes.doctree create mode 100644 doctrees/config.doctree create mode 100644 doctrees/environment.pickle create mode 100644 doctrees/fastagi.doctree create mode 100644 doctrees/index.doctree create mode 100644 doctrees/manager.doctree create mode 100644 doctrees/readme.doctree create mode 100644 html/_modules/asterisk/agi.html create mode 100644 html/_modules/asterisk/agitb.html create mode 100644 html/_modules/asterisk/manager.html create mode 100644 html/_modules/index.html create mode 100644 html/_sources/agi.txt create mode 100644 html/_sources/agitb.txt create mode 100644 html/_sources/changes.txt create mode 100644 html/_sources/config.txt create mode 100644 html/_sources/fastagi.txt create mode 100644 html/_sources/index.txt create mode 100644 html/_sources/manager.txt create mode 100644 html/_sources/readme.txt create mode 100644 html/_static/ajax-loader.gif create mode 100644 html/_static/alabaster.css create mode 100644 html/_static/basic.css create mode 100644 html/_static/comment-bright.png create mode 100644 html/_static/comment-close.png create mode 100644 html/_static/comment.png create mode 100644 html/_static/doctools.js create mode 100644 html/_static/down-pressed.png create mode 100644 html/_static/down.png create mode 100644 html/_static/file.png create mode 100644 html/_static/jquery-1.11.1.js create mode 100644 html/_static/jquery.js create mode 100644 html/_static/minus.png create mode 100644 html/_static/plus.png create mode 100644 html/_static/pygments.css create mode 100644 html/_static/searchtools.js create mode 100644 html/_static/underscore-1.3.1.js create mode 100644 html/_static/underscore.js create mode 100644 html/_static/up-pressed.png create mode 100644 html/_static/up.png create mode 100644 html/_static/websupport.js create mode 100644 html/agi.html create mode 100644 html/agitb.html create mode 100644 html/changes.html create mode 100644 html/config.html create mode 100644 html/fastagi.html create mode 100644 html/genindex.html create mode 100644 html/index.html create mode 100644 html/manager.html create mode 100644 html/objects.inv create mode 100644 html/py-modindex.html create mode 100644 html/readme.html create mode 100644 html/search.html create mode 100644 html/searchindex.js diff --git a/doctrees/agi.doctree b/doctrees/agi.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a1f311656b28f319fd2cdc3df39ba088ae88a982 GIT binary patch literal 94021 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

uw0`^gg;V3a*ZL8FUMNes3z@V1mZ}} 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 OQh3pH4W8xn@c#k-8Lqtm literal 0 HcmV?d00001 diff --git a/doctrees/changes.doctree b/doctrees/changes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..818f7b90da20f2e94c73188c7960a5a2889f289c GIT binary patch literal 41478 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 literal 0 HcmV?d00001 diff --git a/doctrees/config.doctree b/doctrees/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..54e33a1dd1681cb7a22a1171366d35f86d9b3af5 GIT binary patch literal 5349 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

5l$ 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

|z{bjl-@g?Ndm|x9OTYVM!G_#59Rv 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

Uqy=8=Bv^fU1H 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 literal 0 HcmV?d00001 diff --git a/doctrees/fastagi.doctree b/doctrees/fastagi.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7f81a0b04cd8773dcf33876e1d06f75d91096c5f GIT binary patch literal 4376 zcmcIoXLuCX6%_)NU67El!C)X+<3JV%X@QWK5KJ&&Y$Ck4@bD(_WHLMRcHcy^Gjr#? zQE@VfN#aCG;uNR%-g_@j@4ffldvCvU-puSuS`mNo=g+^iv-{@WbI&dBT;1GjJAoZ5 z*OTLZ;BZ;gk1g)2BCXhYmU9ia!IQa>MPdqmQ+^LrT%Jd2#+%4 zw%c%ROSyqh1J#&~%D66-t6)9wO@}um4JK4z!=V*PZnn6TRud+R2CZhpb{s`;Ysw&w zY))&ctmtq%h%$RaRkqHGRnQ0m;*KG&t9hv^JrUvgl_6ZDgZjfDJ9h zwJv6Zws1WMzUVxI&hHLia$CbK(t1R{A)yNpePm7Ns5Y`5)(`jqN}EJ4>(9Txuy!dZ zsEDA&D^05&x!fCfTl^o-EBo%FD17K2zL0i~Bj)1nZ zqNP;i)?)>d?vcn>XLFdSxBzO zi*z4QwJV{qve?+EjLWY)LE~bR*dQ(xo5dE^m!74HKp?xzqGX7R46)4+7aL-S5eqmJ zxtl%RUQY8FRO8+yrtf>pS=yJ-{oqn)H@o7x71wPU3fG?*w;U%cX4iN4Op)#nfR`q; zAE#MQ2C8=L|B3|OPfn^;b;>-fxfvll+ zP#@BugJskY40)U`t8D_DZfm7-mb#sHlt$L0=#ZruT#+*f9(3v!^)z~=$-&`+z{BB$ zF2DPEI07E}Gq-e96LBofIg0X%+VDb6woCE21&%pGSZr;b^;PQgI6YW)gt5q zK153Li8~_%Lc5CaAwcS>p3msC)aaTo@XDn;CKbmd5eKb0U>6&^)&DsL0bS)t>AuF4X?!5E{nSSsQhgPu&abNt0sC-6EYq*f%6p>&gUMz33D@L}P#G zIk2~xrH2X4-;D_wn!khK?`ROtMs8E6(%#*B_LR?-_FfHP+&X0R09G8eI`7Z4W<(>xq6n#LO}{yW~!}qep-xE1|kZ zdgopRt{a!PBjz;66=H);8zeXhacz1OsFsDMiELm{;GH;fYa4NIn+p`dL^ zkA0nutr~y0BpXCxorMOcNDQQNtJp4QDfCUE5{k7GEh?^GA}Xff($5X27s>Pz!}&$h zF*gI`%Z$%q5Vd$jkFK(zj_61)*d(FHut9vx zZqCOhbTb=~v#omIneCI3&KmSMHo8Qzq;EgopeL~NyN;XbPq!HKL{_j}l}a8-Pcmpu zQ^VG@wNZLE&qE4z5H6^wCmZyX?r9|DkLuu}R#j4?hQK*oRzR1uGFE zm@H-YLTOtrO!CRRt%Tl&w!@Un+rt^B=OSCrOX&HTpH1Snv_i!-=^r+{G(dU*zSgPH z!xp)FVU-QKPA(N+1gSW*I3JQ;Y|u;CP@C{92`^3PWo!gDI7Ydx%nYiemmBm7HYmAL znBS6Kxkw5%qQF<&cZz2$FNT1oR|WLygkDo->)PdDYIUYVm-Je|I1i?S$blpd@g4>N z{%GN{;8%Lpy=Pj&H>ycS{D;x4GzZpZ3+58~t8bEACw*wM#>&Go~Mt3=V2sv5n#I4Zm^p&I!gDc#FuHOjq zV;{k>;b|-KHDK7{R*ODbW$QKX4cAMvW}@GKS8@6n8^jM|+jsAC=;LgZ&$!ra(Au%g zx%mXR>9+&F;Wp`$d9F}#xZzwCMD!_Gw!OfbG`Sx5CNwR?g_irDo?}}PNvkt$7P4;2 zP;>Q}dA5@KQ}o$t9#<%N>>!SoN1xO5&4dA}%thTszU4{!JZ6gK1RGnb)ANYGFwa(J z`--Wnm%a#?x<(gO*_Ys=i+K7n>x)%mY(IU474z41L4Or*yZ+)7(brfZJvk;p!q?ea z({ZI$2bDQ5->9+zIyi(wcZR-+;apHw-JEtECFoldgKT(d9nrU0A3J>;}fCWl^fMS;|ESZ_`k@UlPwnnGA)1W_M zrFMf(Pfw4Bvq}Vh+Mo`fs^F-s(2w=i;45p!6p%KamN)bhELnlyq@S`aOX=w9f}e@o z*|45i<^lyjXT7dNzW~|*dn&fCJX61%XPdJ=;~r0&9V97XwpYYop_+42(^{4EYlCe_ ztJd`;kJ1&L`R3gy<$@L3vsuzV4f?Bq|=Lh>D6Q9;hhdEh-);;(g!uec$)-tLmQ3&Sp{m_WO3{>#lzF>b>`SXISY5>Pb%&AurMKL>%iV*4$Ov zlbQy`ma}dnd*CY?OlfsdbTKCvd|1cBR`6jp+$K1!5#4MkmwFgd59d-3C9J0=g3yN~ zbX0|oE-p4643gPyEo`?grDI?_=}qTCuOGh~=CEhBo62c;N^|K<1R>w$)Fk&b_nqo& zK{Z7X%?wi#)F!P;P8>NGntx9^&VFal?$LdFMo&4#*}HqsX(NTp;>4+Wk>mMZQ#)D& z%CdAIRx{+9hqDH)S(wlXgUKMO?{cb%b^`4v5htPVc-jd$WGU3*NP9s99^8>Is&hcc zH7z+m;P`>$H62Xx5!MB$019mo9jq%?a^v`^P_iW88l}2dl>rY&{J^`SbRM6&sHsX; z{SpkWO4*JQEX`*|q|&sBb!)F~0He*UJ2xh6VFgcX89-FH!?7tH2dmCB!co=q;0g}w zX-clRoZ_^VtuRm@Utv8}uQn--Q=NbpKWQ4SicYM6Z|Et7=WP|%nXPWGBy43EM4Wbv zb%Ht%0V;|P0h~`-4D-c&2Jx};{|rt#`Rc1^S4zW0v7Rjx8^pS#>Lu01$}59@92IB; zK3+;`cZe6e90zCjKoRiW6jS9Vpj&l)Rh#NIZ=PnSncYX(*XT*KbQsVZu z>~%iGZRho1i1m<^E-+#lzUM3{mdOQi68QysD5M%o>0zL^aJNj>(;}e@jTq%z47!L7 z=1E|98hSOkq=$PMteGv#E!iGX%M#a!=lfYz$u}10kvQ~GDP7z;bgbnxIR!Cu<|Ree z6D5r*m)xgI$Ck1FAgYCl&qd(-NWSBT#D?+CthVqOx(q>$j0dlzN0-^kdKg#fF^Ax8 zkd76s2dFp-XX&wra%bF*JOBicofK6n^tfVqybJ7*d3_`wca9E}$5&v%s|V!GQMGJO z!<(*BZI1km99eQAs1u)~iSl?i$S06H&6fHciEO3eMW|wuf;qZ8Td4^zGIecojzZ45 za*Y~?*s5GdQw0=76^e_(6`rUGF6tr>lbrQ5ycwT2wV>u$hw;e-b7jq**Hu@w~fQ~E$pU>!bIG3N;BYN3-|>`7Vug47iG{18(UYjvCm^` zp6TP^tfm!Mg3}Y=wP{LE#9_j4onF#wt4W9g=7s@k6Fmv?U76BVEj@EVSlWuI>?5MA z$$?ZC%*kf8e>-KoI3)7yA==y_bV(`(E zb*||J<2}&6rMLa!#|`ufcB9fh-H-=fA2#usW*F20y&&$ou#5^zFBF$$)`u!DT3lp; z$duy(y%;*&n9@r!9U$pTb92zkifpCPlWr0>*x19-!{+_vd_hjyAg(i}dIkJ%q1g0F zc-^Z~dNugk+;=0q4yCIrJC|N#oe;$jf5IStb4srT?E>T*F-(odb3YW-XvLd`q7(8xI>Ft>az~db)Jlq5eau+HY`k+JARoUsKun>@WM2x7yYCYmR)9}fIPOX5lbHa3 z<5Mj-K5gK*yA6)dw8L?i(c!azA@?-QTFtH`&pP z$X)yCTNU~?>qT0z)1RX6ROq`ViL+I$G0`^j-@{ZmFX7>V^7|F~ff1`2OAKA~!!qj$ z{Cr~k5hlj|g|aC6afN=u`df!(0{k?kpRv`5e>)4gS!z`D^9ucf^(d}2vaq6GE~qCH z()N6Q;Sw)QFlN)QV)}JTzbUezmML5_vOw@jMZbj@M`6s0rH{$jg;vjK%ZsOje8mZCocNOWTh#Q6*BG|kd1{gw5H=w1@EG@$o6{f%{?9s4`$^)a%d z_h~fgA4WuLTsP!XJfwe)0T`%(VL!^o^?zY{7hZ^ZZVCR4p{qX^BAd$b!{z-y-Am&W``~sbj;3}hUIE} zJjk{{)y8~q9(EMh&f0Pfhz_w8Jerb2mRY8FQ}M)ymW@yzWtUf@?#J-Z0CSFvyim!b z?fQ_h9`1c?OP*V0t>xL5T?U}TizekdOFUp4{jjUbW9;hSBE;l+EVIr;PYjpeRK)aJl#}Ib1i_eEhTg`KKes3j@$D7#12GL1rTq2mD!zG56Ctw|I z7TPL~D=lDkA{G#u)~^m*ahqLTr5d>1aw)-0my+ADhT*}uPb(|P9av*dD=|z@PmeTb zwTL5|7<@ie0<|j1q9H>@#$C^hD}uTR@vr4cW_e{8M|HW=JZ^3`-=Y{i86=n6*cdR0 z(>-jjU1oDf;LBn2Fo0lKi2Dc@53x;I-1Cr|i!%kgYT@QLG_nK|L{ScijSeMuW3eLl z7?$g7yaW+0f9xe9j|_gk+>4I~Ss!lR5ZKw$DOfVO-5Ru&q2)fTmXj)5ySU8Q%Qktc z*|f~wDaq6DoXY+9Es7z`K5IlNVMA?qn6}Kx(=Fi{_!XN`l#Wg1sNIBHkZd5$Z_032 lf?E-D_0-#{07{+-(uzC_zs&T>xXhAg<0X~%!*5a@`486>eqsOs literal 0 HcmV?d00001 diff --git a/doctrees/manager.doctree b/doctrees/manager.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7e5b4b7d99fd27bd66a6877262278a1f58917623 GIT binary patch literal 20705 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 G(EkBioMR^d literal 0 HcmV?d00001 diff --git a/doctrees/readme.doctree b/doctrees/readme.doctree new file mode 100644 index 0000000000000000000000000000000000000000..762f397aa1828bf4477ff473c817be975ecad4be GIT binary patch literal 24920 zcmeHP2YejG)i(y)(z;SiHDocTShB4XEry5?WZdEii()Ta5|s1a-AcQsyW5-DUCV-O zLQQahgpdkJAPrJU@4fe4N$H?wybMh~zS5R<%0AeP7C@P2o`wIJcp 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 + + + + + + + asterisk.agi — pyst2 0.4.9 documentation + + + + + + + + + + + + + + + + + +

+
+
+
+ +

Source code for asterisk.agi

+#!/usr/bin/env python2
+# vim: set et sw=4:
+"""
+.. module:: agi
+   :synopsis: This module contains functions and classes to implment AGI scripts in python. 
+   
+pyvr
+
+{'agi_callerid' : 'mars.putland.int',
+ 'agi_channel'  : 'IAX[kputland@kputland]/119',
+ 'agi_context'  : 'default',
+ 'agi_dnid'     : '1000',
+ 'agi_enhanced' : '0.0',
+ 'agi_extension': '1000',
+ 'agi_language' : 'en',
+ 'agi_priority' : '1',
+ 'agi_rdnis'    : '',
+ 'agi_request'  : 'pyst',
+ 'agi_type'     : 'IAX'}
+
+Specification
+-------------
+"""
+
+import sys
+import pprint
+import re
+import signal
+
+DEFAULT_TIMEOUT = 2000  # 2sec timeout used as default for functions that take timeouts
+DEFAULT_RECORD = 20000  # 20sec record time
+
+re_code = re.compile(r'(^\d*)\s*(.*)')
+re_kv = re.compile(r'(?P<key>\w+)=(?P<value>[^\s]+)\s*(?:\((?P<data>.*)\))*')
+
+
+class AGIException(Exception):
+    pass
+
+
+class AGIError(AGIException):
+    pass
+
+
+class AGIUnknownError(AGIError):
+    pass
+
+
+class AGIAppError(AGIError):
+    pass
+
+# there are several different types of hangups we can detect
+# they all are derrived from AGIHangup
+
+
+class AGIHangup(AGIAppError):
+    pass
+
+
+class AGISIGHUPHangup(AGIHangup):
+    pass
+
+
+class AGISIGPIPEHangup(AGIHangup):
+    pass
+
+
+class AGIResultHangup(AGIHangup):
+    pass
+
+
+class AGIDBError(AGIAppError):
+    pass
+
+
+class AGIUsageError(AGIError):
+    pass
+
+
+class AGIInvalidCommand(AGIError):
+    pass
+
+        
+
[docs]class AGI: + """ + This class encapsulates communication between Asterisk an a python script. + It handles encoding commands to Asterisk and parsing responses from + Asterisk. + """ + + def __init__(self, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr): + self.stdin = stdin + self.stdout = stdout + self.stderr = stderr + self._got_sighup = False + signal.signal(signal.SIGHUP, self._handle_sighup) # handle SIGHUP + self.stderr.write('ARGS: ') + self.stderr.write(str(sys.argv)) + self.stderr.write('\n') + self.env = {} + self._get_agi_env() + + def _get_agi_env(self): + while 1: + line = self.stdin.readline().strip() + self.stderr.write('ENV LINE: ') + self.stderr.write(line) + self.stderr.write('\n') + if line == '': + #blank line signals end + break + key, data = line.split(':')[0], ':'.join(line.split(':')[1:]) + key = key.strip() + data = data.strip() + if key != '': + self.env[key] = data + self.stderr.write('class AGI: self.env = ') + self.stderr.write(pprint.pformat(self.env)) + self.stderr.write('\n') + + def _quote(self, string): + """ provides double quotes to string, converts int/bool to string """ + if isinstance(string, int): + string = str(string) + if isinstance(string, float): + string = str(string) + return ''.join(['"', string.encode('ascii', 'ignore'), '"']) + + def _handle_sighup(self, signum, frame): + """Handle the SIGHUP signal""" + self._got_sighup = True + +
[docs] def test_hangup(self): + """This function throws AGIHangup if we have recieved a SIGHUP""" + if self._got_sighup: + raise AGISIGHUPHangup("Received SIGHUP from Asterisk")
+ + def execute(self, command, *args): + self.test_hangup() + + try: + self.send_command(command, *args) + return self.get_result() + except IOError as e: + if e.errno == 32: + # Broken Pipe * let us go + raise AGISIGPIPEHangup("Received SIGPIPE") + else: + raise + +
[docs] def send_command(self, command, *args): + """Send a command to Asterisk""" + command = command.strip() + command = '%s %s' % (command, ' '.join(map(str, args))) + command = command.strip() + if command[-1] != '\n': + command += '\n' + self.stderr.write(' COMMAND: %s' % command) + self.stdout.write(command) + self.stdout.flush()
+ +
[docs] def get_result(self, stdin=sys.stdin): + """Read the result of a command from Asterisk""" + code = 0 + result = {'result': ('', '')} + line = self.stdin.readline().strip() + self.stderr.write(' RESULT_LINE: %s\n' % line) + m = re_code.search(line) + if m: + code, response = m.groups() + code = int(code) + + if code == 200: + for key, value, data in re_kv.findall(response): + result[key] = (value, data) + + # If user hangs up... we get 'hangup' in the data + if data == 'hangup': + raise AGIResultHangup("User hungup during execution") + + if key == 'result' and value == '-1': + raise AGIAppError("Error executing application, or hangup") + + self.stderr.write(' RESULT_DICT: %s\n' % pprint.pformat(result)) + return result + elif code == 510: + raise AGIInvalidCommand(response) + elif code == 520: + usage = [line] + line = self.stdin.readline().strip() + while line[:3] != '520': + usage.append(line) + line = self.stdin.readline().strip() + usage.append(line) + usage = '%s\n' % '\n'.join(usage) + raise AGIUsageError(usage) + else: + raise AGIUnknownError(code, 'Unhandled code or undefined response')
+ + def _process_digit_list(self, digits): + if type(digits) is list: + digits = ''.join(map(str, digits)) + return self._quote(digits) + +
[docs] def answer(self): + """agi.answer() --> None + Answer channel if not already in answer state. + """ + self.execute('ANSWER')['result'][0]
+ +
[docs] def wait_for_digit(self, timeout=DEFAULT_TIMEOUT): + """agi.wait_for_digit(timeout=DEFAULT_TIMEOUT) --> digit + Waits for up to 'timeout' milliseconds for a channel to receive a DTMF + digit. Returns digit dialed + Throws AGIError on channel falure + """ + res = self.execute('WAIT FOR DIGIT', timeout)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except ValueError: + raise AGIError('Unable to convert result to digit: %s' % res)
+ +
[docs] def send_text(self, text=''): + """agi.send_text(text='') --> None + Sends the given text on a channel. Most channels do not support the + transmission of text. + Throws AGIError on error/hangup + """ + self.execute('SEND TEXT', self._quote(text))['result'][0]
+ +
[docs] def receive_char(self, timeout=DEFAULT_TIMEOUT): + """agi.receive_char(timeout=DEFAULT_TIMEOUT) --> chr + Receives a character of text on a channel. Specify timeout to be the + maximum time to wait for input in milliseconds, or 0 for infinite. Most channels + do not support the reception of text. + """ + res = self.execute('RECEIVE CHAR', timeout)['result'][0] + + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def tdd_mode(self, mode='off'): + """agi.tdd_mode(mode='on'|'off') --> None + Enable/Disable TDD transmission/reception on a channel. + Throws AGIAppError if channel is not TDD-capable. + """ + res = self.execute('TDD MODE', mode)['result'][0] + if res == '0': + raise AGIAppError('Channel %s is not TDD-capable')
+ +
[docs] def stream_file(self, filename, escape_digits='', sample_offset=0): + """agi.stream_file(filename, escape_digits='', sample_offset=0) --> digit + Send the given file, allowing playback to be interrupted by the given + digits, if any. escape_digits is a string '12345' or a list of + ints [1,2,3,4,5] or strings ['1','2','3'] or mixed [1,'2',3,'4'] + If sample offset is provided then the audio will seek to sample + offset before play starts. Returns digit if one was pressed. + Throws AGIError if the channel was disconnected. Remember, the file + extension must not be included in the filename. + """ + escape_digits = self._process_digit_list(escape_digits) + response = self.execute( + 'STREAM FILE', filename, escape_digits, sample_offset) + res = response['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def control_stream_file(self, filename, escape_digits='', skipms=3000, fwd='', rew='', pause=''): + """ + Send the given file, allowing playback to be interrupted by the given + digits, if any. escape_digits is a string '12345' or a list of + ints [1,2,3,4,5] or strings ['1','2','3'] or mixed [1,'2',3,'4'] + If sample offset is provided then the audio will seek to sample + offset before play starts. Returns digit if one was pressed. + Throws AGIError if the channel was disconnected. Remember, the file + extension must not be included in the filename. + """ + escape_digits = self._process_digit_list(escape_digits) + response = self.execute('CONTROL STREAM FILE', self._quote(filename), escape_digits, self._quote(skipms), self._quote(fwd), self._quote(rew), self._quote(pause)) + res = response['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def send_image(self, filename): + """agi.send_image(filename) --> None + Sends the given image on a channel. Most channels do not support the + transmission of images. Image names should not include extensions. + Throws AGIError on channel failure + """ + res = self.execute('SEND IMAGE', filename)['result'][0] + if res != '0': + raise AGIAppError('Channel falure on channel %s' % + self.env.get('agi_channel', 'UNKNOWN'))
+ +
[docs] def say_digits(self, digits, escape_digits=''): + """agi.say_digits(digits, escape_digits='') --> digit + Say a given digit string, returning early if any of the given DTMF digits + are received on the channel. + Throws AGIError on channel failure + """ + digits = self._process_digit_list(digits) + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('SAY DIGITS', digits, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_number(self, number, escape_digits=''): + """agi.say_number(number, escape_digits='') --> digit + Say a given digit string, returning early if any of the given DTMF digits + are received on the channel. + Throws AGIError on channel failure + """ + number = self._process_digit_list(number) + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('SAY NUMBER', number, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_alpha(self, characters, escape_digits=''): + """agi.say_alpha(string, escape_digits='') --> digit + Say a given character string, returning early if any of the given DTMF + digits are received on the channel. + Throws AGIError on channel failure + """ + characters = self._process_digit_list(characters) + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('SAY ALPHA', characters, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_phonetic(self, characters, escape_digits=''): + """agi.say_phonetic(string, escape_digits='') --> digit + Phonetically say a given character string, returning early if any of + the given DTMF digits are received on the channel. + Throws AGIError on channel failure + """ + characters = self._process_digit_list(characters) + escape_digits = self._process_digit_list(escape_digits) + res = self.execute( + 'SAY PHONETIC', characters, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_date(self, seconds, escape_digits=''): + """agi.say_date(seconds, escape_digits='') --> digit + Say a given date, returning early if any of the given DTMF digits are + pressed. The date should be in seconds since the UNIX Epoch (Jan 1, 1970 00:00:00) + """ + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('SAY DATE', seconds, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_time(self, seconds, escape_digits=''): + """agi.say_time(seconds, escape_digits='') --> digit + Say a given time, returning early if any of the given DTMF digits are + pressed. The time should be in seconds since the UNIX Epoch (Jan 1, 1970 00:00:00) + """ + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('SAY TIME', seconds, escape_digits)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def say_datetime(self, seconds, escape_digits='', format='', zone=''): + """agi.say_datetime(seconds, escape_digits='', format='', zone='') --> digit + Say a given date in the format specfied (see voicemail.conf), returning + early if any of the given DTMF digits are pressed. The date should be + in seconds since the UNIX Epoch (Jan 1, 1970 00:00:00). + """ + escape_digits = self._process_digit_list(escape_digits) + if format: + format = self._quote(format) + res = self.execute( + 'SAY DATETIME', seconds, escape_digits, format, zone)['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def get_data(self, filename, timeout=DEFAULT_TIMEOUT, max_digits=255): + """agi.get_data(filename, timeout=DEFAULT_TIMEOUT, max_digits=255) --> digits + Stream the given file and receive dialed digits + """ + result = self.execute('GET DATA', filename, timeout, max_digits) + res, value = result['result'] + return res
+ +
[docs] def get_option(self, filename, escape_digits='', timeout=0): + """agi.get_option(filename, escape_digits='', timeout=0) --> digit + Send the given file, allowing playback to be interrupted by the given + digits, if any. escape_digits is a string '12345' or a list of + ints [1,2,3,4,5] or strings ['1','2','3'] or mixed [1,'2',3,'4'] + Returns digit if one was pressed. + Throws AGIError if the channel was disconnected. Remember, the file + extension must not be included in the filename. + """ + escape_digits = self._process_digit_list(escape_digits) + if timeout: + response = self.execute( + 'GET OPTION', filename, escape_digits, timeout) + else: + response = self.execute('GET OPTION', filename, escape_digits) + + res = response['result'][0] + if res == '0': + return '' + else: + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to char: %s' % res)
+ +
[docs] def set_context(self, context): + """agi.set_context(context) + Sets the context for continuation upon exiting the application. + No error appears to be produced. Does not set exten or priority + Use at your own risk. Ensure that you specify a valid context. + """ + self.execute('SET CONTEXT', context)
+ +
[docs] def set_extension(self, extension): + """agi.set_extension(extension) + Sets the extension for continuation upon exiting the application. + No error appears to be produced. Does not set context or priority + Use at your own risk. Ensure that you specify a valid extension. + """ + self.execute('SET EXTENSION', extension)
+ +
[docs] def set_priority(self, priority): + """agi.set_priority(priority) + Sets the priority for continuation upon exiting the application. + No error appears to be produced. Does not set exten or context + Use at your own risk. Ensure that you specify a valid priority. + """ + self.execute('set priority', priority)
+ + def goto_on_exit(self, context='', extension='', priority=''): + context = context or self.env['agi_context'] + extension = extension or self.env['agi_extension'] + priority = priority or self.env['agi_priority'] + self.set_context(context) + self.set_extension(extension) + self.set_priority(priority) + +
[docs] def record_file(self, filename, format='gsm', escape_digits='#', timeout=DEFAULT_RECORD, offset=0, beep='beep'): + """agi.record_file(filename, format, escape_digits, timeout=DEFAULT_TIMEOUT, offset=0, beep='beep') --> None + Record to a file until a given dtmf digit in the sequence is received + The format will specify what kind of file will be recorded. The timeout + is the maximum record time in milliseconds, or -1 for no timeout. Offset + samples is optional, and if provided will seek to the offset without + exceeding the end of the file + """ + escape_digits = self._process_digit_list(escape_digits) + res = self.execute('RECORD FILE', self._quote(filename), format, + escape_digits, timeout, offset, beep)['result'][0] + try: + return chr(int(res)) + except: + raise AGIError('Unable to convert result to digit: %s' % res)
+ +
[docs] def set_autohangup(self, secs): + """agi.set_autohangup(secs) --> None + Cause the channel to automatically hangup at <secs> seconds in the + future. Of course it can be hungup before then as well. Setting to + 0 will cause the autohangup feature to be disabled on this channel. + """ + self.execute('SET AUTOHANGUP', secs)
+ +
[docs] def hangup(self, channel=''): + """agi.hangup(channel='') + Hangs up the specified channel. + If no channel name is given, hangs up the current channel + """ + self.execute('HANGUP', channel)
+ +
[docs] def appexec(self, application, options=''): + """agi.appexec(application, options='') + Executes <application> with given <options>. + Returns whatever the application returns, or -2 on failure to find + application + """ + result = self.execute('EXEC', application, self._quote(options)) + res = result['result'][0] + if res == '-2': + raise AGIAppError('Unable to find application: %s' % application) + return res
+ +
[docs] def set_callerid(self, number): + """agi.set_callerid(number) --> None + Changes the callerid of the current channel. + """ + self.execute('SET CALLERID', number)
+ +
[docs] def channel_status(self, channel=''): + """agi.channel_status(channel='') --> int + Returns the status of the specified channel. If no channel name is + given the returns the status of the current channel. + + Return values: + 0 Channel is down and available + 1 Channel is down, but reserved + 2 Channel is off hook + 3 Digits (or equivalent) have been dialed + 4 Line is ringing + 5 Remote end is ringing + 6 Line is up + 7 Line is busy + """ + try: + result = self.execute('CHANNEL STATUS', channel) + except AGIHangup: + raise + except AGIAppError: + result = {'result': ('-1', '')} + + return int(result['result'][0])
+ +
[docs] def set_variable(self, name, value): + """Set a channel variable. + """ + self.execute('SET VARIABLE', self._quote(name), self._quote(value))
+ +
[docs] def get_variable(self, name): + """Get a channel variable. + + This function returns the value of the indicated channel variable. If + the variable is not set, an empty string is returned. + """ + try: + result = self.execute('GET VARIABLE', self._quote(name)) + except AGIResultHangup: + result = {'result': ('1', 'hangup')} + + res, value = result['result'] + return value
+ +
[docs] def get_full_variable(self, name, channel=None): + """Get a channel variable. + + This function returns the value of the indicated channel variable. If + the variable is not set, an empty string is returned. + """ + try: + if channel: + result = self.execute('GET FULL VARIABLE', + self._quote(name), self._quote(channel)) + else: + result = self.execute('GET FULL VARIABLE', self._quote(name)) + + except AGIResultHangup: + result = {'result': ('1', 'hangup')} + + res, value = result['result'] + return value
+ +
[docs] def verbose(self, message, level=1): + """agi.verbose(message='', level=1) --> None + Sends <message> to the console via verbose message system. + <level> is the the verbose level (1-4) + """ + self.execute('VERBOSE', self._quote(message), level)
+ +
[docs] def database_get(self, family, key): + """agi.database_get(family, key) --> str + Retrieves an entry in the Asterisk database for a given family and key. + Returns 0 if <key> is not set. Returns 1 if <key> + is set and returns the variable in parenthesis + example return code: 200 result=1 (testvariable) + """ + family = '"%s"' % family + key = '"%s"' % key + result = self.execute( + 'DATABASE GET', self._quote(family), self._quote(key)) + res, value = result['result'] + if res == '0': + raise AGIDBError('Key not found in database: family=%s, key=%s' % + (family, key)) + elif res == '1': + return value + else: + raise AGIError('Unknown exception for : family=%s, key=%s, result=%s' % (family, key, pprint.pformat(result)))
+ +
[docs] def database_put(self, family, key, value): + """agi.database_put(family, key, value) --> None + Adds or updates an entry in the Asterisk database for a + given family, key, and value. + """ + result = self.execute('DATABASE PUT', self._quote( + family), self._quote(key), self._quote(value)) + res, value = result['result'] + if res == '0': + raise AGIDBError('Unable to put vaule in databale: family=%s, key=%s, value=%s' % (family, key, value))
+ +
[docs] def database_del(self, family, key): + """agi.database_del(family, key) --> None + Deletes an entry in the Asterisk database for a + given family and key. + """ + result = self.execute( + 'DATABASE DEL', self._quote(family), self._quote(key)) + res, value = result['result'] + if res == '0': + raise AGIDBError('Unable to delete from database: family=%s, key=%s' % (family, key))
+ +
[docs] def database_deltree(self, family, key=''): + """agi.database_deltree(family, key='') --> None + Deletes a family or specific keytree with in a family + in the Asterisk database. + """ + result = self.execute( + 'DATABASE DELTREE', self._quote(family), self._quote(key)) + res, value = result['result'] + if res == '0': + raise AGIDBError('Unable to delete tree from database: family=%s, key=%s' % (family, key))
+ +
[docs] def noop(self): + """agi.noop() --> None + Does nothing + """ + self.execute('NOOP')
+ +if __name__ == '__main__': + agi = AGI() + #agi.appexec('festival','Welcome to Klass Technologies. Thank you for calling.') + #agi.appexec('festival','This is a test of the text to speech engine.') + #agi.appexec('festival','Press 1 for sales ') + #agi.appexec('festival','Press 2 for customer support ') + #agi.hangup() + #agi.goto_on_exit(extension='1234', priority='1') + #sys.exit(0) + #agi.say_digits('123', [4,'5',6]) + #agi.say_digits([4,5,6]) + #agi.say_number('1234') + #agi.say_number('01234') # 668 + #agi.say_number('0xf5') # 245 + agi.get_data('demo-congrats') + agi.hangup() + sys.exit(0) + #agi.record_file('pyst-test') #FAILS + #agi.stream_file('demo-congrats', [1,2,3,4,5,6,7,8,9,0,'#','*']) + #agi.appexec('background','demo-congrats') + + try: + agi.appexec('backgrounder', 'demo-congrats') + except AGIAppError: + sys.stderr.write( + "Handled exception for missing application backgrounder\n") + + agi.set_variable('foo', 'bar') + agi.get_variable('foo') + + try: + agi.get_variable('foobar') + except AGIAppError: + sys.stderr.write("Handled exception for missing variable foobar\n") + + try: + agi.database_put('foo', 'bar', 'foobar') + agi.database_put('foo', 'baz', 'foobaz') + agi.database_put('foo', 'bat', 'foobat') + v = agi.database_get('foo', 'bar') + sys.stderr.write('DBVALUE foo:bar = %s\n' % v) + v = agi.database_get('bar', 'foo') + sys.stderr.write('DBVALUE foo:bar = %s\n' % v) + agi.database_del('foo', 'bar') + agi.database_deltree('foo') + except AGIDBError: + sys.stderr.write( + "Handled exception for missing database entry bar:foo\n") + + agi.hangup() +
+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/_modules/asterisk/agitb.html b/html/_modules/asterisk/agitb.html new file mode 100644 index 0000000..99ab568 --- /dev/null +++ b/html/_modules/asterisk/agitb.html @@ -0,0 +1,334 @@ + + + + + + + + asterisk.agitb — pyst2 0.4.9 documentation + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for asterisk.agitb

+"""
+.. module:: agi
+   :synopsis: More comprehensive traceback formatting for Python scripts.
+
+Example
+-------
+
+To enable this module, do:
+
+.. code-block:: python
+
+   import asterisk.agitb, asterisk.agi
+   asterisk.agitb.enable(display = False, logdir = '/var/log/asterisk/')
+
+   agi = asterisk.agi.AGI()
+   asterisk.agitb.enable(agi, False, '/var/log/asterisk')
+
+at the top of your script.  The optional arguments to enable() are:
+
+* agi         - the agi handle to write verbose messages to
+* display     - if true, tracebacks are displayed on the asterisk console
+  (used with the agi option)
+* logdir      - if set, tracebacks are written to files in this directory
+* context     - number of lines of source code to show for each stack frame
+
+By default, tracebacks are displayed but not saved, and the context is 5 lines.
+
+You may want to add a logdir if you call agitb.enable() before you have
+an agi.AGI() handle.
+
+Alternatively, if you have caught an exception and want agitb to display it
+for you, call agitb.handler().  The optional argument to handler() is a
+3-item tuple (etype, evalue, etb) just like the value of sys.exc_info().
+If you do not pass anything to handler() it will use sys.exc_info().
+
+This script was adapted from Ka-Ping Yee's cgitb.
+
+Specification
+-------------
+"""
+
+__author__ = 'Matthew Nicholson'
+__version__ = '0.1.0'
+
+import sys
+
+__UNDEF__ = []                          # a special sentinel object
+
+
+
[docs]def lookup(name, frame, locals): + """Find the value for a given name in the given environment.""" + if name in locals: + return 'local', locals[name] + if name in frame.f_globals: + return 'global', frame.f_globals[name] + if '__builtins__' in frame.f_globals: + builtins = frame.f_globals['__builtins__'] + if isinstance(builtins, type({})): + if name in builtins: + return 'builtin', builtins[name] + else: + if hasattr(builtins, name): + return 'builtin', getattr(builtins, name) + return None, __UNDEF__
+ + +
[docs]def scanvars(reader, frame, locals): + """Scan one logical line of Python and look up values of variables used.""" + import tokenize + import keyword + vars, lasttoken, parent, prefix, value = [], None, None, '', __UNDEF__ + for ttype, token, start, end, line in tokenize.generate_tokens(reader): + if ttype == tokenize.NEWLINE: + break + if ttype == tokenize.NAME and token not in keyword.kwlist: + if lasttoken == '.': + if parent is not __UNDEF__: + value = getattr(parent, token, __UNDEF__) + vars.append((prefix + token, prefix, value)) + else: + where, value = lookup(token, frame, locals) + vars.append((token, where, value)) + elif token == '.': + prefix += lasttoken + '.' + parent = value + else: + parent, prefix = None, '' + lasttoken = token + return vars
+ + +
[docs]def text(eparams, context=5): + """Return a plain text document describing a given traceback.""" + import os + import types + import time + import traceback + import linecache + import inspect + import pydoc + + etype, evalue, etb = eparams + if isinstance(etype, types.ClassType): + etype = etype.__name__ + pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable + date = time.ctime(time.time()) + head = "%s\n%s\n%s\n" % (str(etype), pyver, date) + ''' +A problem occurred in a Python script. Here is the sequence of +function calls leading up to the error, in the order they occurred. +''' + + frames = [] + records = inspect.getinnerframes(etb, context) + for frame, file, lnum, func, lines, index in records: + file = file and os.path.abspath(file) or '?' + args, varargs, varkw, locals = inspect.getargvalues(frame) + call = '' + if func != '?': + call = 'in ' + func + \ + inspect.formatargvalues(args, varargs, varkw, locals, + formatvalue=lambda value: '=' + pydoc.text.repr(value)) + + highlight = {} + + def reader(lnum=[lnum]): + highlight[lnum[0]] = 1 + try: + return linecache.getline(file, lnum[0]) + finally: + lnum[0] += 1 + vars = scanvars(reader, frame, locals) + + rows = [' %s %s' % (file, call)] + if index is not None: + i = lnum - index + for line in lines: + num = '%5d ' % i + rows.append(num + line.rstrip()) + i += 1 + + done, dump = {}, [] + for name, where, value in vars: + if name in done: + continue + done[name] = 1 + if value is not __UNDEF__: + if where == 'global': + name = 'global ' + name + elif where == 'local': + name = name + else: + name = where + name.split('.')[-1] + dump.append('%s = %s' % (name, pydoc.text.repr(value))) + else: + dump.append(name + ' undefined') + + rows.append('\n'.join(dump)) + frames.append('\n%s\n' % '\n'.join(rows)) + + exception = ['%s: %s' % (str(etype), str(evalue))] + if isinstance(evalue, types.InstanceType): + for name in dir(evalue): + value = pydoc.text.repr(getattr(evalue, name)) + exception.append('\n%s%s = %s' % (" " * 4, name, value)) + + import traceback + return head + ''.join(frames) + ''.join(exception) + ''' + +The above is a description of an error in a Python program. Here is +the original traceback: + +%s +''' % ''.join(traceback.format_exception(etype, evalue, etb))
+ + +
[docs]class Hook: + """A hook to replace sys.excepthook that shows tracebacks in HTML.""" + + def __init__(self, display=1, logdir=None, context=5, file=None, + agi=None): + self.display = display # send tracebacks to browser if true + self.logdir = logdir # log tracebacks to files if not None + self.context = context # number of source code lines per frame + self.file = file or sys.stderr # place to send the output + self.agi = agi + + def __call__(self, etype, evalue, etb): + self.handle((etype, evalue, etb)) + + def handle(self, info=None): + info = info or sys.exc_info() + + try: + doc = text(info, self.context) + except: # just in case something goes wrong + import traceback + doc = ''.join(traceback.format_exception(*info)) + + if self.display: + if self.agi: # print to agi + for line in doc.split('\n'): + self.agi.verbose(line, 4) + else: + self.file.write(doc + '\n') + + if self.agi: + self.agi.verbose('A problem occured in a python script', 4) + else: + self.file.write('A problem occured in a python script\n') + + if self.logdir is not None: + import os + import tempfile + (fd, path) = tempfile.mkstemp(suffix='.txt', dir=self.logdir) + try: + file = os.fdopen(fd, 'w') + file.write(doc) + file.close() + msg = '%s contains the description of this error.' % path + except: + msg = 'Tried to save traceback to %s, but failed.' % path + + if self.agi: + self.agi.verbose(msg, 4) + else: + self.file.write(msg + '\n') + + try: + self.file.flush() + except: + pass
+ + +handler = Hook().handle + + +
[docs]def enable(agi=None, display=1, logdir=None, context=5): + """Install an exception handler that formats tracebacks as HTML. + + The optional argument 'display' can be set to 0 to suppress sending the + traceback to the browser, and 'logdir' can be set to a directory to cause + tracebacks to be written to files there.""" + except_hook = Hook(display=display, logdir=logdir, + context=context, agi=agi) + sys.excepthook = except_hook + + global handler + handler = except_hook.handle
+
+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/_modules/asterisk/manager.html b/html/_modules/asterisk/manager.html new file mode 100644 index 0000000..6651772 --- /dev/null +++ b/html/_modules/asterisk/manager.html @@ -0,0 +1,767 @@ + + + + + + + + asterisk.manager — pyst2 0.4.9 documentation + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for asterisk.manager

+#!/usr/bin/env python
+# vim: set expandtab shiftwidth=4:
+
+"""
+.. module:: manager
+   :synopsis: Python Interface for Asterisk Manager
+
+This module provides a Python API for interfacing with the asterisk manager.
+
+Example
+-------
+
+.. code-block:: python
+
+   import asterisk.manager
+   import sys
+
+   def handle_shutdown(event, manager):
+      print "Recieved shutdown event"
+      manager.close()
+      # we could analize the event and reconnect here
+
+   def handle_event(event, manager):
+      print "Recieved event: %s" % event.name
+
+   manager = asterisk.manager.Manager()
+   try:
+       # connect to the manager
+       try:
+          manager.connect('host')
+          manager.login('user', 'secret')
+
+           # register some callbacks
+           manager.register_event('Shutdown', handle_shutdown) # shutdown
+           manager.register_event('*', handle_event)           # catch all
+
+           # get a status report
+           response = manager.status()
+
+           manager.logoff()
+       except asterisk.manager.ManagerSocketException as e:
+          print "Error connecting to the manager: %s" % e.strerror
+          sys.exit(1)
+       except asterisk.manager.ManagerAuthException as e:
+          print "Error logging in to the manager: %s" % e.strerror
+          sys.exit(1)
+       except asterisk.manager.ManagerException as e:
+          print "Error: %s" % e.strerror
+          sys.exit(1)
+
+   finally:
+      # remember to clean up
+      manager.close()
+
+Remember all header, response, and event names are case sensitive.
+
+Not all manager actions are implmented as of yet, feel free to add them
+and submit patches.
+
+Specification
+-------------
+"""
+
+import sys
+import os
+import socket
+import threading
+from six import PY3
+from six.moves import queue
+import re
+from types import *
+from time import sleep
+
+EOL = '\r\n'
+
+
+
[docs]class ManagerMsg(object): + """A manager interface message""" + def __init__(self, response): + # the raw response, straight from the horse's mouth: + self.response = response + self.data = '' + self.headers = {} + + # parse the response + self.parse(response) + + # This is an unknown message, may happen if a command (notably + # 'dialplan show something') contains a \n\r\n sequence in the + # middle of output. We hope this happens only *once* during a + # misbehaved command *and* the command ends with --END COMMAND-- + # in that case we return an Event. Otherwise we asume it is + # from a misbehaving command not returning a proper header (e.g. + # IAXnetstats in Asterisk 1.4.X) + # A better solution is probably to retain some knowledge of + # commands sent and their expected return syntax. In that case + # we could wait for --END COMMAND-- for 'command'. + # B0rken in asterisk. This should be parseable without context. + if 'Event' not in self.headers and 'Response' not in self.headers: + # there are commands that return the ActionID but not + # 'Response', e.g., IAXpeers in Asterisk 1.4.X + if self.has_header('ActionID'): + self.headers['Response'] = 'Generated Header' + elif '--END COMMAND--' in self.data: + self.headers['Event'] = 'NoClue' + else: + self.headers['Response'] = 'Generated Header' + +
[docs] def parse(self, response): + """Parse a manager message""" + + data = [] + for n, line in enumerate(response): + # all valid header lines end in \r\n + if not line.endswith('\r\n'): + data.extend(response[n:]) + break + try: + k, v = (x.strip() for x in line.split(':', 1)) + self.headers[k] = v + except ValueError: + # invalid header, start of multi-line data response + data.extend(response[n:]) + break + self.data = ''.join(data)
+ +
[docs] def has_header(self, hname): + """Check for a header""" + return hname in self.headers
+ +
[docs] def get_header(self, hname, defval=None): + """Return the specfied header""" + return self.headers.get(hname, defval)
+ + def __getitem__(self, hname): + """Return the specfied header""" + return self.headers[hname] + + def __repr__(self): + if 'Response' in self.headers: + return self.headers['Response'] + else: + return self.headers['Event']
+ + +
[docs]class Event(object): + """Manager interface Events, __init__ expects and 'Event' message""" + def __init__(self, message): + + # store all of the event data + self.message = message + self.data = message.data + self.headers = message.headers + + # if this is not an event message we have a problem + if not message.has_header('Event'): + raise ManagerException( + 'Trying to create event from non event message') + + # get the event name + self.name = message.get_header('Event') + +
[docs] def has_header(self, hname): + """Check for a header""" + return hname in self.headers
+ +
[docs] def get_header(self, hname, defval=None): + """Return the specfied header""" + return self.headers.get(hname, defval)
+ + def __getitem__(self, hname): + """Return the specfied header""" + return self.headers[hname] + + def __repr__(self): + return self.headers['Event'] + + def get_action_id(self): + return self.headers.get('ActionID', 0000)
+ + +class Manager(object): + def __init__(self): + self._sock = None # our socket + self.title = None # set by received greeting + self._connected = threading.Event() + self._running = threading.Event() + + # our hostname + self.hostname = socket.gethostname() + + # our queues + self._message_queue = queue.Queue() + self._response_queue = queue.Queue() + self._event_queue = queue.Queue() + + # callbacks for events + self._event_callbacks = {} + + self._reswaiting = [] # who is waiting for a response + + # sequence stuff + self._seqlock = threading.Lock() + self._seq = 0 + + # some threads + self.message_thread = threading.Thread(target=self.message_loop) + self.event_dispatch_thread = threading.Thread( + target=self.event_dispatch) + + self.message_thread.setDaemon(True) + self.event_dispatch_thread.setDaemon(True) + + def __del__(self): + self.close() + + def connected(self): + """ + Check if we are connected or not. + """ + return self._connected.isSet() + + def next_seq(self): + """Return the next number in the sequence, this is used for ActionID""" + self._seqlock.acquire() + try: + return self._seq + finally: + self._seq += 1 + self._seqlock.release() + + def send_action(self, cdict={}, **kwargs): + """ + Send a command to the manager + + If a list is passed to the cdict argument, each item in the list will + be sent to asterisk under the same header in the following manner: + + cdict = {"Action": "Originate", + "Variable": ["var1=value", "var2=value"]} + send_action(cdict) + + ... + + Action: Originate + Variable: var1=value + Variable: var2=value + """ + + if not self._connected.isSet(): + raise ManagerException("Not connected") + + # fill in our args + cdict.update(kwargs) + + # set the action id + if 'ActionID' not in cdict: + cdict['ActionID'] = '%s-%08x' % (self.hostname, self.next_seq()) + clist = [] + + # generate the command + for key, value in cdict.items(): + if isinstance(value, list): + for item in value: + item = tuple([key, item]) + clist.append('%s: %s' % item) + else: + item = tuple([key, value]) + clist.append('%s: %s' % item) + clist.append(EOL) + command = EOL.join(clist) + + # lock the socket and send our command + try: + self._sock.write(command.encode('utf8')) + self._sock.flush() + except socket.error as e: + raise ManagerSocketException(e.errno, e.strerror) + + self._reswaiting.insert(0, 1) + response = self._response_queue.get() + self._reswaiting.pop(0) + + if not response: + raise ManagerSocketException(0, 'Connection Terminated') + + return response + + def _receive_data(self): + """ + Read the response from a command. + """ + + multiline = False + status = False + wait_for_marker = False + eolcount = 0 + # loop while we are sill running and connected + while self._running.isSet() and self._connected.isSet(): + try: + lines = [] + for line in self._sock: + line = line.decode('utf8') + # check to see if this is the greeting line + if not self.title and '/' in line and not ':' in line: + # store the title of the manager we are connecting to: + self.title = line.split('/')[0].strip() + # store the version of the manager we are connecting to: + self.version = line.split('/')[1].strip() + # fake message header + lines.append('Response: Generated Header\r\n') + lines.append(line) + break + # If the line is EOL marker we have a complete message. + # Some commands are broken and contain a \n\r\n + # sequence, in the case wait_for_marker is set, we + # have such a command where the data ends with the + # marker --END COMMAND--, so we ignore embedded + # newlines until we see that marker + if line == EOL and not wait_for_marker: + multiline = False + if lines or not self._connected.isSet(): + break + # ignore empty lines at start + continue + # If the user executed the status command, it's a special + # case, so we need to look for a marker. + if 'status will follow' in line: + status = True + wait_for_marker = True + lines.append(line) + + # line not ending in \r\n or without ':' isn't a + # valid header and starts multiline response + if not line.endswith('\r\n') or ':' not in line: + multiline = True + # Response: Follows indicates we should wait for end + # marker --END COMMAND-- + if not (multiline or status) and line.startswith('Response') and \ + line.split(':', 1)[1].strip() == 'Follows': + wait_for_marker = True + # same when seeing end of multiline response + if multiline and (line.startswith('--END COMMAND--') or line.strip().endswith('--END COMMAND--')): + wait_for_marker = False + multiline = False + # same when seeing end of status response + if status and 'StatusComplete' in line: + wait_for_marker = False + status = False + if not self._connected.isSet(): + break + else: + # EOF during reading + self._sock.close() + self._connected.clear() + # if we have a message append it to our queue + if lines and self._connected.isSet(): + self._message_queue.put(lines) + else: + self._message_queue.put(None) + except socket.error: + self._sock.close() + self._connected.clear() + self._message_queue.put(None) + + def register_event(self, event, function): + """ + Register a callback for the specfied event. + If a callback function returns True, no more callbacks for that + event will be executed. + """ + + # get the current value, or an empty list + # then add our new callback + current_callbacks = self._event_callbacks.get(event, []) + current_callbacks.append(function) + self._event_callbacks[event] = current_callbacks + + def unregister_event(self, event, function): + """ + Unregister a callback for the specified event. + """ + current_callbacks = self._event_callbacks.get(event, []) + current_callbacks.remove(function) + self._event_callbacks[event] = current_callbacks + + def message_loop(self): + """ + The method for the event thread. + This actually recieves all types of messages and places them + in the proper queues. + """ + + # start a thread to recieve data + t = threading.Thread(target=self._receive_data) + t.setDaemon(True) + t.start() + + try: + # loop getting messages from the queue + while self._running.isSet(): + # get/wait for messages + data = self._message_queue.get() + + # if we got None as our message we are done + if not data: + # notify the other queues + self._event_queue.put(None) + for waiter in self._reswaiting: + self._response_queue.put(None) + break + + # parse the data + message = ManagerMsg(data) + + # check if this is an event message + if message.has_header('Event'): + self._event_queue.put(Event(message)) + # check if this is a response + elif message.has_header('Response'): + self._response_queue.put(message) + else: + print('No clue what we got\n%s' % message.data) + finally: + # wait for our data receiving thread to exit + t.join() + + def event_dispatch(self): + """This thread is responsible for dispatching events""" + + # loop dispatching events + while self._running.isSet(): + # get/wait for an event + ev = self._event_queue.get() + + # if we got None as an event, we are finished + if not ev: + break + + # dispatch our events + + # first build a list of the functions to execute + callbacks = (self._event_callbacks.get(ev.name, []) + + self._event_callbacks.get('*', [])) + + # now execute the functions + for callback in callbacks: + if callback(ev, self): + break + + def connect(self, host, port=5038): + """Connect to the manager interface""" + + if self._connected.isSet(): + raise ManagerException('Already connected to manager') + + # make sure host is a string + assert type(host) is str + + port = int(port) # make sure port is an int + + # create our socket and connect + try: + _sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + _sock.connect((host, port)) + if PY3: + self._sock = _sock.makefile(mode='rwb', buffering=0) + else: + self._sock = _sock.makefile() + _sock.close() + except socket.error as e: + raise ManagerSocketException(e.errno, e.strerror) + + # we are connected and running + self._connected.set() + self._running.set() + + # start the event thread + self.message_thread.start() + + # start the event dispatching thread + self.event_dispatch_thread.start() + + # get our initial connection response + return self._response_queue.get() + + def close(self): + """Shutdown the connection to the manager""" + + # if we are still running, logout + if self._running.isSet() and self._connected.isSet(): + self.logoff() + + if self._running.isSet(): + # put None in the message_queue to kill our threads + self._message_queue.put(None) + + # wait for the event thread to exit + self.message_thread.join() + + # make sure we do not join our self (when close is called from event handlers) + if threading.currentThread() != self.event_dispatch_thread: + # wait for the dispatch thread to exit + self.event_dispatch_thread.join() + + self._running.clear() + +# Manager actions + + def login(self, username, secret): + """Login to the manager, throws ManagerAuthException when login falis""" + + cdict = {'Action': 'Login'} + cdict['Username'] = username + cdict['Secret'] = secret + response = self.send_action(cdict) + + if response.get_header('Response') == 'Error': + raise ManagerAuthException(response.get_header('Message')) + + return response + + def ping(self): + """Send a ping action to the manager""" + cdict = {'Action': 'Ping'} + response = self.send_action(cdict) + return response + + def logoff(self): + """Logoff from the manager""" + + cdict = {'Action': 'Logoff'} + response = self.send_action(cdict) + + return response + + def hangup(self, channel): + """Hangup the specified channel""" + + cdict = {'Action': 'Hangup'} + cdict['Channel'] = channel + response = self.send_action(cdict) + + return response + + def status(self, channel=''): + """Get a status message from asterisk""" + + cdict = {'Action': 'Status'} + cdict['Channel'] = channel + response = self.send_action(cdict) + + return response + + def redirect(self, channel, exten, priority='1', extra_channel='', context=''): + """Redirect a channel""" + + cdict = {'Action': 'Redirect'} + cdict['Channel'] = channel + cdict['Exten'] = exten + cdict['Priority'] = priority + if context: + cdict['Context'] = context + if extra_channel: + cdict['ExtraChannel'] = extra_channel + response = self.send_action(cdict) + + return response + + def originate(self, channel, exten, context='', priority='', timeout='', caller_id='', async=False, account='', variables={}): + """Originate a call""" + + cdict = {'Action': 'Originate'} + cdict['Channel'] = channel + cdict['Exten'] = exten + if context: + cdict['Context'] = context + if priority: + cdict['Priority'] = priority + if timeout: + cdict['Timeout'] = timeout + if caller_id: + cdict['CallerID'] = caller_id + if async: + cdict['Async'] = 'yes' + if account: + cdict['Account'] = account + # join dict of vairables together in a string in the form of 'key=val|key=val' + # with the latest CVS HEAD this is no longer necessary + # if variables: cdict['Variable'] = '|'.join(['='.join((str(key), str(value))) for key, value in variables.items()]) + if variables: + cdict['Variable'] = ['='.join( + (str(key), str(value))) for key, value in variables.items()] + + response = self.send_action(cdict) + + return response + + def mailbox_status(self, mailbox): + """Get the status of the specfied mailbox""" + + cdict = {'Action': 'MailboxStatus'} + cdict['Mailbox'] = mailbox + response = self.send_action(cdict) + + return response + + def command(self, command): + """Execute a command""" + + cdict = {'Action': 'Command'} + cdict['Command'] = command + response = self.send_action(cdict) + + return response + + def extension_state(self, exten, context): + """Get the state of an extension""" + + cdict = {'Action': 'ExtensionState'} + cdict['Exten'] = exten + cdict['Context'] = context + response = self.send_action(cdict) + + return response + + def playdtmf(self, channel, digit): + """Plays a dtmf digit on the specified channel""" + + cdict = {'Action': 'PlayDTMF'} + cdict['Channel'] = channel + cdict['Digit'] = digit + response = self.send_action(cdict) + + return response + + def absolute_timeout(self, channel, timeout): + """Set an absolute timeout on a channel""" + + cdict = {'Action': 'AbsoluteTimeout'} + cdict['Channel'] = channel + cdict['Timeout'] = timeout + response = self.send_action(cdict) + return response + + def mailbox_count(self, mailbox): + cdict = {'Action': 'MailboxCount'} + cdict['Mailbox'] = mailbox + response = self.send_action(cdict) + return response + + def sippeers(self): + cdict = {'Action': 'Sippeers'} + response = self.send_action(cdict) + return response + + def sipshowpeer(self, peer): + cdict = {'Action': 'SIPshowpeer'} + cdict['Peer'] = peer + response = self.send_action(cdict) + return response + + def reload(self, module): + """ Reloads config for a given module """ + + cdict = {'Action': 'Reload'} + cdict['Module'] = module + response = self.send_action(cdict) + return response + + +class ManagerException(Exception): + pass + + +class ManagerSocketException(ManagerException): + pass + + +class ManagerAuthException(ManagerException): + pass +
+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/_modules/index.html b/html/_modules/index.html new file mode 100644 index 0000000..aca1306 --- /dev/null +++ b/html/_modules/index.html @@ -0,0 +1,86 @@ + + + + + + + + Overview: module code — pyst2 0.4.9 documentation + + + + + + + + + + + + + + + + +
+
+
+
+ +

All modules for which code is available

+ + +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/_sources/agi.txt b/html/_sources/agi.txt new file mode 100644 index 0000000..151586f --- /dev/null +++ b/html/_sources/agi.txt @@ -0,0 +1,6 @@ +AGI +========================= + +.. automodule:: asterisk.agi + :members: + diff --git a/html/_sources/agitb.txt b/html/_sources/agitb.txt new file mode 100644 index 0000000..90c9471 --- /dev/null +++ b/html/_sources/agitb.txt @@ -0,0 +1,6 @@ +AGITB +========================= + +.. automodule:: asterisk.agitb + :members: + diff --git a/html/_sources/changes.txt b/html/_sources/changes.txt new file mode 100644 index 0000000..e815f47 --- /dev/null +++ b/html/_sources/changes.txt @@ -0,0 +1,5 @@ +Changes +******* + +.. include:: ../../CHANGELOG + diff --git a/html/_sources/config.txt b/html/_sources/config.txt new file mode 100644 index 0000000..f9b03e9 --- /dev/null +++ b/html/_sources/config.txt @@ -0,0 +1,6 @@ +Config +========================= + +.. automodule:: asterisk.config + :members: + diff --git a/html/_sources/fastagi.txt b/html/_sources/fastagi.txt new file mode 100644 index 0000000..753e25d --- /dev/null +++ b/html/_sources/fastagi.txt @@ -0,0 +1,6 @@ +fastAGI +========================= + +.. automodule:: asterisk.fastagi + :members: + diff --git a/html/_sources/index.txt b/html/_sources/index.txt new file mode 100644 index 0000000..196309b --- /dev/null +++ b/html/_sources/index.txt @@ -0,0 +1,29 @@ +.. pyst2 documentation master file, created by + sphinx-quickstart on Mon Mar 7 10:41:33 2016. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to pyst2's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 2 + + readme + agi + agitb + config + fastagi + manager + + changes + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/html/_sources/manager.txt b/html/_sources/manager.txt new file mode 100644 index 0000000..cbf7d39 --- /dev/null +++ b/html/_sources/manager.txt @@ -0,0 +1,6 @@ +Manager +========================= + +.. automodule:: asterisk.manager + :members: + diff --git a/html/_sources/readme.txt b/html/_sources/readme.txt new file mode 100644 index 0000000..a6210d3 --- /dev/null +++ b/html/_sources/readme.txt @@ -0,0 +1 @@ +.. include:: ../../README.rst diff --git a/html/_static/ajax-loader.gif b/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/html/_static/alabaster.css b/html/_static/alabaster.css new file mode 100644 index 0000000..bc420a4 --- /dev/null +++ b/html/_static/alabaster.css @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; + font-size: 17px; + background-color: white; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebar { + font-size: 14px; + line-height: 1.5; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: 'Garamond', 'Georgia', serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #FCC; + border: 1px solid #FAA; +} + +div.admonition tt.xref, div.admonition a tt { + border-bottom: 1px solid #fafafa; +} + +dd div.admonition { + margin-left: -60px; + padding-left: 60px; +} + +div.admonition p.admonition-title { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: white; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #eee; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +table.footnote td.label { + width: 0px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +dl dl pre { + margin-left: -90px; + padding-left: 90px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid white; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: white; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: white; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} \ No newline at end of file diff --git a/html/_static/basic.css b/html/_static/basic.css new file mode 100644 index 0000000..c89fc7e --- /dev/null +++ b/html/_static/basic.css @@ -0,0 +1,599 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2016 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.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper 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/html/_static/comment-bright.png b/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/html/_static/comment.png b/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) + 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/html/_static/down-pressed.png b/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/html/_static/file.png b/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/html/_static/jquery-1.11.1.js b/html/_static/jquery-1.11.1.js new file mode 100644 index 0000000..d4b67f7 --- /dev/null +++ b/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( "