summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorBob Ippolito <bob@redivi.com>2008-09-27 15:55:05 +0000
committerBob Ippolito <bob@redivi.com>2008-09-27 15:55:05 +0000
commit41cb5114519b8ed175bca56af2e9e673f570ad88 (patch)
treec8f1e560c517d7ff94cd38660ccfbcc57d89a9fa /docs
parent0acf8b44f644756d6b874887b251d810f4f500dd (diff)
downloadsimplejson-41cb5114519b8ed175bca56af2e9e673f570ad88.tar.gz
switch to sphinx for docs
git-svn-id: http://simplejson.googlecode.com/svn/trunk@127 a4795897-2c25-0410-b006-0d3caba88fa1
Diffstat (limited to 'docs')
-rw-r--r--docs/_sources/index.txt404
-rw-r--r--docs/_static/contents.pngbin0 -> 202 bytes
-rw-r--r--docs/_static/default.css833
-rw-r--r--docs/_static/doctools.js352
-rw-r--r--docs/_static/file.pngbin0 -> 392 bytes
-rw-r--r--docs/_static/interface.js8
-rw-r--r--docs/_static/jquery.js32
-rw-r--r--docs/_static/minus.pngbin0 -> 199 bytes
-rw-r--r--docs/_static/navigation.pngbin0 -> 218 bytes
-rw-r--r--docs/_static/plus.pngbin0 -> 199 bytes
-rw-r--r--docs/_static/pygments.css59
-rw-r--r--docs/_static/rightsidebar.css16
-rw-r--r--docs/_static/searchtools.js404
-rw-r--r--docs/_static/sphinxdoc.css504
-rw-r--r--docs/_static/stickysidebar.css19
-rw-r--r--docs/_static/traditional.css700
-rw-r--r--docs/class-simplejson.JSONDecoder.html222
-rw-r--r--docs/class-simplejson.JSONEncoder.html264
-rw-r--r--docs/class_to_source.js22
-rw-r--r--docs/genindex.html127
-rw-r--r--docs/index.html886
-rw-r--r--docs/layout.css208
-rw-r--r--docs/module-index.html105
-rw-r--r--docs/module-simplejson-index.html127
-rw-r--r--docs/module-simplejson.html484
-rw-r--r--docs/pudge.css60
-rw-r--r--docs/rst.css142
-rw-r--r--docs/search.html81
-rw-r--r--docs/searchindex.json1
-rw-r--r--docs/simplejson/__init__.py.html472
-rw-r--r--docs/simplejson/decoder.py.html413
-rw-r--r--docs/simplejson/encoder.py.html455
-rw-r--r--docs/simplejson/jsonfilter.py.html112
-rw-r--r--docs/simplejson/scanner.py.html139
34 files changed, 3957 insertions, 3694 deletions
diff --git a/docs/_sources/index.txt b/docs/_sources/index.txt
new file mode 100644
index 0000000..2e983d5
--- /dev/null
+++ b/docs/_sources/index.txt
@@ -0,0 +1,404 @@
+:mod:`simplejson` --- JSON encoder and decoder
+==============================================
+
+.. module:: simplejson
+ :synopsis: Encode and decode the JSON format.
+.. moduleauthor:: Bob Ippolito <bob@redivi.com>
+.. sectionauthor:: Bob Ippolito <bob@redivi.com>
+
+JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScript
+syntax (ECMA-262 3rd edition) used as a lightweight data interchange format.
+
+:mod:`simplejson` exposes an API familiar to users of the standard library
+:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained
+version of the :mod:`json` library contained in Python 2.6, but maintains
+compatibility with Python 2.4 and Python 2.5 and (currently) has
+significant performance advantages, even without using the optional C
+extension for speedups.
+
+Encoding basic Python object hierarchies::
+
+ >>> import simplejson as json
+ >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
+ '["foo", {"bar": ["baz", null, 1.0, 2]}]'
+ >>> print json.dumps("\"foo\bar")
+ "\"foo\bar"
+ >>> print json.dumps(u'\u1234')
+ "\u1234"
+ >>> print json.dumps('\\')
+ "\\"
+ >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
+ {"a": 0, "b": 0, "c": 0}
+ >>> from StringIO import StringIO
+ >>> io = StringIO()
+ >>> json.dump(['streaming API'], io)
+ >>> io.getvalue()
+ '["streaming API"]'
+
+Compact encoding::
+
+ >>> import simplejson as json
+ >>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
+ '[1,2,3,{"4":5,"6":7}]'
+
+Pretty printing::
+
+ >>> import simplejson as json
+ >>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
+ {
+ "4": 5,
+ "6": 7
+ }
+
+Decoding JSON::
+
+ >>> import simplejson as json
+ >>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
+ [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
+ >>> json.loads('"\\"foo\\bar"')
+ u'"foo\x08ar'
+ >>> from StringIO import StringIO
+ >>> io = StringIO('["streaming API"]')
+ >>> json.load(io)
+ [u'streaming API']
+
+Specializing JSON object decoding::
+
+ >>> import simplejson as json
+ >>> def as_complex(dct):
+ ... if '__complex__' in dct:
+ ... return complex(dct['real'], dct['imag'])
+ ... return dct
+ ...
+ >>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
+ ... object_hook=as_complex)
+ (1+2j)
+ >>> import decimal
+ >>> json.loads('1.1', parse_float=decimal.Decimal)
+ Decimal('1.1')
+
+Extending :class:`JSONEncoder`::
+
+ >>> import json
+ >>> class ComplexEncoder(json.JSONEncoder):
+ ... def default(self, obj):
+ ... if isinstance(obj, complex):
+ ... return [obj.real, obj.imag]
+ ... return json.JSONEncoder.default(self, obj)
+ ...
+ >>> dumps(2 + 1j, cls=ComplexEncoder)
+ '[2.0, 1.0]'
+ >>> ComplexEncoder().encode(2 + 1j)
+ '[2.0, 1.0]'
+ >>> list(ComplexEncoder().iterencode(2 + 1j))
+ ['[', '2.0', ', ', '1.0', ']']
+
+
+.. highlight:: none
+
+Using simplejson.tool from the shell to validate and pretty-print::
+
+ $ echo '{"json":"obj"}' | python -msimplejson.tool
+ {
+ "json": "obj"
+ }
+ $ echo '{ 1.2:3.4}' | python -msimplejson.tool
+ Expecting property name: line 1 column 2 (char 2)
+
+.. highlight:: python
+
+.. note::
+
+ The JSON produced by this module's default settings is a subset of
+ YAML, so it may be used as a serializer for that as well.
+
+
+Basic Usage
+-----------
+
+.. function:: dump(obj, fp[, skipkeys[, ensure_ascii[, check_circular[, allow_nan[, cls[, indent[, separators[, encoding[, default[, **kw]]]]]]]]]])
+
+ Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-supporting
+ file-like object).
+
+ If *skipkeys* is ``True`` (default: ``False``), then dict keys that are not
+ of a basic type (:class:`str`, :class:`unicode`, :class:`int`, :class:`long`,
+ :class:`float`, :class:`bool`, ``None``) will be skipped instead of raising a
+ :exc:`TypeError`.
+
+ If *ensure_ascii* is ``False`` (default: ``True``), then some chunks written
+ to *fp* may be :class:`unicode` instances, subject to normal Python
+ :class:`str` to :class:`unicode` coercion rules. Unless ``fp.write()``
+ explicitly understands :class:`unicode` (as in :func:`codecs.getwriter`) this
+ is likely to cause an error. It's best to leave the default settings, because
+ they are safe and it is highly optimized.
+
+ If *check_circular* is ``False`` (default: ``True``), then the circular
+ reference check for container types will be skipped and a circular reference
+ will result in an :exc:`OverflowError` (or worse).
+
+ If *allow_nan* is ``False`` (default: ``True``), then it will be a
+ :exc:`ValueError` to serialize out of range :class:`float` values (``nan``,
+ ``inf``, ``-inf``) in strict compliance of the JSON specification, instead of
+ using the JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
+
+ If *indent* is a non-negative integer, then JSON array elements and object
+ members will be pretty-printed with that indent level. An indent level of 0
+ will only insert newlines. ``None`` (the default) selects the most compact
+ representation.
+
+ If *separators* is an ``(item_separator, dict_separator)`` tuple, then it
+ will be used instead of the default ``(', ', ': ')`` separators. ``(',',
+ ':')`` is the most compact JSON representation.
+
+ *encoding* is the character encoding for str instances, default is UTF-8.
+
+ *default(obj)* is a function that should return a serializable version of
+ *obj* or raise :exc:`TypeError`. The default simply raises :exc:`TypeError`.
+
+ To use a custom :class:`JSONEncoder`` subclass (e.g. one that overrides the
+ :meth:`default` method to serialize additional types), specify it with the
+ *cls* kwarg.
+
+
+.. function:: dumps(obj[, skipkeys[, ensure_ascii[, check_circular[, allow_nan[, cls[, indent[, separators[, encoding[, default[, **kw]]]]]]]]]])
+
+ Serialize *obj* to a JSON formatted :class:`str`.
+
+ If *ensure_ascii* is ``False``, then the return value will be a
+ :class:`unicode` instance. The other arguments have the same meaning as in
+ :func:`dump`. Note that the default *ensure_ascii* setting has much
+ better performance.
+
+
+.. function load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
+
+ Deserialize *fp* (a ``.read()``-supporting file-like object containing a JSON
+ document) to a Python object.
+
+ If the contents of *fp* are encoded with an ASCII based encoding other than
+ UTF-8 (e.g. latin-1), then an appropriate *encoding* name must be specified.
+ Encodings that are not ASCII based (such as UCS-2) are not allowed, and
+ should be wrapped with ``codecs.getreader(fp)(encoding)``, or simply decoded
+ to a :class:`unicode` object and passed to :func:`loads`. The default
+ setting of ``'utf-8'`` is fastest and should be using whenever possible.
+
+ *object_hook* is an optional function that will be called with the result of
+ any object literal decode (a :class:`dict`). The return value of
+ *object_hook* will be used instead of the :class:`dict`. This feature can be used
+ to implement custom decoders (e.g. JSON-RPC class hinting).
+
+ *parse_float*, if specified, will be called with the string of every JSON
+ float to be decoded. By default, this is equivalent to ``float(num_str)``.
+ This can be used to use another datatype or parser for JSON floats
+ (e.g. :class:`decimal.Decimal`).
+
+ *parse_int*, if specified, will be called with the string of every JSON int
+ to be decoded. By default, this is equivalent to ``int(num_str)``. This can
+ be used to use another datatype or parser for JSON integers
+ (e.g. :class:`float`).
+
+ *parse_constant*, if specified, will be called with one of the following
+ strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This can be used to
+ raise an exception if invalid JSON numbers are encountered.
+
+ To use a custom :class:`JSONDecoder` subclass, specify it with the ``cls``
+ kwarg. Additional keyword arguments will be passed to the constructor of the
+ class.
+
+
+.. function loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
+
+ Deserialize *s* (a :class:`str` or :class:`unicode` instance containing a JSON
+ document) to a Python object.
+
+ If *s* is a :class:`str` instance and is encoded with an ASCII based encoding
+ other than UTF-8 (e.g. latin-1), then an appropriate *encoding* name must be
+ specified. Encodings that are not ASCII based (such as UCS-2) are not
+ allowed and should be decoded to :class:`unicode` first.
+
+ The other arguments have the same meaning as in :func:`dump`.
+
+
+Encoders and decoders
+---------------------
+
+.. class:: JSONDecoder([encoding[, object_hook[, parse_float[, parse_int[, parse_constant[, strict]]]]]])
+
+ Simple JSON decoder.
+
+ Performs the following translations in decoding by default:
+
+ +---------------+-------------------+
+ | JSON | Python |
+ +===============+===================+
+ | object | dict |
+ +---------------+-------------------+
+ | array | list |
+ +---------------+-------------------+
+ | string | unicode |
+ +---------------+-------------------+
+ | number (int) | int, long |
+ +---------------+-------------------+
+ | number (real) | float |
+ +---------------+-------------------+
+ | true | True |
+ +---------------+-------------------+
+ | false | False |
+ +---------------+-------------------+
+ | null | None |
+ +---------------+-------------------+
+
+ It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their
+ corresponding ``float`` values, which is outside the JSON spec.
+
+ *encoding* determines the encoding used to interpret any :class:`str` objects
+ decoded by this instance (``'utf-8'`` by default). It has no effect when decoding
+ :class:`unicode` objects.
+
+ Note that currently only encodings that are a superset of ASCII work, strings
+ of other encodings should be passed in as :class:`unicode`.
+
+ *object_hook*, if specified, will be called with the result of every JSON
+ object decoded and its return value will be used in place of the given
+ :class:`dict`. This can be used to provide custom deserializations (e.g. to
+ support JSON-RPC class hinting).
+
+ *parse_float*, if specified, will be called with the string of every JSON
+ float to be decoded. By default, this is equivalent to ``float(num_str)``.
+ This can be used to use another datatype or parser for JSON floats
+ (e.g. :class:`decimal.Decimal`).
+
+ *parse_int*, if specified, will be called with the string of every JSON int
+ to be decoded. By default, this is equivalent to ``int(num_str)``. This can
+ be used to use another datatype or parser for JSON integers
+ (e.g. :class:`float`).
+
+ *parse_constant*, if specified, will be called with one of the following
+ strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This can be used to
+ raise an exception if invalid JSON numbers are encountered.
+
+
+ .. method:: decode(s)
+
+ Return the Python representation of *s* (a :class:`str` or
+ :class:`unicode` instance containing a JSON document)
+
+ .. method:: raw_decode(s)
+
+ Decode a JSON document from *s* (a :class:`str` or :class:`unicode`
+ beginning with a JSON document) and return a 2-tuple of the Python
+ representation and the index in *s* where the document ended.
+
+ This can be used to decode a JSON document from a string that may have
+ extraneous data at the end.
+
+
+.. class:: JSONEncoder([skipkeys[, ensure_ascii[, check_circular[, allow_nan[, sort_keys[, indent[, separators[, encoding[, default]]]]]]]]])
+
+ Extensible JSON encoder for Python data structures.
+
+ Supports the following objects and types by default:
+
+ +-------------------+---------------+
+ | Python | JSON |
+ +===================+===============+
+ | dict | object |
+ +-------------------+---------------+
+ | list, tuple | array |
+ +-------------------+---------------+
+ | str, unicode | string |
+ +-------------------+---------------+
+ | int, long, float | number |
+ +-------------------+---------------+
+ | True | true |
+ +-------------------+---------------+
+ | False | false |
+ +-------------------+---------------+
+ | None | null |
+ +-------------------+---------------+
+
+ To extend this to recognize other objects, subclass and implement a
+ :meth:`default` method with another method that returns a serializable object
+ for ``o`` if possible, otherwise it should call the superclass implementation
+ (to raise :exc:`TypeError`).
+
+ If *skipkeys* is ``False`` (the default), then it is a :exc:`TypeError` to
+ attempt encoding of keys that are not str, int, long, float or None. If
+ *skipkeys* is ``True``, such items are simply skipped.
+
+ If *ensure_ascii* is ``True`` (the default), the output is guaranteed to be
+ :class:`str` objects with all incoming unicode characters escaped. If
+ *ensure_ascii* is ``False``, the output will be a unicode object.
+
+ If *check_circular* is ``True`` (the default), then lists, dicts, and custom
+ encoded objects will be checked for circular references during encoding to
+ prevent an infinite recursion (which would cause an :exc:`OverflowError`).
+ Otherwise, no such check takes place.
+
+ If *allow_nan* is ``True`` (the default), then ``NaN``, ``Infinity``, and
+ ``-Infinity`` will be encoded as such. This behavior is not JSON
+ specification compliant, but is consistent with most JavaScript based
+ encoders and decoders. Otherwise, it will be a :exc:`ValueError` to encode
+ such floats.
+
+ If *sort_keys* is ``True`` (the default), then the output of dictionaries
+ will be sorted by key; this is useful for regression tests to ensure that
+ JSON serializations can be compared on a day-to-day basis.
+
+ If *indent* is a non-negative integer (it is ``None`` by default), then JSON
+ array elements and object members will be pretty-printed with that indent
+ level. An indent level of 0 will only insert newlines. ``None`` is the most
+ compact representation.
+
+ If specified, *separators* should be an ``(item_separator, key_separator)``
+ tuple. The default is ``(', ', ': ')``. To get the most compact JSON
+ representation, you should specify ``(',', ':')`` to eliminate whitespace.
+
+ If specified, *default* is a function that gets called for objects that can't
+ otherwise be serialized. It should return a JSON encodable version of the
+ object or raise a :exc:`TypeError`.
+
+ If *encoding* is not ``None``, then all input strings will be transformed
+ into unicode using that encoding prior to JSON-encoding. The default is
+ ``'utf-8'``.
+
+
+ .. method:: default(o)
+
+ Implement this method in a subclass such that it returns a serializable
+ object for *o*, or calls the base implementation (to raise a
+ :exc:`TypeError`).
+
+ For example, to support arbitrary iterators, you could implement default
+ like this::
+
+ def default(self, o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(self, o)
+
+
+ .. method:: encode(o)
+
+ Return a JSON string representation of a Python data structure, *o*. For
+ example::
+
+ >>> JSONEncoder().encode({"foo": ["bar", "baz"]})
+ '{"foo": ["bar", "baz"]}'
+
+
+ .. method:: iterencode(o)
+
+ Encode the given object, *o*, and yield each string representation as
+ available. For example::
+
+ for chunk in JSONEncoder().iterencode(bigobject):
+ mysocket.write(chunk)
+
+ Note that :meth:`encode` has much better performance than
+ :meth:`iterencode`.
diff --git a/docs/_static/contents.png b/docs/_static/contents.png
new file mode 100644
index 0000000..7fb8215
--- /dev/null
+++ b/docs/_static/contents.png
Binary files differ
diff --git a/docs/_static/default.css b/docs/_static/default.css
new file mode 100644
index 0000000..ed177c5
--- /dev/null
+++ b/docs/_static/default.css
@@ -0,0 +1,833 @@
+/**
+ * Sphinx Doc Design
+ */
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+/* :::: LAYOUT :::: */
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: white;
+ padding: 0 20px 30px 20px;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.clearer {
+ clear: both;
+}
+
+div.footer {
+ color: #fff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ color: #fff;
+ width: 100%;
+ height: 30px;
+ line-height: 30px;
+ 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;
+}
+
+div.related a {
+ color: white;
+}
+
+/* ::: TOC :::: */
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: white;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ list-style: none;
+ color: white;
+}
+
+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 a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+/* :::: MODULE CLOUD :::: */
+div.modulecloud {
+ margin: -5px 10px 5px 10px;
+ padding: 10px;
+ line-height: 160%;
+ border: 1px solid #cbe7e5;
+ background-color: #f2fbfd;
+}
+
+div.modulecloud a {
+ padding: 0 5px 0 5px;
+}
+
+/* :::: SEARCH :::: */
+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;
+}
+
+/* :::: COMMON FORM STYLES :::: */
+
+div.actions {
+ padding: 5px 10px 5px 10px;
+ border-top: 1px solid #cbe7e5;
+ border-bottom: 1px solid #cbe7e5;
+ background-color: #e0f6f4;
+}
+
+form dl {
+ color: #333;
+}
+
+form dt {
+ clear: both;
+ float: left;
+ min-width: 110px;
+ margin-right: 10px;
+ padding-top: 2px;
+}
+
+input#homepage {
+ display: none;
+}
+
+div.error {
+ margin: 5px 20px 0 0;
+ padding: 5px;
+ border: 1px solid #d00;
+ font-weight: bold;
+}
+
+/* :::: INLINE COMMENTS :::: */
+
+div.inlinecomments {
+ position: absolute;
+ right: 20px;
+}
+
+div.inlinecomments a.bubble {
+ display: block;
+ float: right;
+ background-image: url(style/comment.png);
+ background-repeat: no-repeat;
+ width: 25px;
+ height: 25px;
+ text-align: center;
+ padding-top: 3px;
+ font-size: 0.9em;
+ line-height: 14px;
+ font-weight: bold;
+ color: black;
+}
+
+div.inlinecomments a.bubble span {
+ display: none;
+}
+
+div.inlinecomments a.emptybubble {
+ background-image: url(style/nocomment.png);
+}
+
+div.inlinecomments a.bubble:hover {
+ background-image: url(style/hovercomment.png);
+ text-decoration: none;
+ color: #3ca0a4;
+}
+
+div.inlinecomments div.comments {
+ float: right;
+ margin: 25px 5px 0 0;
+ max-width: 50em;
+ min-width: 30em;
+ border: 1px solid #2eabb0;
+ background-color: #f2fbfd;
+ z-index: 150;
+}
+
+div#comments {
+ border: 1px solid #2eabb0;
+ margin-top: 20px;
+}
+
+div#comments div.nocomments {
+ padding: 10px;
+ font-weight: bold;
+}
+
+div.inlinecomments div.comments h3,
+div#comments h3 {
+ margin: 0;
+ padding: 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 3px;
+}
+
+div.inlinecomments div.comments div.actions {
+ padding: 4px;
+ margin: 0;
+ border-top: none;
+}
+
+div#comments div.comment {
+ margin: 10px;
+ border: 1px solid #2eabb0;
+}
+
+div.inlinecomments div.comment h4,
+div.commentwindow div.comment h4,
+div#comments div.comment h4 {
+ margin: 10px 0 0 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 1px 4px 1px 4px;
+}
+
+div#comments div.comment h4 {
+ margin: 0;
+}
+
+div#comments div.comment h4 a {
+ color: #d5f4f4;
+}
+
+div.inlinecomments div.comment div.text,
+div.commentwindow div.comment div.text,
+div#comments div.comment div.text {
+ margin: -5px 0 -5px 0;
+ padding: 0 10px 0 10px;
+}
+
+div.inlinecomments div.comment div.meta,
+div.commentwindow div.comment div.meta,
+div#comments div.comment div.meta {
+ text-align: right;
+ padding: 2px 10px 2px 0;
+ font-size: 95%;
+ color: #538893;
+ border-top: 1px solid #cbe7e5;
+ background-color: #e0f6f4;
+}
+
+div.commentwindow {
+ position: absolute;
+ width: 500px;
+ border: 1px solid #cbe7e5;
+ background-color: #f2fbfd;
+ display: none;
+ z-index: 130;
+}
+
+div.commentwindow h3 {
+ margin: 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 5px;
+ font-size: 1.5em;
+ cursor: pointer;
+}
+
+div.commentwindow div.actions {
+ margin: 10px -10px 0 -10px;
+ padding: 4px 10px 4px 10px;
+ color: #538893;
+}
+
+div.commentwindow div.actions input {
+ border: 1px solid #2eabb0;
+ background-color: white;
+ color: #135355;
+ cursor: pointer;
+}
+
+div.commentwindow div.form {
+ padding: 0 10px 0 10px;
+}
+
+div.commentwindow div.form input,
+div.commentwindow div.form textarea {
+ border: 1px solid #3c9ea2;
+ background-color: white;
+ color: black;
+}
+
+div.commentwindow div.error {
+ margin: 10px 5px 10px 5px;
+ background-color: #fbe5dc;
+ display: none;
+}
+
+div.commentwindow div.form textarea {
+ width: 99%;
+}
+
+div.commentwindow div.preview {
+ margin: 10px 0 10px 0;
+ background-color: #70d0d4;
+ padding: 0 1px 1px 25px;
+}
+
+div.commentwindow div.preview h4 {
+ margin: 0 0 -5px -20px;
+ padding: 4px 0 0 4px;
+ color: white;
+ font-size: 1.3em;
+}
+
+div.commentwindow div.preview div.comment {
+ background-color: #f2fbfd;
+}
+
+div.commentwindow div.preview div.comment h4 {
+ margin: 10px 0 0 0!important;
+ padding: 1px 4px 1px 4px!important;
+ font-size: 1.2em;
+}
+
+/* :::: SUGGEST CHANGES :::: */
+div#suggest-changes-box input, div#suggest-changes-box textarea {
+ border: 1px solid #ccc;
+ background-color: white;
+ color: black;
+}
+
+div#suggest-changes-box textarea {
+ width: 99%;
+ height: 400px;
+}
+
+
+/* :::: PREVIEW :::: */
+div.preview {
+ background-image: url(style/preview.png);
+ padding: 0 20px 20px 20px;
+ margin-bottom: 30px;
+}
+
+
+/* :::: 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%;
+}
+
+/* :::: INDEX STYLES :::: */
+
+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;
+}
+
+form.pfform {
+ margin: 10px 0 20px 0;
+}
+
+/* :::: GLOBAL STYLES :::: */
+
+.docwarning {
+ background-color: #ffe4e4;
+ padding: 10px;
+ margin: 0 -20px 0 -20px;
+ border-bottom: 1px solid #f66;
+}
+
+p.subhead {
+ font-weight: bold;
+ margin-top: 20px;
+}
+
+a {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ background-color: #f2f2f2;
+ font-weight: normal;
+ color: #20435c;
+ border-bottom: 1px solid #ccc;
+ margin: 20px -20px 10px -20px;
+ padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+ 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 {
+ visibility: visible;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ text-align: justify;
+ line-height: 130%;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+ul.fakelist {
+ list-style: none;
+ margin: 10px 0 10px 20px;
+ padding: 0;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+/* "Footnotes" heading */
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+/* "Topics" */
+
+div.topic {
+ background-color: #eee;
+ border: 1px solid #ccc;
+ padding: 0 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;
+}
+
+div.admonition p {
+ display: inline;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+table.docutils {
+ border: 0;
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 0;
+ 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;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+dl {
+ margin-bottom: 15px;
+ clear: both;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+.refcount {
+ color: #060;
+}
+
+dt:target,
+.highlight {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+pre {
+ padding: 5px;
+ background-color: #efc;
+ color: #333;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+ overflow: auto;
+}
+
+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;
+}
+
+tt {
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+ font-size: 0.95em;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.footnote:target { background-color: #ffa }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+form.comment {
+ margin: 0;
+ padding: 10px 30px 10px 30px;
+ background-color: #eee;
+}
+
+form.comment h3 {
+ background-color: #326591;
+ color: white;
+ margin: -10px -30px 10px -30px;
+ padding: 5px;
+ font-size: 1.4em;
+}
+
+form.comment input,
+form.comment textarea {
+ border: 1px solid #ccc;
+ padding: 2px;
+ font-family: sans-serif;
+ font-size: 100%;
+}
+
+form.comment input[type="text"] {
+ width: 240px;
+}
+
+form.comment textarea {
+ width: 100%;
+ height: 200px;
+ margin-bottom: 10px;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+/* :::: PRINT :::: */
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0;
+ width : 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ div#comments div.new-comment-box,
+ #top-link {
+ display: none;
+ }
+}
diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js
new file mode 100644
index 0000000..b915584
--- /dev/null
+++ b/docs/_static/doctools.js
@@ -0,0 +1,352 @@
+/// XXX: make it cross browser
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+ */
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {}
+}
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s == 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+}
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == item)
+ return true;
+ }
+ return false;
+}
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node) {
+ if (node.nodeType == 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 && !jQuery.className.has(node.parentNode, 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);
+ });
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ /* this.addContextElements(); -- now done statically */
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initModIndex();
+ this.initComments();
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ for (var i = 1; i <= 6; i++) {
+ $('h' + i + '[@id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', 'Permalink to this headline').
+ appendTo(this);
+ });
+ }
+ $('dt[@id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', 'Permalink to this definition').
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlight');
+ });
+ }, 10);
+ $('<li class="highlight-link"><a href="javascript:Documentation.' +
+ 'hideSearchWords()">Hide Search Matches</a></li>')
+ .appendTo($('.sidebar .this-page-menu'));
+ }
+ },
+
+ /**
+ * init the modindex toggle buttons
+ */
+ initModIndex : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ console.log($('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_MODINDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * init the inline comments
+ */
+ initComments : function() {
+ $('.inlinecomments div.actions').each(function() {
+ this.innerHTML += ' | ';
+ $(this).append($('<a href="#">hide comments</a>').click(function() {
+ $(this).parent().parent().toggle();
+ return false;
+ }));
+ });
+ $('.inlinecomments .comments').hide();
+ $('.inlinecomments a.bubble').each(function() {
+ $(this).click($(this).is('.emptybubble') ? function() {
+ var params = $.getQueryParameters(this.href);
+ Documentation.newComment(params.target[0]);
+ return false;
+ } : function() {
+ $('.comments', $(this).parent().parent()[0]).toggle();
+ return false;
+ });
+ });
+ $('#comments div.actions a.newcomment').click(function() {
+ Documentation.newComment();
+ return false;
+ });
+ if (document.location.hash.match(/^#comment-/))
+ $('.inlinecomments .comments ' + document.location.hash)
+ .parent().toggle();
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
+ $('span.highlight').removeClass('highlight');
+ },
+
+ /**
+ * show the comment window for a certain id or the whole page.
+ */
+ newComment : function(id) {
+ Documentation.CommentWindow.openFor(id || '');
+ },
+
+ /**
+ * write a new comment from within a comment view box
+ */
+ newCommentFromBox : function(link) {
+ var params = $.getQueryParameters(link.href);
+ $(link).parent().parent().fadeOut('slow');
+ this.newComment(params.target);
+ },
+
+ /**
+ * 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);
+ },
+
+ /**
+ * class that represents the comment window
+ */
+ CommentWindow : (function() {
+ var openWindows = {};
+
+ var Window = function(sectionID) {
+ this.url = Documentation.makeURL('@comments/' + Documentation.getCurrentURL()
+ + '/?target=' + $.urlencode(sectionID) + '&mode=ajax');
+ this.sectionID = sectionID;
+
+ this.root = $('<div class="commentwindow"></div>');
+ this.root.appendTo($('body'));
+ this.title = $('<h3>New Comment</h3>').appendTo(this.root);
+ this.body = $('<div class="form">please wait...</div>').appendTo(this.root);
+ this.resizeHandle = $('<div class="resizehandle"></div>').appendTo(this.root);
+
+ this.root.Draggable({
+ handle: this.title[0]
+ });
+
+ this.root.css({
+ left: window.innerWidth / 2 - $(this.root).width() / 2,
+ top: window.scrollY + (window.innerHeight / 2 - 150)
+ });
+ this.root.fadeIn('slow');
+ this.updateView();
+ };
+
+ Window.prototype.updateView = function(data) {
+ var self = this;
+ function update(data) {
+ if (data.posted) {
+ document.location.hash = '#comment-' + data.commentID;
+ document.location.reload();
+ }
+ else {
+ self.body.html(data.body);
+ $('div.actions', self.body).append($('<input>')
+ .attr('type', 'button')
+ .attr('value', 'Close')
+ .click(function() { self.close(); })
+ );
+ $('div.actions input[@name="preview"]')
+ .attr('type', 'button')
+ .click(function() { self.submitForm($('form', self.body)[0], true); });
+ $('form', self.body).bind("submit", function() {
+ self.submitForm(this);
+ return false;
+ });
+
+ if (data.error) {
+ self.root.Highlight(1000, '#aadee1');
+ $('div.error', self.root).slideDown(500);
+ }
+ }
+ }
+
+ if (typeof data == 'undefined')
+ $.getJSON(this.url, function(json) { update(json); });
+ else
+ $.ajax({
+ url: this.url,
+ type: 'POST',
+ dataType: 'json',
+ data: data,
+ success: function(json) { update(json); }
+ });
+ }
+
+ Window.prototype.getFormValue = function(name) {
+ return $('*[@name="' + name + '"]', this.body)[0].value;
+ }
+
+ Window.prototype.submitForm = function(form, previewMode) {
+ this.updateView({
+ author: form.author.value,
+ author_mail: form.author_mail.value,
+ title: form.title.value,
+ comment_body: form.comment_body.value,
+ preview: previewMode ? 'yes' : ''
+ });
+ }
+
+ Window.prototype.close = function() {
+ var self = this;
+ delete openWindows[this.sectionID];
+ this.root.fadeOut('slow', function() {
+ self.root.remove();
+ });
+ }
+
+ Window.openFor = function(sectionID) {
+ if (sectionID in openWindows)
+ return openWindows[sectionID];
+ return new Window(sectionID);
+ }
+
+ return Window;
+ })()
+};
+
+
+$(document).ready(function() {
+ Documentation.init();
+});
diff --git a/docs/_static/file.png b/docs/_static/file.png
new file mode 100644
index 0000000..d18082e
--- /dev/null
+++ b/docs/_static/file.png
Binary files differ
diff --git a/docs/_static/interface.js b/docs/_static/interface.js
new file mode 100644
index 0000000..91a0d4f
--- /dev/null
+++ b/docs/_static/interface.js
@@ -0,0 +1,8 @@
+/*
+ * Interface elements for jQuery - http://interface.eyecon.ro
+ *
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ */
+ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('k.1a={2R:u(e){D x=0;D y=0;D 5H=I;D es=e.18;if(k(e).B(\'19\')==\'1n\'){62=es.3j;9C=es.Y;es.3j=\'2O\';es.19=\'2E\';es.Y=\'1O\';5H=1b}D el=e;7o(el){x+=el.8n+(el.4Y&&!k.3h.7N?T(el.4Y.5a)||0:0);y+=el.8t+(el.4Y&&!k.3h.7N?T(el.4Y.4Z)||0:0);el=el.dr}el=e;7o(el&&el.4S&&el.4S.5Z()!=\'2e\'){x-=el.3g||0;y-=el.2V||0;el=el.3e}if(5H){es.19=\'1n\';es.Y=9C;es.3j=62}E{x:x,y:y}},bN:u(el){D x=0,y=0;7o(el){x+=el.8n||0;y+=el.8t||0;el=el.dr}E{x:x,y:y}},2p:u(e){D w=k.B(e,\'Z\');D h=k.B(e,\'V\');D 1D=0;D hb=0;D es=e.18;if(k(e).B(\'19\')!=\'1n\'){1D=e.4b;hb=e.63}P{62=es.3j;9C=es.Y;es.3j=\'2O\';es.19=\'2E\';es.Y=\'1O\';1D=e.4b;hb=e.63;es.19=\'1n\';es.Y=9C;es.3j=62}E{w:w,h:h,1D:1D,hb:hb}},82:u(el){E{1D:el.4b||0,hb:el.63||0}},bq:u(e){D h,w,de;if(e){w=e.8k;h=e.8z}P{de=1j.4J;w=1V.d0||9B.d0||(de&&de.8k)||1j.2e.8k;h=1V.d1||9B.d1||(de&&de.8z)||1j.2e.8z}E{w:w,h:h}},6W:u(e){D t,l,w,h,iw,ih;if(e&&e.9A.5Z()!=\'2e\'){t=e.2V;l=e.3g;w=e.cY;h=e.cW;iw=0;ih=0}P{if(1j.4J&&1j.4J.2V){t=1j.4J.2V;l=1j.4J.3g;w=1j.4J.cY;h=1j.4J.cW}P if(1j.2e){t=1j.2e.2V;l=1j.2e.3g;w=1j.2e.cY;h=1j.2e.cW}iw=9B.d0||1j.4J.8k||1j.2e.8k||0;ih=9B.d1||1j.4J.8z||1j.2e.8z||0}E{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},c8:u(e,7C){D el=k(e);D t=el.B(\'5o\')||\'\';D r=el.B(\'5p\')||\'\';D b=el.B(\'5m\')||\'\';D l=el.B(\'5k\')||\'\';if(7C)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},aj:u(e,7C){D el=k(e);D t=el.B(\'66\')||\'\';D r=el.B(\'6j\')||\'\';D b=el.B(\'5M\')||\'\';D l=el.B(\'4X\')||\'\';if(7C)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},6h:u(e,7C){D el=k(e);D t=el.B(\'4Z\')||\'\';D r=el.B(\'6k\')||\'\';D b=el.B(\'6g\')||\'\';D l=el.B(\'5a\')||\'\';if(7C)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)||0};P E{t:t,r:r,b:b,l:l}},44:u(2l){D x=2l.hI||(2l.hK+(1j.4J.3g||1j.2e.3g))||0;D y=2l.hL||(2l.hM+(1j.4J.2V||1j.2e.2V))||0;E{x:x,y:y}},cS:u(54,cT){cT(54);54=54.77;7o(54){k.1a.cS(54,cT);54=54.hU}},i1:u(54){k.1a.cS(54,u(el){1Y(D 1p in el){if(2h el[1p]===\'u\'){el[1p]=U}}})},i3:u(el,1N){D 5C=$.1a.6W();D d3=$.1a.2p(el);if(!1N||1N==\'4i\')$(el).B({Q:5C.t+((14.3v(5C.h,5C.ih)-5C.t-d3.hb)/2)+\'S\'});if(!1N||1N==\'4a\')$(el).B({O:5C.l+((14.3v(5C.w,5C.iw)-5C.l-d3.1D)/2)+\'S\'})},i0:u(el,dP){D 1Q=$(\'1U[@2M*="95"]\',el||1j),95;1Q.1B(u(){95=q.2M;q.2M=dP;q.18.69="aw:ax.ay.hZ(2M=\'"+95+"\')"})}};[].3F||(7b.hV.3F=u(v,n){n=(n==U)?0:n;D m=q.1h;1Y(D i=n;i<m;i++)if(q[i]==v)E i;E-1});k.4O=u(e){if(/^hW$|^hX$|^hY$|^6v$|^hH$|^hG$|^hp$|^hq$|^hs$|^2e$|^ht$|^ho$|^hn$|^hj$|^hi$|^hk$|^hl$/i.43(e.9A))E I;P E 1b};k.fx.9g=u(e,65){D c=e.77;D cs=c.18;cs.Y=65.Y;cs.5o=65.3A.t;cs.5k=65.3A.l;cs.5m=65.3A.b;cs.5p=65.3A.r;cs.Q=65.Q+\'S\';cs.O=65.O+\'S\';e.3e.dk(c,e);e.3e.hu(e)};k.fx.9h=u(e){if(!k.4O(e))E I;D t=k(e);D es=e.18;D 5H=I;D W={};W.Y=t.B(\'Y\');if(t.B(\'19\')==\'1n\'){62=t.B(\'3j\');es.3j=\'2O\';es.19=\'\';5H=1b}W.1q=k.1a.2p(e);W.3A=k.1a.c8(e);D d7=e.4Y?e.4Y.dM:t.B(\'hv\');W.Q=T(t.B(\'Q\'))||0;W.O=T(t.B(\'O\'))||0;D dC=\'hC\'+T(14.6w()*cd);D 6C=1j.3t(/^1U$|^br$|^hD$|^hr$|^8Z$|^hE$|^8i$|^3E$|^hF$|^hB$|^hA$|^aX$|^dl$|^hw$/i.43(e.9A)?\'26\':e.9A);k.1p(6C,\'id\',dC);6C.3b=\'hy\';D 3C=6C.18;D Q=0;D O=0;if(W.Y==\'2y\'||W.Y==\'1O\'){Q=W.Q;O=W.O}3C.19=\'1n\';3C.Q=Q+\'S\';3C.O=O+\'S\';3C.Y=W.Y!=\'2y\'&&W.Y!=\'1O\'?\'2y\':W.Y;3C.2Y=\'2O\';3C.V=W.1q.hb+\'S\';3C.Z=W.1q.1D+\'S\';3C.5o=W.3A.t;3C.5p=W.3A.r;3C.5m=W.3A.b;3C.5k=W.3A.l;if(k.3h.4I){3C.dM=d7}P{3C.i5=d7}e.3e.dk(6C,e);es.5o=\'3c\';es.5p=\'3c\';es.5m=\'3c\';es.5k=\'3c\';es.Y=\'1O\';es.dV=\'1n\';es.Q=\'3c\';es.O=\'3c\';if(5H){es.19=\'1n\';es.3j=62}6C.iK(e);3C.19=\'2E\';E{W:W,3o:k(6C)}};k.fx.8m={iM:[0,1X,1X],iI:[dJ,1X,1X],iH:[dG,dG,iD],iC:[0,0,0],iE:[0,0,1X],iF:[dE,42,42],iG:[0,1X,1X],iN:[0,0,7B],iO:[0,7B,7B],iV:[cn,cn,cn],iX:[0,2b,0],iY:[iU,iT,da],iP:[7B,0,7B],iQ:[85,da,47],iS:[1X,dI,0],iB:[iA,50,ig],ii:[7B,0,0],ij:[ik,fd,ie],ic:[i8,0,9y],i7:[1X,0,1X],i9:[1X,hh,0],ia:[0,6F,0],ib:[75,0,il],im:[dJ,dK,dI],iy:[iz,iu,dK],io:[dA,1X,1X],ip:[dL,iq,dL],iZ:[9y,9y,9y],gn:[1X,gr,gl],gq:[1X,1X,dA],gs:[0,1X,0],gj:[1X,0,1X],gh:[6F,0,0],gi:[0,0,6F],gd:[6F,6F,0],ge:[1X,dE,0],gf:[1X,9z,gk],gu:[6F,0,6F],gp:[1X,0,0],gv:[9z,9z,9z],gg:[1X,1X,1X],hg:[1X,1X,0]};k.fx.6H=u(4C,dH){if(k.fx.8m[4C])E{r:k.fx.8m[4C][0],g:k.fx.8m[4C][1],b:k.fx.8m[4C][2]};P if(2W=/^7K\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.9D(4C))E{r:T(2W[1]),g:T(2W[2]),b:T(2W[3])};P if(2W=/7K\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.9D(4C))E{r:2m(2W[1])*2.55,g:2m(2W[2])*2.55,b:2m(2W[3])*2.55};P if(2W=/^#([a-fA-7y-9])([a-fA-7y-9])([a-fA-7y-9])$/.9D(4C))E{r:T("7z"+2W[1]+2W[1]),g:T("7z"+2W[2]+2W[2]),b:T("7z"+2W[3]+2W[3])};P if(2W=/^#([a-fA-7y-9]{2})([a-fA-7y-9]{2})([a-fA-7y-9]{2})$/.9D(4C))E{r:T("7z"+2W[1]),g:T("7z"+2W[2]),b:T("7z"+2W[3])};P E dH==1b?I:{r:1X,g:1X,b:1X}};k.fx.d8={6g:1,5a:1,6k:1,4Z:1,4l:1,4w:1,V:1,O:1,cH:1,h3:1,5m:1,5k:1,5p:1,5o:1,8M:1,6q:1,8L:1,9s:1,1J:1,h0:1,gZ:1,5M:1,4X:1,6j:1,66:1,2N:1,gV:1,Q:1,Z:1,3B:1};k.fx.d9={7f:1,gW:1,gX:1,gY:1,h4:1,4C:1,h5:1};k.fx.8p=[\'gw\',\'hd\',\'he\',\'hf\'];k.fx.cw={\'cD\':[\'2B\',\'ds\'],\'9I\':[\'2B\',\'cq\'],\'6X\':[\'6X\',\'\'],\'92\':[\'92\',\'\']};k.fn.21({5K:u(5U,H,G,J){E q.1w(u(){D 9E=k.H(H,G,J);D e=11 k.dg(q,9E,5U)})},cK:u(H,J){E q.1w(u(){D 9E=k.H(H,J);D e=11 k.cK(q,9E)})},8v:u(2D){E q.1B(u(){if(q.5R)k.cv(q,2D)})},ha:u(2D){E q.1B(u(){if(q.5R)k.cv(q,2D);if(q.1w&&q.1w[\'fx\'])q.1w.fx=[]})}});k.21({cK:u(2i,M){D z=q,3u;z.2D=u(){if(k.eI(M.23))M.23.1F(2i)};z.2H=6I(u(){z.2D()},M.1m);2i.5R=z},G:{bV:u(p,n,1W,1I,1m){E((-14.5v(p*14.2Q)/2)+0.5)*1I+1W}},dg:u(2i,M,5U){D z=q,3u;D y=2i.18;D eH=k.B(2i,"2Y");D 7M=k.B(2i,"19");D 2k={};z.9x=(11 72()).71();M.G=M.G&&k.G[M.G]?M.G:\'bV\';z.9F=u(2z,49){if(k.fx.d8[2z]){if(49==\'22\'||49==\'2G\'||49==\'3Y\'){if(!2i.6u)2i.6u={};D r=2m(k.3M(2i,2z));2i.6u[2z]=r&&r>-cd?r:(2m(k.B(2i,2z))||0);49=49==\'3Y\'?(7M==\'1n\'?\'22\':\'2G\'):49;M[49]=1b;2k[2z]=49==\'22\'?[0,2i.6u[2z]]:[2i.6u[2z],0];if(2z!=\'1J\')y[2z]=2k[2z][0]+(2z!=\'3B\'&&2z!=\'8h\'?\'S\':\'\');P k.1p(y,"1J",2k[2z][0])}P{2k[2z]=[2m(k.3M(2i,2z)),2m(49)||0]}}P if(k.fx.d9[2z])2k[2z]=[k.fx.6H(k.3M(2i,2z)),k.fx.6H(49)];P if(/^6X$|92$|2B$|9I$|cD$/i.43(2z)){D m=49.4v(/\\s+/g,\' \').4v(/7K\\s*\\(\\s*/g,\'7K(\').4v(/\\s*,\\s*/g,\',\').4v(/\\s*\\)/g,\')\').bU(/([^\\s]+)/g);3m(2z){1e\'6X\':1e\'92\':1e\'cD\':1e\'9I\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];1Y(D i=0;i<k.fx.8p.1h;i++){D 5X=k.fx.cw[2z][0]+k.fx.8p[i]+k.fx.cw[2z][1];2k[5X]=2z==\'9I\'?[k.fx.6H(k.3M(2i,5X)),k.fx.6H(m[i])]:[2m(k.3M(2i,5X)),2m(m[i])]}1r;1e\'2B\':1Y(D i=0;i<m.1h;i++){D cC=2m(m[i]);D 9H=!h8(cC)?\'ds\':(!/b7|1n|2O|gT|gF|gG|gH|gE|gD|gz|gA/i.43(m[i])?\'cq\':I);if(9H){1Y(D j=0;j<k.fx.8p.1h;j++){5X=\'2B\'+k.fx.8p[j]+9H;2k[5X]=9H==\'cq\'?[k.fx.6H(k.3M(2i,5X)),k.fx.6H(m[i])]:[2m(k.3M(2i,5X)),cC]}}P{y[\'gQ\']=m[i]}}1r}}P{y[2z]=49}E I};1Y(p in 5U){if(p==\'18\'){D 5u=k.cu(5U[p]);1Y(7L in 5u){q.9F(7L,5u[7L])}}P if(p==\'3b\'){if(1j.9G)1Y(D i=0;i<1j.9G.1h;i++){D 7G=1j.9G[i].7G||1j.9G[i].gP||U;if(7G){1Y(D j=0;j<7G.1h;j++){if(7G[j].gO==\'.\'+5U[p]){D 7H=11 cp(\'\\.\'+5U[p]+\' {\');D 5S=7G[j].18.9T;D 5u=k.cu(5S.4v(7H,\'\').4v(/}/g,\'\'));1Y(7L in 5u){q.9F(7L,5u[7L])}}}}}}P{q.9F(p,5U[p])}}y.19=7M==\'1n\'?\'2E\':7M;y.2Y=\'2O\';z.2D=u(){D t=(11 72()).71();if(t>M.1m+z.9x){6c(z.2H);z.2H=U;1Y(p in 2k){if(p=="1J")k.1p(y,"1J",2k[p][1]);P if(2h 2k[p][1]==\'8i\')y[p]=\'7K(\'+2k[p][1].r+\',\'+2k[p][1].g+\',\'+2k[p][1].b+\')\';P y[p]=2k[p][1]+(p!=\'3B\'&&p!=\'8h\'?\'S\':\'\')}if(M.2G||M.22)1Y(D p in 2i.6u)if(p=="1J")k.1p(y,p,2i.6u[p]);P y[p]="";y.19=M.2G?\'1n\':(7M!=\'1n\'?7M:\'2E\');y.2Y=eH;2i.5R=U;if(k.eI(M.23))M.23.1F(2i)}P{D n=t-q.9x;D 8x=n/M.1m;1Y(p in 2k){if(2h 2k[p][1]==\'8i\'){y[p]=\'7K(\'+T(k.G[M.G](8x,n,2k[p][0].r,(2k[p][1].r-2k[p][0].r),M.1m))+\',\'+T(k.G[M.G](8x,n,2k[p][0].g,(2k[p][1].g-2k[p][0].g),M.1m))+\',\'+T(k.G[M.G](8x,n,2k[p][0].b,(2k[p][1].b-2k[p][0].b),M.1m))+\')\'}P{D cG=k.G[M.G](8x,n,2k[p][0],(2k[p][1]-2k[p][0]),M.1m);if(p=="1J")k.1p(y,"1J",cG);P y[p]=cG+(p!=\'3B\'&&p!=\'8h\'?\'S\':\'\')}}}};z.2H=6I(u(){z.2D()},13);2i.5R=z},cv:u(2i,2D){if(2D)2i.5R.9x-=kM;P{1V.6c(2i.5R.2H);2i.5R=U;k.2L(2i,"fx")}}});k.cu=u(5S){D 5u={};if(2h 5S==\'5g\'){5S=5S.5Z().7h(\';\');1Y(D i=0;i<5S.1h;i++){7H=5S[i].7h(\':\');if(7H.1h==2){5u[k.eP(7H[0].4v(/\\-(\\w)/g,u(m,c){E c.kn()}))]=k.eP(7H[1])}}}E 5u};k.12={1c:U,F:U,58:u(){E q.1B(u(){if(q.9q){q.A.5e.3p(\'5b\',k.12.cU);q.A=U;q.9q=I;if(k.3h.4I){q.d4="fQ"}P{q.18.kk=\'\';q.18.ej=\'\';q.18.e6=\'\'}}})},cU:u(e){if(k.12.F!=U){k.12.9w(e);E I}D C=q.3Z;k(1j).1H(\'3H\',k.12.d6).1H(\'61\',k.12.9w);C.A.1s=k.1a.44(e);C.A.4t=C.A.1s;C.A.7W=I;C.A.ki=q!=q.3Z;k.12.F=C;if(C.A.5i&&q!=q.3Z){ce=k.1a.2R(C.3e);cf=k.1a.2p(C);cg={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};dx=C.A.4t.x-ce.x-cf.1D/2-cg.x;dy=C.A.4t.y-ce.y-cf.hb/2-cg.y;k.3d.59(C,[dx,dy])}E k.7Z||I},dT:u(e){D C=k.12.F;C.A.7W=1b;D 9p=C.18;C.A.7i=k.B(C,\'19\');C.A.4m=k.B(C,\'Y\');if(!C.A.c4)C.A.c4=C.A.4m;C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.9l=0;C.A.9m=0;if(k.3h.4I){D cl=k.1a.6h(C,1b);C.A.9l=cl.l||0;C.A.9m=cl.t||0}C.A.1C=k.21(k.1a.2R(C),k.1a.2p(C));if(C.A.4m!=\'2y\'&&C.A.4m!=\'1O\'){9p.Y=\'2y\'}k.12.1c.5t();D 5s=C.dn(1b);k(5s).B({19:\'2E\',O:\'3c\',Q:\'3c\'});5s.18.5o=\'0\';5s.18.5p=\'0\';5s.18.5m=\'0\';5s.18.5k=\'0\';k.12.1c.1R(5s);D 3X=k.12.1c.K(0).18;if(C.A.cO){3X.Z=\'ao\';3X.V=\'ao\'}P{3X.V=C.A.1C.hb+\'S\';3X.Z=C.A.1C.1D+\'S\'}3X.19=\'2E\';3X.5o=\'3c\';3X.5p=\'3c\';3X.5m=\'3c\';3X.5k=\'3c\';k.21(C.A.1C,k.1a.2p(5s));if(C.A.2S){if(C.A.2S.O){C.A.2c.x+=C.A.1s.x-C.A.1C.x-C.A.2S.O;C.A.1C.x=C.A.1s.x-C.A.2S.O}if(C.A.2S.Q){C.A.2c.y+=C.A.1s.y-C.A.1C.y-C.A.2S.Q;C.A.1C.y=C.A.1s.y-C.A.2S.Q}if(C.A.2S.2N){C.A.2c.x+=C.A.1s.x-C.A.1C.x-C.A.1C.hb+C.A.2S.2N;C.A.1C.x=C.A.1s.x-C.A.1C.1D+C.A.2S.2N}if(C.A.2S.4l){C.A.2c.y+=C.A.1s.y-C.A.1C.y-C.A.1C.hb+C.A.2S.4l;C.A.1C.y=C.A.1s.y-C.A.1C.hb+C.A.2S.4l}}C.A.2x=C.A.2c.x;C.A.2r=C.A.2c.y;if(C.A.8g||C.A.2o==\'96\'){89=k.1a.6h(C.3e,1b);C.A.1C.x=C.8n+(k.3h.4I?0:k.3h.7N?-89.l:89.l);C.A.1C.y=C.8t+(k.3h.4I?0:k.3h.7N?-89.t:89.t);k(C.3e).1R(k.12.1c.K(0))}if(C.A.2o){k.12.bP(C);C.A.5J.2o=k.12.bH}if(C.A.5i){k.3d.bO(C)}3X.O=C.A.1C.x-C.A.9l+\'S\';3X.Q=C.A.1C.y-C.A.9m+\'S\';3X.Z=C.A.1C.1D+\'S\';3X.V=C.A.1C.hb+\'S\';k.12.F.A.9n=I;if(C.A.gx){C.A.5J.67=k.12.bI}if(C.A.3B!=I){k.12.1c.B(\'3B\',C.A.3B)}if(C.A.1J){k.12.1c.B(\'1J\',C.A.1J);if(1V.7a){k.12.1c.B(\'69\',\'9V(1J=\'+C.A.1J*2b+\')\')}}if(C.A.7w){k.12.1c.2Z(C.A.7w);k.12.1c.K(0).77.18.19=\'1n\'}if(C.A.4A)C.A.4A.1F(C,[5s,C.A.2c.x,C.A.2c.y]);if(k.1x&&k.1x.8W>0){k.1x.ea(C)}if(C.A.4j==I){9p.19=\'1n\'}E I},bP:u(C){if(C.A.2o.1K==b5){if(C.A.2o==\'96\'){C.A.24=k.21({x:0,y:0},k.1a.2p(C.3e));D 84=k.1a.6h(C.3e,1b);C.A.24.w=C.A.24.1D-84.l-84.r;C.A.24.h=C.A.24.hb-84.t-84.b}P if(C.A.2o==\'1j\'){D cM=k.1a.bq();C.A.24={x:0,y:0,w:cM.w,h:cM.h}}}P if(C.A.2o.1K==7b){C.A.24={x:T(C.A.2o[0])||0,y:T(C.A.2o[1])||0,w:T(C.A.2o[2])||0,h:T(C.A.2o[3])||0}}C.A.24.dx=C.A.24.x-C.A.1C.x;C.A.24.dy=C.A.24.y-C.A.1C.y},9o:u(F){if(F.A.8g||F.A.2o==\'96\'){k(\'2e\',1j).1R(k.12.1c.K(0))}k.12.1c.5t().2G().B(\'1J\',1);if(1V.7a){k.12.1c.B(\'69\',\'9V(1J=2b)\')}},9w:u(e){k(1j).3p(\'3H\',k.12.d6).3p(\'61\',k.12.9w);if(k.12.F==U){E}D F=k.12.F;k.12.F=U;if(F.A.7W==I){E I}if(F.A.48==1b){k(F).B(\'Y\',F.A.4m)}D 9p=F.18;if(F.5i){k.12.1c.B(\'94\',\'8C\')}if(F.A.7w){k.12.1c.4p(F.A.7w)}if(F.A.6o==I){if(F.A.fx>0){if(!F.A.1N||F.A.1N==\'4a\'){D x=11 k.fx(F,{1m:F.A.fx},\'O\');x.1L(F.A.2c.x,F.A.8c)}if(!F.A.1N||F.A.1N==\'4i\'){D y=11 k.fx(F,{1m:F.A.fx},\'Q\');y.1L(F.A.2c.y,F.A.8j)}}P{if(!F.A.1N||F.A.1N==\'4a\')F.18.O=F.A.8c+\'S\';if(!F.A.1N||F.A.1N==\'4i\')F.18.Q=F.A.8j+\'S\'}k.12.9o(F);if(F.A.4j==I){k(F).B(\'19\',F.A.7i)}}P if(F.A.fx>0){F.A.9n=1b;D dh=I;if(k.1x&&k.1t&&F.A.48){dh=k.1a.2R(k.1t.1c.K(0))}k.12.1c.5K({O:dh?dh.x:F.A.1C.x,Q:dh?dh.y:F.A.1C.y},F.A.fx,u(){F.A.9n=I;if(F.A.4j==I){F.18.19=F.A.7i}k.12.9o(F)})}P{k.12.9o(F);if(F.A.4j==I){k(F).B(\'19\',F.A.7i)}}if(k.1x&&k.1x.8W>0){k.1x.ed(F)}if(k.1t&&F.A.48){k.1t.dp(F)}if(F.A.2T&&(F.A.8c!=F.A.2c.x||F.A.8j!=F.A.2c.y)){F.A.2T.1F(F,F.A.bQ||[0,0,F.A.8c,F.A.8j])}if(F.A.3S)F.A.3S.1F(F);E I},bI:u(x,y,dx,dy){if(dx!=0)dx=T((dx+(q.A.gx*dx/14.3R(dx))/2)/q.A.gx)*q.A.gx;if(dy!=0)dy=T((dy+(q.A.gy*dy/14.3R(dy))/2)/q.A.gy)*q.A.gy;E{dx:dx,dy:dy,x:0,y:0}},bH:u(x,y,dx,dy){dx=14.3D(14.3v(dx,q.A.24.dx),q.A.24.w+q.A.24.dx-q.A.1C.1D);dy=14.3D(14.3v(dy,q.A.24.dy),q.A.24.h+q.A.24.dy-q.A.1C.hb);E{dx:dx,dy:dy,x:0,y:0}},d6:u(e){if(k.12.F==U||k.12.F.A.9n==1b){E}D F=k.12.F;F.A.4t=k.1a.44(e);if(F.A.7W==I){46=14.dm(14.5Y(F.A.1s.x-F.A.4t.x,2)+14.5Y(F.A.1s.y-F.A.4t.y,2));if(46<F.A.6m){E}P{k.12.dT(e)}}D dx=F.A.4t.x-F.A.1s.x;D dy=F.A.4t.y-F.A.1s.y;1Y(D i in F.A.5J){D 3q=F.A.5J[i].1F(F,[F.A.2c.x+dx,F.A.2c.y+dy,dx,dy]);if(3q&&3q.1K==7n){dx=i!=\'7l\'?3q.dx:(3q.x-F.A.2c.x);dy=i!=\'7l\'?3q.dy:(3q.y-F.A.2c.y)}}F.A.2x=F.A.1C.x+dx-F.A.9l;F.A.2r=F.A.1C.y+dy-F.A.9m;if(F.A.5i&&(F.A.3z||F.A.2T)){k.3d.3z(F,F.A.2x,F.A.2r)}if(F.A.4x)F.A.4x.1F(F,[F.A.2c.x+dx,F.A.2c.y+dy]);if(!F.A.1N||F.A.1N==\'4a\'){F.A.8c=F.A.2c.x+dx;k.12.1c.K(0).18.O=F.A.2x+\'S\'}if(!F.A.1N||F.A.1N==\'4i\'){F.A.8j=F.A.2c.y+dy;k.12.1c.K(0).18.Q=F.A.2r+\'S\'}if(k.1x&&k.1x.8W>0){k.1x.a3(F)}E I},2s:u(o){if(!k.12.1c){k(\'2e\',1j).1R(\'<26 id="dW"></26>\');k.12.1c=k(\'#dW\');D el=k.12.1c.K(0);D 4P=el.18;4P.Y=\'1O\';4P.19=\'1n\';4P.94=\'8C\';4P.dV=\'1n\';4P.2Y=\'2O\';if(1V.7a){el.d4="en"}P{4P.kh=\'1n\';4P.e6=\'1n\';4P.ej=\'1n\'}}if(!o){o={}}E q.1B(u(){if(q.9q||!k.1a)E;if(1V.7a){q.kf=u(){E I};q.kj=u(){E I}}D el=q;D 5e=o.3y?k(q).kp(o.3y):k(q);if(k.3h.4I){5e.1B(u(){q.d4="en"})}P{5e.B(\'-kE-7l-8Z\',\'1n\');5e.B(\'7l-8Z\',\'1n\');5e.B(\'-ko-7l-8Z\',\'1n\')}q.A={5e:5e,6o:o.6o?1b:I,4j:o.4j?1b:I,48:o.48?o.48:I,5i:o.5i?o.5i:I,8g:o.8g?o.8g:I,3B:o.3B?T(o.3B)||0:I,1J:o.1J?2m(o.1J):I,fx:T(o.fx)||U,6p:o.6p?o.6p:I,5J:{},1s:{},4A:o.4A&&o.4A.1K==2C?o.4A:I,3S:o.3S&&o.3S.1K==2C?o.3S:I,2T:o.2T&&o.2T.1K==2C?o.2T:I,1N:/4i|4a/.43(o.1N)?o.1N:I,6m:o.6m?T(o.6m)||0:0,2S:o.2S?o.2S:I,cO:o.cO?1b:I,7w:o.7w||I};if(o.5J&&o.5J.1K==2C)q.A.5J.7l=o.5J;if(o.4x&&o.4x.1K==2C)q.A.4x=o.4x;if(o.2o&&((o.2o.1K==b5&&(o.2o==\'96\'||o.2o==\'1j\'))||(o.2o.1K==7b&&o.2o.1h==4))){q.A.2o=o.2o}if(o.2K){q.A.2K=o.2K}if(o.67){if(2h o.67==\'kl\'){q.A.gx=T(o.67)||1;q.A.gy=T(o.67)||1}P if(o.67.1h==2){q.A.gx=T(o.67[0])||1;q.A.gy=T(o.67[1])||1}}if(o.3z&&o.3z.1K==2C){q.A.3z=o.3z}q.9q=1b;5e.1B(u(){q.3Z=el});5e.1H(\'5b\',k.12.cU)})}};k.fn.21({a4:k.12.58,6Y:k.12.2s});k.1x={ee:u(5r,5y,7j,7g){E 5r<=k.12.F.A.2x&&(5r+7j)>=(k.12.F.A.2x+k.12.F.A.1C.w)&&5y<=k.12.F.A.2r&&(5y+7g)>=(k.12.F.A.2r+k.12.F.A.1C.h)?1b:I},by:u(5r,5y,7j,7g){E!(5r>(k.12.F.A.2x+k.12.F.A.1C.w)||(5r+7j)<k.12.F.A.2x||5y>(k.12.F.A.2r+k.12.F.A.1C.h)||(5y+7g)<k.12.F.A.2r)?1b:I},1s:u(5r,5y,7j,7g){E 5r<k.12.F.A.4t.x&&(5r+7j)>k.12.F.A.4t.x&&5y<k.12.F.A.4t.y&&(5y+7g)>k.12.F.A.4t.y?1b:I},5l:I,3W:{},8W:0,3J:{},ea:u(C){if(k.12.F==U){E}D i;k.1x.3W={};D cZ=I;1Y(i in k.1x.3J){if(k.1x.3J[i]!=U){D 1k=k.1x.3J[i].K(0);if(k(k.12.F).is(\'.\'+1k.1i.a)){if(1k.1i.m==I){1k.1i.p=k.21(k.1a.2R(1k),k.1a.82(1k));1k.1i.m=1b}if(1k.1i.ac){k.1x.3J[i].2Z(1k.1i.ac)}k.1x.3W[i]=k.1x.3J[i];if(k.1t&&1k.1i.s&&k.12.F.A.48){1k.1i.el=k(\'.\'+1k.1i.a,1k);C.18.19=\'1n\';k.1t.c5(1k);1k.1i.9Z=k.1t.8o(k.1p(1k,\'id\')).7U;C.18.19=C.A.7i;cZ=1b}if(1k.1i.9v){1k.1i.9v.1F(k.1x.3J[i].K(0),[k.12.F])}}}}if(cZ){k.1t.28()}},ek:u(){k.1x.3W={};1Y(i in k.1x.3J){if(k.1x.3J[i]!=U){D 1k=k.1x.3J[i].K(0);if(k(k.12.F).is(\'.\'+1k.1i.a)){1k.1i.p=k.21(k.1a.2R(1k),k.1a.82(1k));if(1k.1i.ac){k.1x.3J[i].2Z(1k.1i.ac)}k.1x.3W[i]=k.1x.3J[i];if(k.1t&&1k.1i.s&&k.12.F.A.48){1k.1i.el=k(\'.\'+1k.1i.a,1k);C.18.19=\'1n\';k.1t.c5(1k);C.18.19=C.A.7i}}}}},a3:u(e){if(k.12.F==U){E}k.1x.5l=I;D i;D cb=I;D ec=0;1Y(i in k.1x.3W){D 1k=k.1x.3W[i].K(0);if(k.1x.5l==I&&k.1x[1k.1i.t](1k.1i.p.x,1k.1i.p.y,1k.1i.p.1D,1k.1i.p.hb)){if(1k.1i.hc&&1k.1i.h==I){k.1x.3W[i].2Z(1k.1i.hc)}if(1k.1i.h==I&&1k.1i.7T){cb=1b}1k.1i.h=1b;k.1x.5l=1k;if(k.1t&&1k.1i.s&&k.12.F.A.48){k.1t.1c.K(0).3b=1k.1i.eb;k.1t.a3(1k)}ec++}P if(1k.1i.h==1b){if(1k.1i.7Q){1k.1i.7Q.1F(1k,[e,k.12.1c.K(0).77,1k.1i.fx])}if(1k.1i.hc){k.1x.3W[i].4p(1k.1i.hc)}1k.1i.h=I}}if(k.1t&&!k.1x.5l&&k.12.F.48){k.1t.1c.K(0).18.19=\'1n\'}if(cb){k.1x.5l.1i.7T.1F(k.1x.5l,[e,k.12.1c.K(0).77])}},ed:u(e){D i;1Y(i in k.1x.3W){D 1k=k.1x.3W[i].K(0);if(1k.1i.ac){k.1x.3W[i].4p(1k.1i.ac)}if(1k.1i.hc){k.1x.3W[i].4p(1k.1i.hc)}if(1k.1i.s){k.1t.7V[k.1t.7V.1h]=i}if(1k.1i.9r&&1k.1i.h==1b){1k.1i.h=I;1k.1i.9r.1F(1k,[e,1k.1i.fx])}1k.1i.m=I;1k.1i.h=I}k.1x.3W={}},58:u(){E q.1B(u(){if(q.9u){if(q.1i.s){id=k.1p(q,\'id\');k.1t.5j[id]=U;k(\'.\'+q.1i.a,q).a4()}k.1x.3J[\'d\'+q.bn]=U;q.9u=I;q.f=U}})},2s:u(o){E q.1B(u(){if(q.9u==1b||!o.3P||!k.1a||!k.12){E}q.1i={a:o.3P,ac:o.a8||I,hc:o.a7||I,eb:o.4V||I,9r:o.kO||o.9r||I,7T:o.7T||o.dN||I,7Q:o.7Q||o.dz||I,9v:o.9v||I,t:o.6n&&(o.6n==\'ee\'||o.6n==\'by\')?o.6n:\'1s\',fx:o.fx?o.fx:I,m:I,h:I};if(o.bD==1b&&k.1t){id=k.1p(q,\'id\');k.1t.5j[id]=q.1i.a;q.1i.s=1b;if(o.2T){q.1i.2T=o.2T;q.1i.9Z=k.1t.8o(id).7U}}q.9u=1b;q.bn=T(14.6w()*cd);k.1x.3J[\'d\'+q.bn]=k(q);k.1x.8W++})}};k.fn.21({df:k.1x.58,dO:k.1x.2s});k.kH=k.1x.ek;k.R={1A:U,3Q:U,F:U,1s:U,1q:U,Y:U,7r:u(e){k.R.F=(q.a2)?q.a2:q;k.R.1s=k.1a.44(e);k.R.1q={Z:T(k(k.R.F).B(\'Z\'))||0,V:T(k(k.R.F).B(\'V\'))||0};k.R.Y={Q:T(k(k.R.F).B(\'Q\'))||0,O:T(k(k.R.F).B(\'O\'))||0};k(1j).1H(\'3H\',k.R.bj).1H(\'61\',k.R.bs);if(2h k.R.F.1g.ei===\'u\'){k.R.F.1g.ei.1F(k.R.F)}E I},bs:u(e){k(1j).3p(\'3H\',k.R.bj).3p(\'61\',k.R.bs);if(2h k.R.F.1g.e7===\'u\'){k.R.F.1g.e7.1F(k.R.F)}k.R.F=U},bj:u(e){if(!k.R.F){E}1s=k.1a.44(e);7u=k.R.Y.Q-k.R.1s.y+1s.y;7v=k.R.Y.O-k.R.1s.x+1s.x;7u=14.3v(14.3D(7u,k.R.F.1g.8U-k.R.1q.V),k.R.F.1g.7s);7v=14.3v(14.3D(7v,k.R.F.1g.8T-k.R.1q.Z),k.R.F.1g.7p);if(2h k.R.F.1g.4x===\'u\'){D 8J=k.R.F.1g.4x.1F(k.R.F,[7v,7u]);if(2h 8J==\'kc\'&&8J.1h==2){7v=8J[0];7u=8J[1]}}k.R.F.18.Q=7u+\'S\';k.R.F.18.O=7v+\'S\';E I},28:u(e){k(1j).1H(\'3H\',k.R.8C).1H(\'61\',k.R.8v);k.R.1A=q.1A;k.R.3Q=q.3Q;k.R.1s=k.1a.44(e);if(k.R.1A.1g.4A){k.R.1A.1g.4A.1F(k.R.1A,[q])}k.R.1q={Z:T(k(q.1A).B(\'Z\'))||0,V:T(k(q.1A).B(\'V\'))||0};k.R.Y={Q:T(k(q.1A).B(\'Q\'))||0,O:T(k(q.1A).B(\'O\'))||0};E I},8v:u(){k(1j).3p(\'3H\',k.R.8C).3p(\'61\',k.R.8v);if(k.R.1A.1g.3S){k.R.1A.1g.3S.1F(k.R.1A,[k.R.3Q])}k.R.1A=U;k.R.3Q=U},6V:u(dx,9t){E 14.3D(14.3v(k.R.1q.Z+dx*9t,k.R.1A.1g.9s),k.R.1A.1g.6q)},6Q:u(dy,9t){E 14.3D(14.3v(k.R.1q.V+dy*9t,k.R.1A.1g.8L),k.R.1A.1g.8M)},dX:u(V){E 14.3D(14.3v(V,k.R.1A.1g.8L),k.R.1A.1g.8M)},8C:u(e){if(k.R.1A==U){E}1s=k.1a.44(e);dx=1s.x-k.R.1s.x;dy=1s.y-k.R.1s.y;1E={Z:k.R.1q.Z,V:k.R.1q.V};2n={Q:k.R.Y.Q,O:k.R.Y.O};3m(k.R.3Q){1e\'e\':1E.Z=k.R.6V(dx,1);1r;1e\'eO\':1E.Z=k.R.6V(dx,1);1E.V=k.R.6Q(dy,1);1r;1e\'w\':1E.Z=k.R.6V(dx,-1);2n.O=k.R.Y.O-1E.Z+k.R.1q.Z;1r;1e\'5O\':1E.Z=k.R.6V(dx,-1);2n.O=k.R.Y.O-1E.Z+k.R.1q.Z;1E.V=k.R.6Q(dy,1);1r;1e\'7q\':1E.V=k.R.6Q(dy,-1);2n.Q=k.R.Y.Q-1E.V+k.R.1q.V;1E.Z=k.R.6V(dx,-1);2n.O=k.R.Y.O-1E.Z+k.R.1q.Z;1r;1e\'n\':1E.V=k.R.6Q(dy,-1);2n.Q=k.R.Y.Q-1E.V+k.R.1q.V;1r;1e\'9J\':1E.V=k.R.6Q(dy,-1);2n.Q=k.R.Y.Q-1E.V+k.R.1q.V;1E.Z=k.R.6V(dx,1);1r;1e\'s\':1E.V=k.R.6Q(dy,1);1r}if(k.R.1A.1g.4D){if(k.R.3Q==\'n\'||k.R.3Q==\'s\')4B=1E.V*k.R.1A.1g.4D;P 4B=1E.Z;5c=k.R.dX(4B*k.R.1A.1g.4D);4B=5c/k.R.1A.1g.4D;3m(k.R.3Q){1e\'n\':1e\'7q\':1e\'9J\':2n.Q+=1E.V-5c;1r}3m(k.R.3Q){1e\'7q\':1e\'w\':1e\'5O\':2n.O+=1E.Z-4B;1r}1E.V=5c;1E.Z=4B}if(2n.Q<k.R.1A.1g.7s){5c=1E.V+2n.Q-k.R.1A.1g.7s;2n.Q=k.R.1A.1g.7s;if(k.R.1A.1g.4D){4B=5c/k.R.1A.1g.4D;3m(k.R.3Q){1e\'7q\':1e\'w\':1e\'5O\':2n.O+=1E.Z-4B;1r}1E.Z=4B}1E.V=5c}if(2n.O<k.R.1A.1g.7p){4B=1E.Z+2n.O-k.R.1A.1g.7p;2n.O=k.R.1A.1g.7p;if(k.R.1A.1g.4D){5c=4B*k.R.1A.1g.4D;3m(k.R.3Q){1e\'n\':1e\'7q\':1e\'9J\':2n.Q+=1E.V-5c;1r}1E.V=5c}1E.Z=4B}if(2n.Q+1E.V>k.R.1A.1g.8U){1E.V=k.R.1A.1g.8U-2n.Q;if(k.R.1A.1g.4D){1E.Z=1E.V/k.R.1A.1g.4D}}if(2n.O+1E.Z>k.R.1A.1g.8T){1E.Z=k.R.1A.1g.8T-2n.O;if(k.R.1A.1g.4D){1E.V=1E.Z*k.R.1A.1g.4D}}D 6O=I;5L=k.R.1A.18;5L.O=2n.O+\'S\';5L.Q=2n.Q+\'S\';5L.Z=1E.Z+\'S\';5L.V=1E.V+\'S\';if(k.R.1A.1g.dY){6O=k.R.1A.1g.dY.1F(k.R.1A,[1E,2n]);if(6O){if(6O.1q){k.21(1E,6O.1q)}if(6O.Y){k.21(2n,6O.Y)}}}5L.O=2n.O+\'S\';5L.Q=2n.Q+\'S\';5L.Z=1E.Z+\'S\';5L.V=1E.V+\'S\';E I},2s:u(M){if(!M||!M.3U||M.3U.1K!=7n){E}E q.1B(u(){D el=q;el.1g=M;el.1g.9s=M.9s||10;el.1g.8L=M.8L||10;el.1g.6q=M.6q||6x;el.1g.8M=M.8M||6x;el.1g.7s=M.7s||-aF;el.1g.7p=M.7p||-aF;el.1g.8T=M.8T||6x;el.1g.8U=M.8U||6x;b3=k(el).B(\'Y\');if(!(b3==\'2y\'||b3==\'1O\')){el.18.Y=\'2y\'}eM=/n|9J|e|eO|s|5O|w|7q/g;1Y(i in el.1g.3U){if(i.5Z().bU(eM)!=U){if(el.1g.3U[i].1K==b5){3y=k(el.1g.3U[i]);if(3y.1P()>0){el.1g.3U[i]=3y.K(0)}}if(el.1g.3U[i].4S){el.1g.3U[i].1A=el;el.1g.3U[i].3Q=i;k(el.1g.3U[i]).1H(\'5b\',k.R.28)}}}if(el.1g.4N){if(2h el.1g.4N===\'5g\'){9K=k(el.1g.4N);if(9K.1P()>0){9K.1B(u(){q.a2=el});9K.1H(\'5b\',k.R.7r)}}P if(el.1g.4N.4S){el.1g.4N.a2=el;k(el.1g.4N).1H(\'5b\',k.R.7r)}P if(el.1g.4N==1b){k(q).1H(\'5b\',k.R.7r)}}})},58:u(){E q.1B(u(){D el=q;1Y(i in el.1g.3U){el.1g.3U[i].1A=U;el.1g.3U[i].3Q=U;k(el.1g.3U[i]).3p(\'5b\',k.R.28)}if(el.1g.4N){if(2h el.1g.4N===\'5g\'){3y=k(el.1g.4N);if(3y.1P()>0){3y.3p(\'5b\',k.R.7r)}}P if(el.1g.4N==1b){k(q).3p(\'5b\',k.R.7r)}}el.1g=U})}};k.fn.21({j5:k.R.2s,j4:k.R.58});k.2u=U;k.7Z=I;k.3n=U;k.81=[];k.a0=u(e){D 3O=e.7F||e.7A||-1;if(3O==17||3O==16){k.7Z=1b}};k.9Y=u(e){k.7Z=I};k.eW=u(e){q.f.1s=k.1a.44(e);q.f.1M=k.21(k.1a.2R(q),k.1a.2p(q));q.f.3a=k.1a.6W(q);q.f.1s.x-=q.f.1M.x;q.f.1s.y-=q.f.1M.y;if(q.f.hc)k.2u.2Z(q.f.hc);k.2u.B({19:\'2E\',Z:\'83\',V:\'83\'});if(q.f.o){k.2u.B(\'1J\',q.f.o)}k.3n=q;k.8K=I;k.81=[];q.f.el.1B(u(){q.1M={x:q.8n+(q.4Y&&!k.3h.7N?T(q.4Y.5a)||0:0)+(k.3n.3g||0),y:q.8t+(q.4Y&&!k.3h.7N?T(q.4Y.4Z)||0:0)+(k.3n.2V||0),1D:q.4b,hb:q.63};if(q.s==1b){if(k.7Z==I){q.s=I;k(q).4p(k.3n.f.7X)}P{k.8K=1b;k.81[k.81.1h]=k.1p(q,\'id\')}}});k(q).1R(k.2u.K(0));q.f.93=k.1a.6h(k.2u[0],1b);k.a1.1F(q,[e]);k(1j).1H(\'3H\',k.a1).1H(\'61\',k.bT);E I};k.a1=u(e){if(!k.3n)E;k.eU.1F(k.3n,[e])};k.eU=u(e){if(!k.3n)E;D 1s=k.1a.44(e);D 3a=k.1a.6W(k.3n);1s.x+=3a.l-q.f.3a.l-q.f.1M.x;1s.y+=3a.t-q.f.3a.t-q.f.1M.y;D 8D=14.3D(1s.x,q.f.1s.x);D 5O=14.3D(14.3R(1s.x-q.f.1s.x),14.3R(q.f.3a.w-8D));D 9f=14.3D(1s.y,q.f.1s.y);D 8R=14.3D(14.3R(1s.y-q.f.1s.y),14.3R(q.f.3a.h-9f));if(q.2V>0&&1s.y-20<q.2V){D 3T=14.3D(3a.t,10);9f-=3T;8R+=3T;q.2V-=3T}P if(q.2V+q.f.1M.h<q.f.3a.h&&1s.y+20>q.2V+q.f.1M.h){D 3T=14.3D(q.f.3a.h-q.2V,10);q.2V+=3T;if(q.2V!=3a.t)8R+=3T}if(q.3g>0&&1s.x-20<q.3g){D 3T=14.3D(3a.l,10);8D-=3T;5O+=3T;q.3g-=3T}P if(q.3g+q.f.1M.w<q.f.3a.w&&1s.x+20>q.3g+q.f.1M.w){D 3T=14.3D(q.f.3a.w-q.3g,10);q.3g+=3T;if(q.3g!=3a.l)5O+=3T}k.2u.B({O:8D+\'S\',Q:9f+\'S\',Z:5O-(q.f.93.l+q.f.93.r)+\'S\',V:8R-(q.f.93.t+q.f.93.b)+\'S\'});k.2u.l=8D+q.f.3a.l;k.2u.t=9f+q.f.3a.t;k.2u.r=k.2u.l+5O;k.2u.b=k.2u.t+8R;k.8K=I;q.f.el.1B(u(){9k=k.81.3F(k.1p(q,\'id\'));if(!(q.1M.x>k.2u.r||(q.1M.x+q.1M.1D)<k.2u.l||q.1M.y>k.2u.b||(q.1M.y+q.1M.hb)<k.2u.t)){k.8K=1b;if(q.s!=1b){q.s=1b;k(q).2Z(k.3n.f.7X)}if(9k!=-1){q.s=I;k(q).4p(k.3n.f.7X)}}P if((q.s==1b)&&(9k==-1)){q.s=I;k(q).4p(k.3n.f.7X)}P if((!q.s)&&(k.7Z==1b)&&(9k!=-1)){q.s=1b;k(q).2Z(k.3n.f.7X)}});E I};k.bT=u(e){if(!k.3n)E;k.ex.1F(k.3n,[e])};k.ex=u(e){k(1j).3p(\'3H\',k.a1).3p(\'61\',k.bT);if(!k.3n)E;k.2u.B(\'19\',\'1n\');if(q.f.hc)k.2u.4p(q.f.hc);k.3n=I;k(\'2e\').1R(k.2u.K(0));if(k.8K==1b){if(q.f.8Y)q.f.8Y(k.c2(k.1p(q,\'id\')))}P{if(q.f.8X)q.f.8X(k.c2(k.1p(q,\'id\')))}k.81=[]};k.c2=u(s){D h=\'\';D o=[];if(a=k(\'#\'+s)){a.K(0).f.el.1B(u(){if(q.s==1b){if(h.1h>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[o.1h]=k.1p(q,\'id\')}})}E{7U:h,o:o}};k.fn.jZ=u(o){if(!k.2u){k(\'2e\',1j).1R(\'<26 id="2u"></26>\').1H(\'7E\',k.a0).1H(\'6S\',k.9Y);k.2u=k(\'#2u\');k.2u.B({Y:\'1O\',19:\'1n\'});if(1V.2l){k(\'2e\',1j).1H(\'7E\',k.a0).1H(\'6S\',k.9Y)}P{k(1j).1H(\'7E\',k.a0).1H(\'6S\',k.9Y)}}if(!o){o={}}E q.1B(u(){if(q.eX)E;q.eX=1b;q.f={a:o.3P,o:o.1J?2m(o.1J):I,7X:o.eE?o.eE:I,hc:o.4V?o.4V:I,8Y:o.8Y?o.8Y:I,8X:o.8X?o.8X:I};q.f.el=k(\'.\'+o.3P);k(q).1H(\'5b\',k.eW)})};k.1t={7V:[],5j:{},1c:I,7Y:U,28:u(){if(k.12.F==U){E}D 4M,3A,c,cs;k.1t.1c.K(0).3b=k.12.F.A.6p;4M=k.1t.1c.K(0).18;4M.19=\'2E\';k.1t.1c.1C=k.21(k.1a.2R(k.1t.1c.K(0)),k.1a.2p(k.1t.1c.K(0)));4M.Z=k.12.F.A.1C.1D+\'S\';4M.V=k.12.F.A.1C.hb+\'S\';3A=k.1a.c8(k.12.F);4M.5o=3A.t;4M.5p=3A.r;4M.5m=3A.b;4M.5k=3A.l;if(k.12.F.A.4j==1b){c=k.12.F.dn(1b);cs=c.18;cs.5o=\'3c\';cs.5p=\'3c\';cs.5m=\'3c\';cs.5k=\'3c\';cs.19=\'2E\';k.1t.1c.5t().1R(c)}k(k.12.F).dj(k.1t.1c.K(0));k.12.F.18.19=\'1n\'},dp:u(e){if(!e.A.48&&k.1x.5l.bD){if(e.A.3S)e.A.3S.1F(F);k(e).B(\'Y\',e.A.c4||e.A.4m);k(e).a4();k(k.1x.5l).dd(e)}k.1t.1c.4p(e.A.6p).3w(\'&7J;\');k.1t.7Y=U;D 4M=k.1t.1c.K(0).18;4M.19=\'1n\';k.1t.1c.dj(e);if(e.A.fx>0){k(e).7m(e.A.fx)}k(\'2e\').1R(k.1t.1c.K(0));D 86=[];D 8d=I;1Y(D i=0;i<k.1t.7V.1h;i++){D 1k=k.1x.3J[k.1t.7V[i]].K(0);D id=k.1p(1k,\'id\');D 8I=k.1t.8o(id);if(1k.1i.9Z!=8I.7U){1k.1i.9Z=8I.7U;if(8d==I&&1k.1i.2T){8d=1k.1i.2T}8I.id=id;86[86.1h]=8I}}k.1t.7V=[];if(8d!=I&&86.1h>0){8d(86)}},a3:u(e,o){if(!k.12.F)E;D 6i=I;D i=0;if(e.1i.el.1P()>0){1Y(i=e.1i.el.1P();i>0;i--){if(e.1i.el.K(i-1)!=k.12.F){if(!e.5V.bM){if((e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.12.F.A.2r){6i=e.1i.el.K(i-1)}P{1r}}P{if((e.1i.el.K(i-1).1M.x+e.1i.el.K(i-1).1M.1D/2)>k.12.F.A.2x&&(e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.12.F.A.2r){6i=e.1i.el.K(i-1)}}}}}if(6i&&k.1t.7Y!=6i){k.1t.7Y=6i;k(6i).k6(k.1t.1c.K(0))}P if(!6i&&(k.1t.7Y!=U||k.1t.1c.K(0).3e!=e)){k.1t.7Y=U;k(e).1R(k.1t.1c.K(0))}k.1t.1c.K(0).18.19=\'2E\'},c5:u(e){if(k.12.F==U){E}e.1i.el.1B(u(){q.1M=k.21(k.1a.82(q),k.1a.2R(q))})},8o:u(s){D i;D h=\'\';D o={};if(s){if(k.1t.5j[s]){o[s]=[];k(\'#\'+s+\' .\'+k.1t.5j[s]).1B(u(){if(h.1h>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[s][o[s].1h]=k.1p(q,\'id\')})}P{1Y(a in s){if(k.1t.5j[s[a]]){o[s[a]]=[];k(\'#\'+s[a]+\' .\'+k.1t.5j[s[a]]).1B(u(){if(h.1h>0){h+=\'&\'}h+=s[a]+\'[]=\'+k.1p(q,\'id\');o[s[a]][o[s[a]].1h]=k.1p(q,\'id\')})}}}}P{1Y(i in k.1t.5j){o[i]=[];k(\'#\'+i+\' .\'+k.1t.5j[i]).1B(u(){if(h.1h>0){h+=\'&\'}h+=i+\'[]=\'+k.1p(q,\'id\');o[i][o[i].1h]=k.1p(q,\'id\')})}}E{7U:h,o:o}},dc:u(e){if(!e.jJ){E}E q.1B(u(){if(!q.5V||!k(e).is(\'.\'+q.5V.3P))k(e).2Z(q.5V.3P);k(e).6Y(q.5V.A)})},58:u(){E q.1B(u(){k(\'.\'+q.5V.3P).a4();k(q).df();q.5V=U;q.dD=U})},2s:u(o){if(o.3P&&k.1a&&k.12&&k.1x){if(!k.1t.1c){k(\'2e\',1j).1R(\'<26 id="dt">&7J;</26>\');k.1t.1c=k(\'#dt\');k.1t.1c.K(0).18.19=\'1n\'}q.dO({3P:o.3P,a8:o.a8?o.a8:I,a7:o.a7?o.a7:I,4V:o.4V?o.4V:I,7T:o.7T||o.dN,7Q:o.7Q||o.dz,bD:1b,2T:o.2T||o.jL,fx:o.fx?o.fx:I,4j:o.4j?1b:I,6n:o.6n?o.6n:\'by\'});E q.1B(u(){D A={6o:o.6o?1b:I,dF:6x,1J:o.1J?2m(o.1J):I,6p:o.4V?o.4V:I,fx:o.fx?o.fx:I,48:1b,4j:o.4j?1b:I,3y:o.3y?o.3y:U,2o:o.2o?o.2o:U,4A:o.4A&&o.4A.1K==2C?o.4A:I,4x:o.4x&&o.4x.1K==2C?o.4x:I,3S:o.3S&&o.3S.1K==2C?o.3S:I,1N:/4i|4a/.43(o.1N)?o.1N:I,6m:o.6m?T(o.6m)||0:I,2S:o.2S?o.2S:I};k(\'.\'+o.3P,q).6Y(A);q.dD=1b;q.5V={3P:o.3P,6o:o.6o?1b:I,dF:6x,1J:o.1J?2m(o.1J):I,6p:o.4V?o.4V:I,fx:o.fx?o.fx:I,48:1b,4j:o.4j?1b:I,3y:o.3y?o.3y:U,2o:o.2o?o.2o:U,bM:o.bM?1b:I,A:A}})}}};k.fn.21({jR:k.1t.2s,dd:k.1t.dc,jQ:k.1t.58});k.jN=k.1t.8o;k.3d={bG:1,f0:u(3u){D 3u=3u;E q.1B(u(){q.4r.6T.1B(u(a6){k.3d.59(q,3u[a6])})})},K:u(){D 3u=[];q.1B(u(bJ){if(q.bF){3u[bJ]=[];D C=q;D 1q=k.1a.2p(q);q.4r.6T.1B(u(a6){D x=q.8n;D y=q.8t;99=T(x*2b/(1q.w-q.4b));8a=T(y*2b/(1q.h-q.63));3u[bJ][a6]=[99||0,8a||0,x||0,y||0]})}});E 3u},bO:u(C){C.A.fK=C.A.24.w-C.A.1C.1D;C.A.fN=C.A.24.h-C.A.1C.hb;if(C.9P.4r.bE){a5=C.9P.4r.6T.K(C.bR+1);if(a5){C.A.24.w=(T(k(a5).B(\'O\'))||0)+C.A.1C.1D;C.A.24.h=(T(k(a5).B(\'Q\'))||0)+C.A.1C.hb}9X=C.9P.4r.6T.K(C.bR-1);if(9X){D bL=T(k(9X).B(\'O\'))||0;D bK=T(k(9X).B(\'O\'))||0;C.A.24.x+=bL;C.A.24.y+=bK;C.A.24.w-=bL;C.A.24.h-=bK}}C.A.fW=C.A.24.w-C.A.1C.1D;C.A.fV=C.A.24.h-C.A.1C.hb;if(C.A.2K){C.A.gx=((C.A.24.w-C.A.1C.1D)/C.A.2K)||1;C.A.gy=((C.A.24.h-C.A.1C.hb)/C.A.2K)||1;C.A.fY=C.A.fW/C.A.2K;C.A.fS=C.A.fV/C.A.2K}C.A.24.dx=C.A.24.x-C.A.2c.x;C.A.24.dy=C.A.24.y-C.A.2c.y;k.12.1c.B(\'94\',\'aG\')},3z:u(C,x,y){if(C.A.2K){fZ=T(x/C.A.fY);99=fZ*2b/C.A.2K;fL=T(y/C.A.fS);8a=fL*2b/C.A.2K}P{99=T(x*2b/C.A.fK);8a=T(y*2b/C.A.fN)}C.A.bQ=[99||0,8a||0,x||0,y||0];if(C.A.3z)C.A.3z.1F(C,C.A.bQ)},g4:u(2l){3O=2l.7F||2l.7A||-1;3m(3O){1e 35:k.3d.59(q.3Z,[9W,9W]);1r;1e 36:k.3d.59(q.3Z,[-9W,-9W]);1r;1e 37:k.3d.59(q.3Z,[-q.3Z.A.gx||-1,0]);1r;1e 38:k.3d.59(q.3Z,[0,-q.3Z.A.gy||-1]);1r;1e 39:k.3d.59(q.3Z,[q.3Z.A.gx||1,0]);1r;1e 40:k.12.59(q.3Z,[0,q.3Z.A.gy||1]);1r}},59:u(C,Y){if(!C.A){E}C.A.1C=k.21(k.1a.2R(C),k.1a.2p(C));C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.4m=k.B(C,\'Y\');if(C.A.4m!=\'2y\'&&C.A.4m!=\'1O\'){C.18.Y=\'2y\'}k.12.bP(C);k.3d.bO(C);dx=T(Y[0])||0;dy=T(Y[1])||0;2x=C.A.2c.x+dx;2r=C.A.2c.y+dy;if(C.A.2K){3q=k.12.bI.1F(C,[2x,2r,dx,dy]);if(3q.1K==7n){dx=3q.dx;dy=3q.dy}2x=C.A.2c.x+dx;2r=C.A.2c.y+dy}3q=k.12.bH.1F(C,[2x,2r,dx,dy]);if(3q&&3q.1K==7n){dx=3q.dx;dy=3q.dy}2x=C.A.2c.x+dx;2r=C.A.2c.y+dy;if(C.A.5i&&(C.A.3z||C.A.2T)){k.3d.3z(C,2x,2r)}2x=!C.A.1N||C.A.1N==\'4a\'?2x:C.A.2c.x||0;2r=!C.A.1N||C.A.1N==\'4i\'?2r:C.A.2c.y||0;C.18.O=2x+\'S\';C.18.Q=2r+\'S\'},2s:u(o){E q.1B(u(){if(q.bF==1b||!o.3P||!k.1a||!k.12||!k.1x){E}5N=k(o.3P,q);if(5N.1P()==0){E}D 4K={2o:\'96\',5i:1b,3z:o.3z&&o.3z.1K==2C?o.3z:U,2T:o.2T&&o.2T.1K==2C?o.2T:U,3y:q,1J:o.1J||I};if(o.2K&&T(o.2K)){4K.2K=T(o.2K)||1;4K.2K=4K.2K>0?4K.2K:1}if(5N.1P()==1)5N.6Y(4K);P{k(5N.K(0)).6Y(4K);4K.3y=U;5N.6Y(4K)}5N.7E(k.3d.g4);5N.1p(\'bG\',k.3d.bG++);q.bF=1b;q.4r={};q.4r.g6=4K.g6;q.4r.2K=4K.2K;q.4r.6T=5N;q.4r.bE=o.bE?1b:I;bS=q;bS.4r.6T.1B(u(2I){q.bR=2I;q.9P=bS});if(o.3u&&o.3u.1K==7b){1Y(i=o.3u.1h-1;i>=0;i--){if(o.3u[i].1K==7b&&o.3u[i].1h==2){el=q.4r.6T.K(i);if(el.4S){k.3d.59(el,o.3u[i])}}}}})}};k.fn.21({jV:k.3d.2s,k9:k.3d.f0,kb:k.3d.K});k.2t={6J:U,7c:I,9O:U,6D:u(e){k.2t.7c=1b;k.2t.22(e,q,1b)},bx:u(e){if(k.2t.6J!=q)E;k.2t.7c=I;k.2t.2G(e,q)},22:u(e,el,7c){if(k.2t.6J!=U)E;if(!el){el=q}k.2t.6J=el;1M=k.21(k.1a.2R(el),k.1a.2p(el));8G=k(el);45=8G.1p(\'45\');3f=8G.1p(\'3f\');if(45){k.2t.9O=45;8G.1p(\'45\',\'\');k(\'#fF\').3w(45);if(3f)k(\'#c9\').3w(3f.4v(\'k4://\',\'\'));P k(\'#c9\').3w(\'\');1c=k(\'#8V\');if(el.4T.3b){1c.K(0).3b=el.4T.3b}P{1c.K(0).3b=\'\'}c7=k.1a.2p(1c.K(0));fj=7c&&el.4T.Y==\'c3\'?\'4l\':el.4T.Y;3m(fj){1e\'Q\':2r=1M.y-c7.hb;2x=1M.x;1r;1e\'O\':2r=1M.y;2x=1M.x-c7.1D;1r;1e\'2N\':2r=1M.y;2x=1M.x+1M.1D;1r;1e\'c3\':k(\'2e\').1H(\'3H\',k.2t.3H);1s=k.1a.44(e);2r=1s.y+15;2x=1s.x+15;1r;aG:2r=1M.y+1M.hb;2x=1M.x;1r}1c.B({Q:2r+\'S\',O:2x+\'S\'});if(el.4T.53==I){1c.22()}P{1c.7m(el.4T.53)}if(el.4T.2U)el.4T.2U.1F(el);8G.1H(\'8q\',k.2t.2G).1H(\'5I\',k.2t.bx)}},3H:u(e){if(k.2t.6J==U){k(\'2e\').3p(\'3H\',k.2t.3H);E}1s=k.1a.44(e);k(\'#8V\').B({Q:1s.y+15+\'S\',O:1s.x+15+\'S\'})},2G:u(e,el){if(!el){el=q}if(k.2t.7c!=1b&&k.2t.6J==el){k.2t.6J=U;k(\'#8V\').7k(1);k(el).1p(\'45\',k.2t.9O).3p(\'8q\',k.2t.2G).3p(\'5I\',k.2t.bx);if(el.4T.3i)el.4T.3i.1F(el);k.2t.9O=U}},2s:u(M){if(!k.2t.1c){k(\'2e\').1R(\'<26 id="8V"><26 id="fF"></26><26 id="c9"></26></26>\');k(\'#8V\').B({Y:\'1O\',3B:6x,19:\'1n\'});k.2t.1c=1b}E q.1B(u(){if(k.1p(q,\'45\')){q.4T={Y:/Q|4l|O|2N|c3/.43(M.Y)?M.Y:\'4l\',3b:M.3b?M.3b:I,53:M.53?M.53:I,2U:M.2U&&M.2U.1K==2C?M.2U:I,3i:M.3i&&M.3i.1K==2C?M.3i:I};D el=k(q);el.1H(\'aV\',k.2t.22);el.1H(\'6D\',k.2t.6D)}})}};k.fn.k0=k.2t.2s;k.21({G:{bV:u(p,n,1W,1I,1m){E((-14.5v(p*14.2Q)/2)+0.5)*1I+1W},k2:u(p,n,1W,1I,1m){E 1I*(n/=1m)*n*n+1W},fG:u(p,n,1W,1I,1m){E-1I*((n=n/1m-1)*n*n*n-1)+1W},k1:u(p,n,1W,1I,1m){if((n/=1m/2)<1)E 1I/2*n*n*n*n+1W;E-1I/2*((n-=2)*n*n*n-2)+1W},9c:u(p,n,1W,1I,1m){if((n/=1m)<(1/2.75)){E 1I*(7.9N*n*n)+1W}P if(n<(2/2.75)){E 1I*(7.9N*(n-=(1.5/2.75))*n+.75)+1W}P if(n<(2.5/2.75)){E 1I*(7.9N*(n-=(2.25/2.75))*n+.jC)+1W}P{E 1I*(7.9N*(n-=(2.jB/2.75))*n+.jd)+1W}},bY:u(p,n,1W,1I,1m){if(k.G.9c)E 1I-k.G.9c(p,1m-n,0,1I,1m)+1W;E 1W+1I},jc:u(p,n,1W,1I,1m){if(k.G.bY&&k.G.9c)if(n<1m/2)E k.G.bY(p,n*2,0,1I,1m)*.5+1W;E k.G.9c(p,n*2-1m,0,1I,1m)*.5+1I*.5+1W;E 1W+1I},jb:u(p,n,1W,1I,1m){D a,s;if(n==0)E 1W;if((n/=1m)==1)E 1W+1I;a=1I*0.3;p=1m*.3;if(a<14.3R(1I)){a=1I;s=p/4}P{s=p/(2*14.2Q)*14.c0(1I/a)}E-(a*14.5Y(2,10*(n-=1))*14.98((n*1m-s)*(2*14.2Q)/p))+1W},je:u(p,n,1W,1I,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1I;a=1I*0.3;p=1m*.3;if(a<14.3R(1I)){a=1I;s=p/4}P{s=p/(2*14.2Q)*14.c0(1I/a)}E a*14.5Y(2,-10*n)*14.98((n*1m-s)*(2*14.2Q)/p)+1I+1W},jf:u(p,n,1W,1I,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1I;a=1I*0.3;p=1m*.3;if(a<14.3R(1I)){a=1I;s=p/4}P{s=p/(2*14.2Q)*14.c0(1I/a)}if(n<1){E-.5*(a*14.5Y(2,10*(n-=1))*14.98((n*1m-s)*(2*14.2Q)/p))+1W}E a*14.5Y(2,-10*(n-=1))*14.98((n*1m-s)*(2*14.2Q)/p)*.5+1I+1W}}});k.fn.21({fz:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'4U\',G)})},fP:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'4y\',G)})},j9:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'f8\',G)})},j3:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'O\',G)})},j2:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'2N\',G)})},j1:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5W(q,H,J,\'fh\',G)})}});k.fx.5W=u(e,H,J,2P,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;z.el=k(e);z.1P=k.1a.2p(e);z.G=2h J==\'5g\'?J:G||U;if(!e.4s)e.4s=z.el.B(\'19\');if(2P==\'f8\'){2P=z.el.B(\'19\')==\'1n\'?\'4y\':\'4U\'}P if(2P==\'fh\'){2P=z.el.B(\'19\')==\'1n\'?\'2N\':\'O\'}z.el.22();z.H=H;z.J=2h J==\'u\'?J:U;z.fx=k.fx.9h(e);z.2P=2P;z.23=u(){if(z.J&&z.J.1K==2C){z.J.1F(z.el.K(0))}if(z.2P==\'4y\'||z.2P==\'2N\'){z.el.B(\'19\',z.el.K(0).4s==\'1n\'?\'2E\':z.el.K(0).4s)}P{z.el.2G()}k.fx.9g(z.fx.3o.K(0),z.fx.W);k.2L(z.el.K(0),\'1o\')};3m(z.2P){1e\'4U\':6d=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'V\');6d.1L(z.fx.W.1q.hb,0);1r;1e\'4y\':z.fx.3o.B(\'V\',\'83\');z.el.22();6d=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'V\');6d.1L(0,z.fx.W.1q.hb);1r;1e\'O\':6d=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'Z\');6d.1L(z.fx.W.1q.1D,0);1r;1e\'2N\':z.fx.3o.B(\'Z\',\'83\');z.el.22();6d=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'Z\');6d.1L(0,z.fx.W.1q.1D);1r}};k.fn.kd=u(5w,J){E q.1w(\'1o\',u(){if(!k.4O(q)){k.2L(q,\'1o\');E I}D e=11 k.fx.fa(q,5w,J);e.bc()})};k.fx.fa=u(e,5w,J){D z=q;z.el=k(e);z.el.22();z.J=J;z.5w=T(5w)||40;z.W={};z.W.Y=z.el.B(\'Y\');z.W.Q=T(z.el.B(\'Q\'))||0;z.W.O=T(z.el.B(\'O\'))||0;if(z.W.Y!=\'2y\'&&z.W.Y!=\'1O\'){z.el.B(\'Y\',\'2y\')}z.41=5;z.5D=1;z.bc=u(){z.5D++;z.e=11 k.fx(z.el.K(0),{1m:j6,23:u(){z.e=11 k.fx(z.el.K(0),{1m:80,23:u(){z.5w=T(z.5w/2);if(z.5D<=z.41)z.bc();P{z.el.B(\'Y\',z.W.Y).B(\'Q\',z.W.Q+\'S\').B(\'O\',z.W.O+\'S\');k.2L(z.el.K(0),\'1o\');if(z.J&&z.J.1K==2C){z.J.1F(z.el.K(0))}}}},\'Q\');z.e.1L(z.W.Q-z.5w,z.W.Q)}},\'Q\');z.e.1L(z.W.Q,z.W.Q-z.5w)}};k.fn.21({ji:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4y\',\'4d\',G)})},jj:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4y\',\'in\',G)})},jw:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4y\',\'3Y\',G)})},jv:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4U\',\'4d\',G)})},ju:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4U\',\'in\',G)})},jx:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'4U\',\'3Y\',G)})},jy:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'O\',\'4d\',G)})},jz:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'O\',\'in\',G)})},jt:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'O\',\'3Y\',G)})},js:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'2N\',\'4d\',G)})},jm:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'2N\',\'in\',G)})},jl:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.4k(q,H,J,\'2N\',\'3Y\',G)})}});k.fx.4k=u(e,H,J,2P,1u,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;z.el=k(e);z.G=2h J==\'5g\'?J:G||U;z.W={};z.W.Y=z.el.B(\'Y\');z.W.Q=z.el.B(\'Q\');z.W.O=z.el.B(\'O\');if(!e.4s)e.4s=z.el.B(\'19\');if(1u==\'3Y\'){1u=z.el.B(\'19\')==\'1n\'?\'in\':\'4d\'}z.el.22();if(z.W.Y!=\'2y\'&&z.W.Y!=\'1O\'){z.el.B(\'Y\',\'2y\')}z.1u=1u;J=2h J==\'u\'?J:U;8y=1;3m(2P){1e\'4U\':z.e=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.68=2m(z.W.Q)||0;z.9L=z.fM;8y=-1;1r;1e\'4y\':z.e=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.68=2m(z.W.Q)||0;z.9L=z.fM;1r;1e\'2N\':z.e=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.68=2m(z.W.O)||0;z.9L=z.f4;1r;1e\'O\':z.e=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.68=2m(z.W.O)||0;z.9L=z.f4;8y=-1;1r}z.e2=11 k.fx(z.el.K(0),k.H(H,z.G,u(){z.el.B(z.W);if(z.1u==\'4d\'){z.el.B(\'19\',\'1n\')}P z.el.B(\'19\',z.el.K(0).4s==\'1n\'?\'2E\':z.el.K(0).4s);k.2L(z.el.K(0),\'1o\')}),\'1J\');if(1u==\'in\'){z.e.1L(z.68+2b*8y,z.68);z.e2.1L(0,1)}P{z.e.1L(z.68,z.68+2b*8y);z.e2.1L(1,0)}};k.fn.21({jn:u(H,V,J,G){E q.1w(\'1o\',u(){11 k.fx.9M(q,H,V,J,\'g7\',G)})},jo:u(H,V,J,G){E q.1w(\'1o\',u(){11 k.fx.9M(q,H,V,J,\'9Q\',G)})},jr:u(H,V,J,G){E q.1w(\'1o\',u(){11 k.fx.9M(q,H,V,J,\'3Y\',G)})}});k.fx.9M=u(e,H,V,J,1u,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;z.el=k(e);z.G=2h J==\'5g\'?J:G||U;z.J=2h J==\'u\'?J:U;if(1u==\'3Y\'){1u=z.el.B(\'19\')==\'1n\'?\'9Q\':\'g7\'}z.H=H;z.V=V&&V.1K==cR?V:20;z.fx=k.fx.9h(e);z.1u=1u;z.23=u(){if(z.J&&z.J.1K==2C){z.J.1F(z.el.K(0))}if(z.1u==\'9Q\'){z.el.22()}P{z.el.2G()}k.fx.9g(z.fx.3o.K(0),z.fx.W);k.2L(z.el.K(0),\'1o\')};if(z.1u==\'9Q\'){z.el.22();z.fx.3o.B(\'V\',z.V+\'S\').B(\'Z\',\'83\');z.ef=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,u(){z.ef=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'V\');z.ef.1L(z.V,z.fx.W.1q.hb)}),\'Z\');z.ef.1L(0,z.fx.W.1q.1D)}P{z.ef=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,u(){z.ef=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G,z.23),\'Z\');z.ef.1L(z.fx.W.1q.1D,0)}),\'V\');z.ef.1L(z.fx.W.1q.hb,z.V)}};k.fn.21({jq:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.6z(q,H,1,2b,1b,J,\'f1\',G)})},jp:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.6z(q,H,2b,1,1b,J,\'d2\',G)})},kt:u(H,J,G){E q.1w(\'1o\',u(){D G=G||\'fG\';11 k.fx.6z(q,H,2b,fd,1b,J,\'6l\',G)})},6z:u(H,5d,4L,6E,J,G){E q.1w(\'1o\',u(){11 k.fx.6z(q,H,5d,4L,6E,J,\'6z\',G)})}});k.fx.6z=u(e,H,5d,4L,6E,J,1u,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;z.el=k(e);z.5d=T(5d)||2b;z.4L=T(4L)||2b;z.G=2h J==\'5g\'?J:G||U;z.J=2h J==\'u\'?J:U;z.1m=k.H(H).1m;z.6E=6E||U;z.2f=k.1a.2p(e);z.W={Z:z.el.B(\'Z\'),V:z.el.B(\'V\'),4w:z.el.B(\'4w\')||\'2b%\',Y:z.el.B(\'Y\'),19:z.el.B(\'19\'),Q:z.el.B(\'Q\'),O:z.el.B(\'O\'),2Y:z.el.B(\'2Y\'),4Z:z.el.B(\'4Z\'),6k:z.el.B(\'6k\'),6g:z.el.B(\'6g\'),5a:z.el.B(\'5a\'),66:z.el.B(\'66\'),6j:z.el.B(\'6j\'),5M:z.el.B(\'5M\'),4X:z.el.B(\'4X\')};z.Z=T(z.W.Z)||e.4b||0;z.V=T(z.W.V)||e.63||0;z.Q=T(z.W.Q)||0;z.O=T(z.W.O)||0;1q=[\'em\',\'S\',\'kJ\',\'%\'];1Y(i in 1q){if(z.W.4w.3F(1q[i])>0){z.fi=1q[i];z.4w=2m(z.W.4w)}if(z.W.4Z.3F(1q[i])>0){z.fw=1q[i];z.bt=2m(z.W.4Z)||0}if(z.W.6k.3F(1q[i])>0){z.fB=1q[i];z.bg=2m(z.W.6k)||0}if(z.W.6g.3F(1q[i])>0){z.fE=1q[i];z.bf=2m(z.W.6g)||0}if(z.W.5a.3F(1q[i])>0){z.fv=1q[i];z.be=2m(z.W.5a)||0}if(z.W.66.3F(1q[i])>0){z.fk=1q[i];z.bb=2m(z.W.66)||0}if(z.W.6j.3F(1q[i])>0){z.fs=1q[i];z.ba=2m(z.W.6j)||0}if(z.W.5M.3F(1q[i])>0){z.fb=1q[i];z.cJ=2m(z.W.5M)||0}if(z.W.4X.3F(1q[i])>0){z.fq=1q[i];z.cX=2m(z.W.4X)||0}}if(z.W.Y!=\'2y\'&&z.W.Y!=\'1O\'){z.el.B(\'Y\',\'2y\')}z.el.B(\'2Y\',\'2O\');z.1u=1u;3m(z.1u){1e\'f1\':z.4f=z.Q+z.2f.h/2;z.57=z.Q;z.4c=z.O+z.2f.w/2;z.4W=z.O;1r;1e\'d2\':z.57=z.Q+z.2f.h/2;z.4f=z.Q;z.4W=z.O+z.2f.w/2;z.4c=z.O;1r;1e\'6l\':z.57=z.Q-z.2f.h/4;z.4f=z.Q;z.4W=z.O-z.2f.w/4;z.4c=z.O;1r}z.bo=I;z.t=(11 72).71();z.4u=u(){6c(z.2H);z.2H=U};z.2D=u(){if(z.bo==I){z.el.22();z.bo=1b}D t=(11 72).71();D n=t-z.t;D p=n/z.1m;if(t>=z.1m+z.t){b1(u(){o=1;if(z.1u){t=z.57;l=z.4W;if(z.1u==\'6l\')o=0}z.bv(z.4L,l,t,1b,o)},13);z.4u()}P{o=1;if(!k.G||!k.G[z.G]){s=((-14.5v(p*14.2Q)/2)+0.5)*(z.4L-z.5d)+z.5d}P{s=k.G[z.G](p,n,z.5d,(z.4L-z.5d),z.1m)}if(z.1u){if(!k.G||!k.G[z.G]){t=((-14.5v(p*14.2Q)/2)+0.5)*(z.57-z.4f)+z.4f;l=((-14.5v(p*14.2Q)/2)+0.5)*(z.4W-z.4c)+z.4c;if(z.1u==\'6l\')o=((-14.5v(p*14.2Q)/2)+0.5)*(-0.9R)+0.9R}P{t=k.G[z.G](p,n,z.4f,(z.57-z.4f),z.1m);l=k.G[z.G](p,n,z.4c,(z.4W-z.4c),z.1m);if(z.1u==\'6l\')o=k.G[z.G](p,n,0.9R,-0.9R,z.1m)}}z.bv(s,l,t,I,o)}};z.2H=6I(u(){z.2D()},13);z.bv=u(4z,O,Q,fp,1J){z.el.B(\'V\',z.V*4z/2b+\'S\').B(\'Z\',z.Z*4z/2b+\'S\').B(\'O\',O+\'S\').B(\'Q\',Q+\'S\').B(\'4w\',z.4w*4z/2b+z.fi);if(z.bt)z.el.B(\'4Z\',z.bt*4z/2b+z.fw);if(z.bg)z.el.B(\'6k\',z.bg*4z/2b+z.fB);if(z.bf)z.el.B(\'6g\',z.bf*4z/2b+z.fE);if(z.be)z.el.B(\'5a\',z.be*4z/2b+z.fv);if(z.bb)z.el.B(\'66\',z.bb*4z/2b+z.fk);if(z.ba)z.el.B(\'6j\',z.ba*4z/2b+z.fs);if(z.cJ)z.el.B(\'5M\',z.cJ*4z/2b+z.fb);if(z.cX)z.el.B(\'4X\',z.cX*4z/2b+z.fq);if(z.1u==\'6l\'){if(1V.7a)z.el.K(0).18.69="9V(1J="+1J*2b+")";z.el.K(0).18.1J=1J}if(fp){if(z.6E){z.el.B(z.W)}if(z.1u==\'d2\'||z.1u==\'6l\'){z.el.B(\'19\',\'1n\');if(z.1u==\'6l\'){if(1V.7a)z.el.K(0).18.69="9V(1J="+2b+")";z.el.K(0).18.1J=1}}P z.el.B(\'19\',\'2E\');if(z.J)z.J.1F(z.el.K(0));k.2L(z.el.K(0),\'1o\')}}};k.fn.kL=u(H,4C,J,G){E q.1w(\'f6\',u(){q.73=k(q).1p("18")||\'\';G=2h J==\'5g\'?J:G||U;J=2h J==\'u\'?J:U;D 9U=k(q).B(\'7f\');D 87=q.3e;7o(9U==\'b7\'&&87){9U=k(87).B(\'7f\');87=87.3e}k(q).B(\'7f\',4C);if(2h q.73==\'8i\')q.73=q.73["9T"];k(q).5K({\'7f\':9U},H,G,u(){k.2L(q,\'f6\');if(2h k(q).1p("18")==\'8i\'){k(q).1p("18")["9T"]="";k(q).1p("18")["9T"]=q.73}P{k(q).1p("18",q.73)}if(J)J.1F(q)})})};k.fn.21({kg:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5A(q,H,J,\'4i\',\'5P\',G)})},kq:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5A(q,H,J,\'4a\',\'5P\',G)})},kr:u(H,J,G){E q.1w(\'1o\',u(){if(k.B(q,\'19\')==\'1n\'){11 k.fx.5A(q,H,J,\'4a\',\'7e\',G)}P{11 k.fx.5A(q,H,J,\'4a\',\'5P\',G)}})},kz:u(H,J,G){E q.1w(\'1o\',u(){if(k.B(q,\'19\')==\'1n\'){11 k.fx.5A(q,H,J,\'4i\',\'7e\',G)}P{11 k.fx.5A(q,H,J,\'4i\',\'5P\',G)}})},ky:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5A(q,H,J,\'4i\',\'7e\',G)})},kx:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.5A(q,H,J,\'4a\',\'7e\',G)})}});k.fx.5A=u(e,H,J,2P,1u,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;D 5H=I;z.el=k(e);z.G=2h J==\'5g\'?J:G||U;z.J=2h J==\'u\'?J:U;z.1u=1u;z.H=H;z.2f=k.1a.2p(e);z.W={};z.W.Y=z.el.B(\'Y\');z.W.19=z.el.B(\'19\');if(z.W.19==\'1n\'){62=z.el.B(\'3j\');z.el.22();5H=1b}z.W.Q=z.el.B(\'Q\');z.W.O=z.el.B(\'O\');if(5H){z.el.2G();z.el.B(\'3j\',62)}z.W.Z=z.2f.w+\'S\';z.W.V=z.2f.h+\'S\';z.W.2Y=z.el.B(\'2Y\');z.2f.Q=T(z.W.Q)||0;z.2f.O=T(z.W.O)||0;if(z.W.Y!=\'2y\'&&z.W.Y!=\'1O\'){z.el.B(\'Y\',\'2y\')}z.el.B(\'2Y\',\'2O\').B(\'V\',1u==\'7e\'&&2P==\'4i\'?1:z.2f.h+\'S\').B(\'Z\',1u==\'7e\'&&2P==\'4a\'?1:z.2f.w+\'S\');z.23=u(){z.el.B(z.W);if(z.1u==\'5P\')z.el.2G();P z.el.22();k.2L(z.el.K(0),\'1o\')};3m(2P){1e\'4i\':z.eh=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'V\');z.et=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'Q\');if(z.1u==\'5P\'){z.eh.1L(z.2f.h,0);z.et.1L(z.2f.Q,z.2f.Q+z.2f.h/2)}P{z.eh.1L(0,z.2f.h);z.et.1L(z.2f.Q+z.2f.h/2,z.2f.Q)}1r;1e\'4a\':z.eh=11 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Z\');z.et=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'O\');if(z.1u==\'5P\'){z.eh.1L(z.2f.w,0);z.et.1L(z.2f.O,z.2f.O+z.2f.w/2)}P{z.eh.1L(0,z.2f.w);z.et.1L(z.2f.O+z.2f.w/2,z.2f.O)}1r}};k.fn.cr=u(H,41,J){E q.1w(\'1o\',u(){if(!k.4O(q)){k.2L(q,\'1o\');E I}D fx=11 k.fx.cr(q,H,41,J);fx.cm()})};k.fx.cr=u(el,H,41,J){D z=q;z.41=41;z.5D=1;z.el=el;z.H=H;z.J=J;k(z.el).22();z.cm=u(){z.5D++;z.e=11 k.fx(z.el,k.H(z.H,u(){z.ef=11 k.fx(z.el,k.H(z.H,u(){if(z.5D<=z.41)z.cm();P{k.2L(z.el,\'1o\');if(z.J&&z.J.1K==2C){z.J.1F(z.el)}}}),\'1J\');z.ef.1L(0,1)}),\'1J\');z.e.1L(1,0)}};k.fn.21({9S:u(H,1N,G){o=k.H(H);E q.1w(\'1o\',u(){11 k.fx.9S(q,o,1N,G)})},ks:u(H,1N,G){E q.1B(u(){k(\'a[@3f*="#"]\',q).5G(u(e){g8=q.3f.7h(\'#\');k(\'#\'+g8[1]).9S(H,1N,G);E I})})}});k.fx.9S=u(e,o,1N,G){D z=q;z.o=o;z.e=e;z.1N=/g3|g0/.43(1N)?1N:I;z.G=G;p=k.1a.2R(e);s=k.1a.6W();z.4u=u(){6c(z.2H);z.2H=U;k.2L(z.e,\'1o\')};z.t=(11 72).71();s.h=s.h>s.ih?(s.h-s.ih):s.h;s.w=s.w>s.iw?(s.w-s.iw):s.w;z.57=p.y>s.h?s.h:p.y;z.4W=p.x>s.w?s.w:p.x;z.4f=s.t;z.4c=s.l;z.2D=u(){D t=(11 72).71();D n=t-z.t;D p=n/z.o.1m;if(t>=z.o.1m+z.t){z.4u();b1(u(){z.cE(z.57,z.4W)},13)}P{if(!z.1N||z.1N==\'g3\'){if(!k.G||!k.G[z.G]){aa=((-14.5v(p*14.2Q)/2)+0.5)*(z.57-z.4f)+z.4f}P{aa=k.G[z.G](p,n,z.4f,(z.57-z.4f),z.o.1m)}}P{aa=z.4f}if(!z.1N||z.1N==\'g0\'){if(!k.G||!k.G[z.G]){a9=((-14.5v(p*14.2Q)/2)+0.5)*(z.4W-z.4c)+z.4c}P{a9=k.G[z.G](p,n,z.4c,(z.4W-z.4c),z.o.1m)}}P{a9=z.4c}z.cE(aa,a9)}};z.cE=u(t,l){1V.gN(l,t)};z.2H=6I(u(){z.2D()},13)};k.fn.cy=u(41,J){E q.1w(\'1o\',u(){if(!k.4O(q)){k.2L(q,\'1o\');E I}D e=11 k.fx.cy(q,41,J);e.cx()})};k.fx.cy=u(e,41,J){D z=q;z.el=k(e);z.el.22();z.41=T(41)||3;z.J=J;z.5D=1;z.W={};z.W.Y=z.el.B(\'Y\');z.W.Q=T(z.el.B(\'Q\'))||0;z.W.O=T(z.el.B(\'O\'))||0;if(z.W.Y!=\'2y\'&&z.W.Y!=\'1O\'){z.el.B(\'Y\',\'2y\')}z.cx=u(){z.5D++;z.e=11 k.fx(z.el.K(0),{1m:60,23:u(){z.e=11 k.fx(z.el.K(0),{1m:60,23:u(){z.e=11 k.fx(e,{1m:60,23:u(){if(z.5D<=z.41)z.cx();P{z.el.B(\'Y\',z.W.Y).B(\'Q\',z.W.Q+\'S\').B(\'O\',z.W.O+\'S\');k.2L(z.el.K(0),\'1o\');if(z.J&&z.J.1K==2C){z.J.1F(z.el.K(0))}}}},\'O\');z.e.1L(z.W.O-20,z.W.O)}},\'O\');z.e.1L(z.W.O+20,z.W.O-20)}},\'O\');z.e.1L(z.W.O,z.W.O+20)}};k.fn.21({g9:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4U\',\'in\',G)})},f3:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4U\',\'4d\',G)})},gM:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4U\',\'3Y\',G)})},gL:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4y\',\'in\',G)})},gK:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4y\',\'4d\',G)})},gS:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'4y\',\'3Y\',G)})},gR:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'O\',\'in\',G)})},gJ:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'O\',\'4d\',G)})},gI:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'O\',\'3Y\',G)})},gC:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'2N\',\'in\',G)})},gB:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'2N\',\'4d\',G)})},gU:u(H,J,G){E q.1w(\'1o\',u(){11 k.fx.1z(q,H,J,\'2N\',\'3Y\',G)})}});k.fx.1z=u(e,H,J,2P,1u,G){if(!k.4O(e)){k.2L(e,\'1o\');E I}D z=q;z.el=k(e);z.G=2h J==\'5g\'?J:G||U;z.J=2h J==\'u\'?J:U;if(1u==\'3Y\'){1u=z.el.B(\'19\')==\'1n\'?\'in\':\'4d\'}if(!e.4s)e.4s=z.el.B(\'19\');z.el.22();z.H=H;z.fx=k.fx.9h(e);z.1u=1u;z.2P=2P;z.23=u(){if(z.1u==\'4d\')z.el.B(\'3j\',\'2O\');k.fx.9g(z.fx.3o.K(0),z.fx.W);if(z.1u==\'in\'){z.el.B(\'19\',z.el.K(0).4s==\'1n\'?\'2E\':z.el.K(0).4s)}P{z.el.B(\'19\',\'1n\');z.el.B(\'3j\',\'dR\')}if(z.J&&z.J.1K==2C){z.J.1F(z.el.K(0))}k.2L(z.el.K(0),\'1o\')};3m(z.2P){1e\'4U\':z.ef=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'Q\');z.7S=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G),\'V\');if(z.1u==\'in\'){z.ef.1L(-z.fx.W.1q.hb,0);z.7S.1L(0,z.fx.W.1q.hb)}P{z.ef.1L(0,-z.fx.W.1q.hb);z.7S.1L(z.fx.W.1q.hb,0)}1r;1e\'4y\':z.ef=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'Q\');if(z.1u==\'in\'){z.ef.1L(z.fx.W.1q.hb,0)}P{z.ef.1L(0,z.fx.W.1q.hb)}1r;1e\'O\':z.ef=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'O\');z.7S=11 k.fx(z.fx.3o.K(0),k.H(z.H,z.G),\'Z\');if(z.1u==\'in\'){z.ef.1L(-z.fx.W.1q.1D,0);z.7S.1L(0,z.fx.W.1q.1D)}P{z.ef.1L(0,-z.fx.W.1q.1D);z.7S.1L(z.fx.W.1q.1D,0)}1r;1e\'2N\':z.ef=11 k.fx(z.el.K(0),k.H(z.H,z.G,z.23),\'O\');if(z.1u==\'in\'){z.ef.1L(z.fx.W.1q.1D,0)}P{z.ef.1L(0,z.fx.W.1q.1D)}1r}};k.h2=U;k.fn.h1=u(o){E q.1B(u(){if(!o||!o.4L){E}D el=q;k(o.4L).1B(u(){11 k.fx.fu(el,q,o)})})};k.fx.fu=u(e,8s,o){D z=q;z.el=k(e);z.8s=8s;z.4e=1j.3t(\'26\');k(z.4e).B({Y:\'1O\'}).2Z(o.3b);if(!o.1m){o.1m=er}z.1m=o.1m;z.23=o.23;z.9i=0;z.9j=0;if(k.f5){z.9i=(T(k.3M(z.4e,\'5a\'))||0)+(T(k.3M(z.4e,\'6k\'))||0)+(T(k.3M(z.4e,\'4X\'))||0)+(T(k.3M(z.4e,\'6j\'))||0);z.9j=(T(k.3M(z.4e,\'4Z\'))||0)+(T(k.3M(z.4e,\'6g\'))||0)+(T(k.3M(z.4e,\'66\'))||0)+(T(k.3M(z.4e,\'5M\'))||0)}z.28=k.21(k.1a.2R(z.el.K(0)),k.1a.2p(z.el.K(0)));z.2X=k.21(k.1a.2R(z.8s),k.1a.2p(z.8s));z.28.1D-=z.9i;z.28.hb-=z.9j;z.2X.1D-=z.9i;z.2X.hb-=z.9j;z.J=o.23;k(\'2e\').1R(z.4e);k(z.4e).B(\'Z\',z.28.1D+\'S\').B(\'V\',z.28.hb+\'S\').B(\'Q\',z.28.y+\'S\').B(\'O\',z.28.x+\'S\').5K({Q:z.2X.y,O:z.2X.x,Z:z.2X.1D,V:z.2X.hb},z.1m,u(){k(z.4e).aB();if(z.23&&z.23.1K==2C){z.23.1F(z.el.K(0),[z.4L])}})};k.ak={2s:u(M){E q.1B(u(){D el=q;D 7x=2*14.2Q/eY;D aZ=2*14.2Q;if(k(el).B(\'Y\')!=\'2y\'&&k(el).B(\'Y\')!=\'1O\'){k(el).B(\'Y\',\'2y\')}el.1l={1S:k(M.1S,q),2F:M.2F,6M:M.6M,an:M.an,aZ:aZ,1P:k.1a.2p(q),Y:k.1a.2R(q),28:14.2Q/2,ct:M.ct,91:M.6R,6R:[],aY:I,7x:2*14.2Q/eY};el.1l.eZ=(el.1l.1P.w-el.1l.2F)/2;el.1l.7O=(el.1l.1P.h-el.1l.6M-el.1l.6M*el.1l.91)/2;el.1l.2D=2*14.2Q/el.1l.1S.1P();el.1l.cI=el.1l.1P.w/2;el.1l.cF=el.1l.1P.h/2-el.1l.6M*el.1l.91;D aS=1j.3t(\'26\');k(aS).B({Y:\'1O\',3B:1,Q:0,O:0});k(el).1R(aS);el.1l.1S.1B(u(2I){ab=k(\'1U\',q).K(0);V=T(el.1l.6M*el.1l.91);if(k.3h.4I){3N=1j.3t(\'1U\');k(3N).B(\'Y\',\'1O\');3N.2M=ab.2M;3N.18.69=\'iW aw:ax.ay.c1(1J=60, 18=1, iJ=0, i6=0, hz=0, hx=0)\'}P{3N=1j.3t(\'3N\');if(3N.ga){4H=3N.ga("2d");3N.18.Y=\'1O\';3N.18.V=V+\'S\';3N.18.Z=el.1l.2F+\'S\';3N.V=V;3N.Z=el.1l.2F;4H.i4();4H.i2(0,V);4H.hT(1,-1);4H.hJ(ab,0,0,el.1l.2F,V);4H.6E();4H.hN="hO-4d";D b0=4H.hQ(0,0,0,V);b0.g1(1,"fU(1X, 1X, 1X, 1)");b0.g1(0,"fU(1X, 1X, 1X, 0.6)");4H.hR=b0;if(iR.iv.3F(\'ix\')!=-1){4H.it()}P{4H.ir(0,0,el.1l.2F,V)}}}el.1l.6R[2I]=3N;k(aS).1R(3N)}).1H(\'aV\',u(e){el.1l.aY=1b;el.1l.H=el.1l.7x*0.1*el.1l.H/14.3R(el.1l.H);E I}).1H(\'8q\',u(e){el.1l.aY=I;E I});k.ak.7P(el);el.1l.H=el.1l.7x*0.2;el.1l.gm=1V.6I(u(){el.1l.28+=el.1l.H;if(el.1l.28>aZ)el.1l.28=0;k.ak.7P(el)},20);k(el).1H(\'8q\',u(){el.1l.H=el.1l.7x*0.2*el.1l.H/14.3R(el.1l.H)}).1H(\'3H\',u(e){if(el.1l.aY==I){1s=k.1a.44(e);fe=el.1l.1P.w-1s.x+el.1l.Y.x;el.1l.H=el.1l.ct*el.1l.7x*(el.1l.1P.w/2-fe)/(el.1l.1P.w/2)}})})},7P:u(el){el.1l.1S.1B(u(2I){ch=el.1l.28+2I*el.1l.2D;x=el.1l.eZ*14.5v(ch);y=el.1l.7O*14.98(ch);fm=T(2b*(el.1l.7O+y)/(2*el.1l.7O));fl=(el.1l.7O+y)/(2*el.1l.7O);Z=T((el.1l.2F-el.1l.an)*fl+el.1l.an);V=T(Z*el.1l.6M/el.1l.2F);q.18.Q=el.1l.cF+y-V/2+"S";q.18.O=el.1l.cI+x-Z/2+"S";q.18.Z=Z+"S";q.18.V=V+"S";q.18.3B=fm;el.1l.6R[2I].18.Q=T(el.1l.cF+y+V-1-V/2)+"S";el.1l.6R[2I].18.O=T(el.1l.cI+x-Z/2)+"S";el.1l.6R[2I].18.Z=Z+"S";el.1l.6R[2I].18.V=T(V*el.1l.91)+"S"})}};k.fn.h9=k.ak.2s;k.ff={2s:u(M){E q.1B(u(){if(!M.ae||!M.ad)E;D el=q;el.2j={ag:M.ag||bw,ae:M.ae,ad:M.ad,8r:M.8r||\'f7\',af:M.af||\'f7\',2U:M.2U&&2h M.2U==\'u\'?M.2U:I,3i:M.2U&&2h M.3i==\'u\'?M.3i:I,74:M.74&&2h M.74==\'u\'?M.74:I,ai:k(M.ae,q),8f:k(M.ad,q),H:M.H||8w,6e:M.6e||0};el.2j.8f.2G().B(\'V\',\'83\').eq(0).B({V:el.2j.ag+\'S\',19:\'2E\'}).2X();el.2j.ai.1B(u(2I){q.7d=2I}).h6(u(){k(q).2Z(el.2j.af)},u(){k(q).4p(el.2j.af)}).1H(\'5G\',u(e){if(el.2j.6e==q.7d)E;el.2j.ai.eq(el.2j.6e).4p(el.2j.8r).2X().eq(q.7d).2Z(el.2j.8r).2X();el.2j.8f.eq(el.2j.6e).5K({V:0},el.2j.H,u(){q.18.19=\'1n\';if(el.2j.3i){el.2j.3i.1F(el,[q])}}).2X().eq(q.7d).22().5K({V:el.2j.ag},el.2j.H,u(){q.18.19=\'2E\';if(el.2j.2U){el.2j.2U.1F(el,[q])}}).2X();if(el.2j.74){el.2j.74.1F(el,[q,el.2j.8f.K(q.7d),el.2j.ai.K(el.2j.6e),el.2j.8f.K(el.2j.6e)])}el.2j.6e=q.7d}).eq(0).2Z(el.2j.8r).2X();k(q).B(\'V\',k(q).B(\'V\')).B(\'2Y\',\'2O\')})}};k.fn.h7=k.ff.2s;k.3L={1c:U,8u:u(){31=q.2v;if(!31)E;18={fg:k(q).B(\'fg\')||\'\',4w:k(q).B(\'4w\')||\'\',8h:k(q).B(\'8h\')||\'\',fI:k(q).B(\'fI\')||\'\',fJ:k(q).B(\'fJ\')||\'\',fT:k(q).B(\'fT\')||\'\',cH:k(q).B(\'cH\')||\'\',fc:k(q).B(\'fc\')||\'\'};k.3L.1c.B(18);3w=k.3L.g2(31);3w=3w.4v(11 cp("\\\\n","g"),"<br />");k.3L.1c.3w(\'km\');ck=k.3L.1c.K(0).4b;k.3L.1c.3w(3w);Z=k.3L.1c.K(0).4b+ck;if(q.6t.2J&&Z>q.6t.2J[0]){Z=q.6t.2J[0]}q.18.Z=Z+\'S\';if(q.4S==\'cQ\'){V=k.3L.1c.K(0).63+ck;if(q.6t.2J&&V>q.6t.2J[1]){V=q.6t.2J[1]}q.18.V=V+\'S\'}},g2:u(31){co={\'&\':\'&j0;\',\'<\':\'&kB;\',\'>\':\'&gt;\',\'"\':\'&kw;\'};1Y(i in co){31=31.4v(11 cp(i,\'g\'),co[i])}E 31},2s:u(2J){if(k.3L.1c==U){k(\'2e\',1j).1R(\'<26 id="fH" 18="Y: 1O; Q: 0; O: 0; 3j: 2O;"></26>\');k.3L.1c=k(\'#fH\')}E q.1B(u(){if(/cQ|bz/.43(q.4S)){if(q.4S==\'bz\'){f9=q.5n(\'1u\');if(!/31|kv/.43(f9)){E}}if(2J&&(2J.1K==cR||(2J.1K==7b&&2J.1h==2))){if(2J.1K==cR)2J=[2J,2J];P{2J[0]=T(2J[0])||8w;2J[1]=T(2J[1])||8w}q.6t={2J:2J}}k(q).5I(k.3L.8u).6S(k.3L.8u).fX(k.3L.8u);k.3L.8u.1F(q)}})}};k.fn.ke=k.3L.2s;k.N={1c:U,8S:U,3E:U,2H:U,4o:U,bp:U,1d:U,2g:U,1S:U,5t:u(){k.N.8S.5t();if(k.N.3E){k.N.3E.2G()}},4u:u(){k.N.1S=U;k.N.2g=U;k.N.4o=k.N.1d.2v;if(k.N.1c.B(\'19\')==\'2E\'){if(k.N.1d.1f.fx){3m(k.N.1d.1f.fx.1u){1e\'bB\':k.N.1c.7k(k.N.1d.1f.fx.1m,k.N.5t);1r;1e\'1z\':k.N.1c.f3(k.N.1d.1f.fx.1m,k.N.5t);1r;1e\'aT\':k.N.1c.fz(k.N.1d.1f.fx.1m,k.N.5t);1r}}P{k.N.1c.2G()}if(k.N.1d.1f.3i)k.N.1d.1f.3i.1F(k.N.1d,[k.N.1c,k.N.3E])}P{k.N.5t()}1V.c6(k.N.2H)},fy:u(){D 1d=k.N.1d;D 4g=k.N.ap(1d);if(1d&&4g.3k!=k.N.4o&&4g.3k.1h>=1d.1f.aL){k.N.4o=4g.3k;k.N.bp=4g.3k;79={2q:k(1d).1p(\'kP\')||\'2q\',2v:4g.3k};k.kN({1u:\'kG\',79:k.kI(79),kF:u(ft){1d.1f.4h=k(\'3k\',ft);1P=1d.1f.4h.1P();if(1P>0){D 5x=\'\';1d.1f.4h.1B(u(2I){5x+=\'<90 4G="\'+k(\'2v\',q).31()+\'" 8O="\'+2I+\'" 18="94: aG;">\'+k(\'31\',q).31()+\'</90>\'});if(1d.1f.aR){D 3G=k(\'2v\',1d.1f.4h.K(0)).31();1d.2v=4g.3l+3G+1d.1f.3K+4g.5Q;k.N.6G(1d,4g.3k.1h!=3G.1h?(4g.3l.1h+4g.3k.1h):3G.1h,4g.3k.1h!=3G.1h?(4g.3l.1h+3G.1h):3G.1h)}if(1P>0){k.N.b4(1d,5x)}P{k.N.4u()}}P{k.N.4u()}},6b:1d.1f.aM})}},b4:u(1d,5x){k.N.8S.3w(5x);k.N.1S=k(\'90\',k.N.8S.K(0));k.N.1S.aV(k.N.f2).1H(\'5G\',k.N.fO);D Y=k.1a.2R(1d);D 1P=k.1a.2p(1d);k.N.1c.B(\'Q\',Y.y+1P.hb+\'S\').B(\'O\',Y.x+\'S\').2Z(1d.1f.aK);if(k.N.3E){k.N.3E.B(\'19\',\'2E\').B(\'Q\',Y.y+1P.hb+\'S\').B(\'O\',Y.x+\'S\').B(\'Z\',k.N.1c.B(\'Z\')).B(\'V\',k.N.1c.B(\'V\'))}k.N.2g=0;k.N.1S.K(0).3b=1d.1f.70;k.N.8P(1d,1d.1f.4h.K(0),\'6Z\');if(k.N.1c.B(\'19\')==\'1n\'){if(1d.1f.bA){D bm=k.1a.aj(1d,1b);D bl=k.1a.6h(1d,1b);k.N.1c.B(\'Z\',1d.4b-(k.f5?(bm.l+bm.r+bl.l+bl.r):0)+\'S\')}if(1d.1f.fx){3m(1d.1f.fx.1u){1e\'bB\':k.N.1c.7m(1d.1f.fx.1m);1r;1e\'1z\':k.N.1c.g9(1d.1f.fx.1m);1r;1e\'aT\':k.N.1c.fP(1d.1f.fx.1m);1r}}P{k.N.1c.22()}if(k.N.1d.1f.2U)k.N.1d.1f.2U.1F(k.N.1d,[k.N.1c,k.N.3E])}},fC:u(){D 1d=q;if(1d.1f.4h){k.N.4o=1d.2v;k.N.bp=1d.2v;D 5x=\'\';1d.1f.4h.1B(u(2I){2v=k(\'2v\',q).31().5Z();fR=1d.2v.5Z();if(2v.3F(fR)==0){5x+=\'<90 4G="\'+k(\'2v\',q).31()+\'" 8O="\'+2I+\'" 18="94: aG;">\'+k(\'31\',q).31()+\'</90>\'}});if(5x!=\'\'){k.N.b4(1d,5x);q.1f.aW=1b;E}}1d.1f.4h=U;q.1f.aW=I},6G:u(2q,28,2X){if(2q.aI){D 6K=2q.aI();6K.j8(1b);6K.fr("bW",28);6K.ja("bW",-2X+28);6K.8Z()}P if(2q.aU){2q.aU(28,2X)}P{if(2q.5B){2q.5B=28;2q.dq=2X}}2q.6D()},fD:u(2q){if(2q.5B)E 2q.5B;P if(2q.aI){D 6K=1j.6G.du();D fo=6K.jg();E 0-fo.fr(\'bW\',-jX)}},ap:u(2q){D 4F={2v:2q.2v,3l:\'\',5Q:\'\',3k:\'\'};if(2q.1f.aO){D 97=I;D 5B=k.N.fD(2q)||0;D 56=4F.2v.7h(2q.1f.3K);1Y(D i=0;i<56.1h;i++){if((4F.3l.1h+56[i].1h>=5B||5B==0)&&!97){if(4F.3l.1h<=5B)4F.3k=56[i];P 4F.5Q+=56[i]+(56[i]!=\'\'?2q.1f.3K:\'\');97=1b}P if(97){4F.5Q+=56[i]+(56[i]!=\'\'?2q.1f.3K:\'\')}if(!97){4F.3l+=56[i]+(56.1h>1?2q.1f.3K:\'\')}}}P{4F.3k=4F.2v}E 4F},bu:u(e){1V.c6(k.N.2H);D 1d=k.N.ap(q);D 3O=e.7F||e.7A||-1;if(/^13$|27$|35$|36$|38$|40$|^9$/.43(3O)&&k.N.1S){if(1V.2l){1V.2l.cj=1b;1V.2l.ci=I}P{e.al();e.am()}if(k.N.2g!=U)k.N.1S.K(k.N.2g||0).3b=\'\';P k.N.2g=-1;3m(3O){1e 9:1e 13:if(k.N.2g==-1)k.N.2g=0;D 2g=k.N.1S.K(k.N.2g||0);D 3G=2g.5n(\'4G\');q.2v=1d.3l+3G+q.1f.3K+1d.5Q;k.N.4o=1d.3k;k.N.6G(q,1d.3l.1h+3G.1h+q.1f.3K.1h,1d.3l.1h+3G.1h+q.1f.3K.1h);k.N.4u();if(q.1f.6a){4n=T(2g.5n(\'8O\'))||0;k.N.8P(q,q.1f.4h.K(4n),\'6a\')}if(q.76)q.76(I);E 3O!=13;1r;1e 27:q.2v=1d.3l+k.N.4o+q.1f.3K+1d.5Q;q.1f.4h=U;k.N.4u();if(q.76)q.76(I);E I;1r;1e 35:k.N.2g=k.N.1S.1P()-1;1r;1e 36:k.N.2g=0;1r;1e 38:k.N.2g--;if(k.N.2g<0)k.N.2g=k.N.1S.1P()-1;1r;1e 40:k.N.2g++;if(k.N.2g==k.N.1S.1P())k.N.2g=0;1r}k.N.8P(q,q.1f.4h.K(k.N.2g||0),\'6Z\');k.N.1S.K(k.N.2g||0).3b=q.1f.70;if(k.N.1S.K(k.N.2g||0).76)k.N.1S.K(k.N.2g||0).76(I);if(q.1f.aR){D aA=k.N.1S.K(k.N.2g||0).5n(\'4G\');q.2v=1d.3l+aA+q.1f.3K+1d.5Q;if(k.N.4o.1h!=aA.1h)k.N.6G(q,1d.3l.1h+k.N.4o.1h,1d.3l.1h+aA.1h)}E I}k.N.fC.1F(q);if(q.1f.aW==I){if(1d.3k!=k.N.4o&&1d.3k.1h>=q.1f.aL)k.N.2H=1V.b1(k.N.fy,q.1f.53);if(k.N.1S){k.N.4u()}}E 1b},8P:u(2q,3k,1u){if(2q.1f[1u]){D 79={};aE=3k.dU(\'*\');1Y(i=0;i<aE.1h;i++){79[aE[i].4S]=aE[i].77.k3}2q.1f[1u].1F(2q,[79])}},f2:u(e){if(k.N.1S){if(k.N.2g!=U)k.N.1S.K(k.N.2g||0).3b=\'\';k.N.1S.K(k.N.2g||0).3b=\'\';k.N.2g=T(q.5n(\'8O\'))||0;k.N.1S.K(k.N.2g||0).3b=k.N.1d.1f.70}},fO:u(2l){1V.c6(k.N.2H);2l=2l||k.2l.jH(1V.2l);2l.al();2l.am();D 1d=k.N.ap(k.N.1d);D 3G=q.5n(\'4G\');k.N.1d.2v=1d.3l+3G+k.N.1d.1f.3K+1d.5Q;k.N.4o=q.5n(\'4G\');k.N.6G(k.N.1d,1d.3l.1h+3G.1h+k.N.1d.1f.3K.1h,1d.3l.1h+3G.1h+k.N.1d.1f.3K.1h);k.N.4u();if(k.N.1d.1f.6a){4n=T(q.5n(\'8O\'))||0;k.N.8P(k.N.1d,k.N.1d.1f.4h.K(4n),\'6a\')}E I},gb:u(e){3O=e.7F||e.7A||-1;if(/13|27|35|36|38|40/.43(3O)&&k.N.1S){if(1V.2l){1V.2l.cj=1b;1V.2l.ci=I}P{e.al();e.am()}E I}},2s:u(M){if(!M.aM||!k.1a){E}if(!k.N.1c){if(k.3h.4I){k(\'2e\',1j).1R(\'<3E 18="19:1n;Y:1O;69:aw:ax.ay.c1(1J=0);" id="g5" 2M="ew:I;" ez="0" ey="bX"></3E>\');k.N.3E=k(\'#g5\')}k(\'2e\',1j).1R(\'<26 id="gc" 18="Y: 1O; Q: 0; O: 0; z-b2: jE; 19: 1n;"><aX 18="6X: 0;92: 0; jF-18: 1n; z-b2: jM;">&7J;</aX></26>\');k.N.1c=k(\'#gc\');k.N.8S=k(\'aX\',k.N.1c)}E q.1B(u(){if(q.4S!=\'bz\'&&q.5n(\'1u\')!=\'31\')E;q.1f={};q.1f.aM=M.aM;q.1f.aL=14.3R(T(M.aL)||1);q.1f.aK=M.aK?M.aK:\'\';q.1f.70=M.70?M.70:\'\';q.1f.6a=M.6a&&M.6a.1K==2C?M.6a:U;q.1f.2U=M.2U&&M.2U.1K==2C?M.2U:U;q.1f.3i=M.3i&&M.3i.1K==2C?M.3i:U;q.1f.6Z=M.6Z&&M.6Z.1K==2C?M.6Z:U;q.1f.bA=M.bA||I;q.1f.aO=M.aO||I;q.1f.3K=q.1f.aO?(M.3K||\', \'):\'\';q.1f.aR=M.aR?1b:I;q.1f.53=14.3R(T(M.53)||aF);if(M.fx&&M.fx.1K==7n){if(!M.fx.1u||!/bB|1z|aT/.43(M.fx.1u)){M.fx.1u=\'1z\'}if(M.fx.1u==\'1z\'&&!k.fx.1z)E;if(M.fx.1u==\'aT\'&&!k.fx.5W)E;M.fx.1m=14.3R(T(M.fx.1m)||8w);if(M.fx.1m>q.1f.53){M.fx.1m=q.1f.53-2b}q.1f.fx=M.fx}q.1f.4h=U;q.1f.aW=I;k(q).1p(\'bu\',\'fQ\').6D(u(){k.N.1d=q;k.N.4o=q.2v}).fX(k.N.gb).6S(k.N.bu).5I(u(){k.N.2H=1V.b1(k.N.4u,jP)})})}};k.fn.jO=k.N.2s;k.1y={2H:U,4E:U,29:U,2D:10,28:u(el,4P,2D,di){k.1y.4E=el;k.1y.29=4P;k.1y.2D=T(2D)||10;k.1y.2H=1V.6I(k.1y.db,T(di)||40)},db:u(){1Y(i=0;i<k.1y.29.1h;i++){if(!k.1y.29[i].30){k.1y.29[i].30=k.21(k.1a.bN(k.1y.29[i]),k.1a.82(k.1y.29[i]),k.1a.6W(k.1y.29[i]))}P{k.1y.29[i].30.t=k.1y.29[i].2V;k.1y.29[i].30.l=k.1y.29[i].3g}if(k.1y.4E.A&&k.1y.4E.A.7W==1b){6f={x:k.1y.4E.A.2x,y:k.1y.4E.A.2r,1D:k.1y.4E.A.1C.1D,hb:k.1y.4E.A.1C.hb}}P{6f=k.21(k.1a.bN(k.1y.4E),k.1a.82(k.1y.4E))}if(k.1y.29[i].30.t>0&&k.1y.29[i].30.y+k.1y.29[i].30.t>6f.y){k.1y.29[i].2V-=k.1y.2D}P if(k.1y.29[i].30.t<=k.1y.29[i].30.h&&k.1y.29[i].30.t+k.1y.29[i].30.hb<6f.y+6f.hb){k.1y.29[i].2V+=k.1y.2D}if(k.1y.29[i].30.l>0&&k.1y.29[i].30.x+k.1y.29[i].30.l>6f.x){k.1y.29[i].3g-=k.1y.2D}P if(k.1y.29[i].30.l<=k.1y.29[i].30.jT&&k.1y.29[i].30.l+k.1y.29[i].30.1D<6f.x+6f.1D){k.1y.29[i].3g+=k.1y.2D}}},8v:u(){1V.6c(k.1y.2H);k.1y.4E=U;k.1y.29=U;1Y(i in k.1y.29){k.1y.29[i].30=U}}};k.6y={2s:u(M){E q.1B(u(){D el=q;el.1G={1S:k(M.1S,q),1Z:k(M.1Z,q),1M:k.1a.2R(q),2F:M.2F,aN:M.aN,7R:M.7R,dw:M.dw,51:M.51,6q:M.6q};k.6y.aJ(el,0);k(1V).1H(\'jS\',u(){el.1G.1M=k.1a.2R(el);k.6y.aJ(el,0);k.6y.7P(el)});k.6y.7P(el);el.1G.1S.1H(\'aV\',u(){k(el.1G.aN,q).K(0).18.19=\'2E\'}).1H(\'8q\',u(){k(el.1G.aN,q).K(0).18.19=\'1n\'});k(1j).1H(\'3H\',u(e){D 1s=k.1a.44(e);D 5q=0;if(el.1G.51&&el.1G.51==\'b8\')D aQ=1s.x-el.1G.1M.x-(el.4b-el.1G.2F*el.1G.1S.1P())/2-el.1G.2F/2;P if(el.1G.51&&el.1G.51==\'2N\')D aQ=1s.x-el.1G.1M.x-el.4b+el.1G.2F*el.1G.1S.1P();P D aQ=1s.x-el.1G.1M.x;D dB=14.5Y(1s.y-el.1G.1M.y-el.63/2,2);el.1G.1S.1B(u(2I){46=14.dm(14.5Y(aQ-2I*el.1G.2F,2)+dB);46-=el.1G.2F/2;46=46<0?0:46;46=46>el.1G.7R?el.1G.7R:46;46=el.1G.7R-46;bC=el.1G.6q*46/el.1G.7R;q.18.Z=el.1G.2F+bC+\'S\';q.18.O=el.1G.2F*2I+5q+\'S\';5q+=bC});k.6y.aJ(el,5q)})})},aJ:u(el,5q){if(el.1G.51)if(el.1G.51==\'b8\')el.1G.1Z.K(0).18.O=(el.4b-el.1G.2F*el.1G.1S.1P())/2-5q/2+\'S\';P if(el.1G.51==\'O\')el.1G.1Z.K(0).18.O=-5q/el.1G.1S.1P()+\'S\';P if(el.1G.51==\'2N\')el.1G.1Z.K(0).18.O=(el.4b-el.1G.2F*el.1G.1S.1P())-5q/2+\'S\';el.1G.1Z.K(0).18.Z=el.1G.2F*el.1G.1S.1P()+5q+\'S\'},7P:u(el){el.1G.1S.1B(u(2I){q.18.Z=el.1G.2F+\'S\';q.18.O=el.1G.2F*2I+\'S\'})}};k.fn.jD=k.6y.2s;k.1v={M:{2B:10,eV:\'1Q/jG.eF\',eT:\'<1U 2M="1Q/5P.eC" />\',eN:0.8,e3:\'jK ab\',e5:\'5d\',3V:8w},jI:I,jU:I,6r:U,9d:I,9e:I,ca:u(2l){if(!k.1v.9e||k.1v.9d)E;D 3O=2l.7F||2l.7A||-1;3m(3O){1e 35:if(k.1v.6r)k.1v.28(U,k(\'a[@4G=\'+k.1v.6r+\']:k7\').K(0));1r;1e 36:if(k.1v.6r)k.1v.28(U,k(\'a[@4G=\'+k.1v.6r+\']:k5\').K(0));1r;1e 37:1e 8:1e 33:1e 80:1e k8:D ar=k(\'#9a\');if(ar.K(0).52!=U){ar.K(0).52.1F(ar.K(0))}1r;1e 38:1r;1e 39:1e 34:1e 32:1e ka:1e 78:D aD=k(\'#9b\');if(aD.K(0).52!=U){aD.K(0).52.1F(aD.K(0))}1r;1e 40:1r;1e 27:k.1v.ah();1r}},7W:u(M){if(M)k.21(k.1v.M,M);if(1V.2l){k(\'2e\',1j).1H(\'6S\',k.1v.ca)}P{k(1j).1H(\'6S\',k.1v.ca)}k(\'a\').1B(u(){el=k(q);dQ=el.1p(\'4G\')||\'\';eA=el.1p(\'3f\')||\'\';eu=/\\.eC|\\.jY|\\.95|\\.eF|\\.jW/g;if(eA.5Z().bU(eu)!=U&&dQ.5Z().3F(\'eJ\')==0){el.1H(\'5G\',k.1v.28)}});if(k.3h.4I){3E=1j.3t(\'3E\');k(3E).1p({id:\'b6\',2M:\'ew:I;\',ez:\'bX\',ey:\'bX\'}).B({19:\'1n\',Y:\'1O\',Q:\'0\',O:\'0\',69:\'aw:ax.ay.c1(1J=0)\'});k(\'2e\').1R(3E)}8Q=1j.3t(\'26\');k(8Q).1p(\'id\',\'bk\').B({Y:\'1O\',19:\'1n\',Q:\'0\',O:\'0\',1J:0}).1R(1j.8F(\' \')).1H(\'5G\',k.1v.ah);6L=1j.3t(\'26\');k(6L).1p(\'id\',\'dZ\').B({4X:k.1v.M.2B+\'S\'}).1R(1j.8F(\' \'));bZ=1j.3t(\'26\');k(bZ).1p(\'id\',\'e1\').B({4X:k.1v.M.2B+\'S\',5M:k.1v.M.2B+\'S\'}).1R(1j.8F(\' \'));cc=1j.3t(\'a\');k(cc).1p({id:\'jh\',3f:\'#\'}).B({Y:\'1O\',2N:k.1v.M.2B+\'S\',Q:\'0\'}).1R(k.1v.M.eT).1H(\'5G\',k.1v.ah);7t=1j.3t(\'26\');k(7t).1p(\'id\',\'bh\').B({Y:\'2y\',b9:\'O\',6X:\'0 ao\',3B:1}).1R(6L).1R(bZ).1R(cc);2a=1j.3t(\'1U\');2a.2M=k.1v.M.eV;k(2a).1p(\'id\',\'ep\').B({Y:\'1O\'});4R=1j.3t(\'a\');k(4R).1p({id:\'9a\',3f:\'#\'}).B({Y:\'1O\',19:\'1n\',2Y:\'2O\',eQ:\'1n\'}).1R(1j.8F(\' \'));4Q=1j.3t(\'a\');k(4Q).1p({id:\'9b\',3f:\'#\'}).B({Y:\'1O\',2Y:\'2O\',eQ:\'1n\'}).1R(1j.8F(\' \'));1Z=1j.3t(\'26\');k(1Z).1p(\'id\',\'e0\').B({19:\'1n\',Y:\'2y\',2Y:\'2O\',b9:\'O\',6X:\'0 ao\',Q:\'0\',O:\'0\',3B:2}).1R([2a,4R,4Q]);6N=1j.3t(\'26\');k(6N).1p(\'id\',\'aq\').B({19:\'1n\',Y:\'1O\',2Y:\'2O\',Q:\'0\',O:\'0\',b9:\'b8\',7f:\'b7\',j7:\'0\'}).1R([1Z,7t]);k(\'2e\').1R(8Q).1R(6N)},28:u(e,C){el=C?k(C):k(q);at=el.1p(\'4G\');D 6P,4n,4R,4Q;if(at!=\'eJ\'){k.1v.6r=at;8N=k(\'a[@4G=\'+at+\']\');6P=8N.1P();4n=8N.b2(C?C:q);4R=8N.K(4n-1);4Q=8N.K(4n+1)}8H=el.1p(\'3f\');6L=el.1p(\'45\');3I=k.1a.6W();8Q=k(\'#bk\');if(!k.1v.9e){k.1v.9e=1b;if(k.3h.4I){k(\'#b6\').B(\'V\',14.3v(3I.ih,3I.h)+\'S\').B(\'Z\',14.3v(3I.iw,3I.w)+\'S\').22()}8Q.B(\'V\',14.3v(3I.ih,3I.h)+\'S\').B(\'Z\',14.3v(3I.iw,3I.w)+\'S\').22().eo(bw,k.1v.M.eN,u(){k.1v.bd(8H,6L,3I,6P,4n,4R,4Q)});k(\'#aq\').B(\'Z\',14.3v(3I.iw,3I.w)+\'S\')}P{k(\'#9a\').K(0).52=U;k(\'#9b\').K(0).52=U;k.1v.bd(8H,6L,3I,6P,4n,4R,4Q)}E I},bd:u(8H,jA,3I,6P,4n,4R,4Q){k(\'#bi\').aB();aC=k(\'#9a\');aC.2G();as=k(\'#9b\');as.2G();2a=k(\'#ep\');1Z=k(\'#e0\');6N=k(\'#aq\');7t=k(\'#bh\').B(\'3j\',\'2O\');k(\'#dZ\').3w(6L);k.1v.9d=1b;if(6P)k(\'#e1\').3w(k.1v.M.e3+\' \'+(4n+1)+\' \'+k.1v.M.e5+\' \'+6P);if(4R){aC.K(0).52=u(){q.5I();k.1v.28(U,4R);E I}}if(4Q){as.K(0).52=u(){q.5I();k.1v.28(U,4Q);E I}}2a.22();8E=k.1a.2p(1Z.K(0));5f=14.3v(8E.1D,2a.K(0).Z+k.1v.M.2B*2);5T=14.3v(8E.hb,2a.K(0).V+k.1v.M.2B*2);2a.B({O:(5f-2a.K(0).Z)/2+\'S\',Q:(5T-2a.K(0).V)/2+\'S\'});1Z.B({Z:5f+\'S\',V:5T+\'S\'}).22();e4=k.1a.bq();6N.B(\'Q\',3I.t+(e4.h/15)+\'S\');if(6N.B(\'19\')==\'1n\'){6N.22().7m(k.1v.M.3V)}6U=11 aH;k(6U).1p(\'id\',\'bi\').1H(\'jk\',u(){5f=6U.Z+k.1v.M.2B*2;5T=6U.V+k.1v.M.2B*2;2a.2G();1Z.5K({V:5T},8E.hb!=5T?k.1v.M.3V:1,u(){1Z.5K({Z:5f},8E.1D!=5f?k.1v.M.3V:1,u(){1Z.cA(6U);k(6U).B({Y:\'1O\',O:k.1v.M.2B+\'S\',Q:k.1v.M.2B+\'S\'}).7m(k.1v.M.3V,u(){dS=k.1a.2p(7t.K(0));if(4R){aC.B({O:k.1v.M.2B+\'S\',Q:k.1v.M.2B+\'S\',Z:5f/2-k.1v.M.2B*3+\'S\',V:5T-k.1v.M.2B*2+\'S\'}).22()}if(4Q){as.B({O:5f/2+k.1v.M.2B*2+\'S\',Q:k.1v.M.2B+\'S\',Z:5f/2-k.1v.M.2B*3+\'S\',V:5T-k.1v.M.2B*2+\'S\'}).22()}7t.B({Z:5f+\'S\',Q:-dS.hb+\'S\',3j:\'dR\'}).5K({Q:-1},k.1v.M.3V,u(){k.1v.9d=I})})})})});6U.2M=8H},ah:u(){k(\'#bi\').aB();k(\'#aq\').2G();k(\'#bh\').B(\'3j\',\'2O\');k(\'#bk\').eo(bw,0,u(){k(q).2G();if(k.3h.4I){k(\'#b6\').2G()}});k(\'#9a\').K(0).52=U;k(\'#9b\').K(0).52=U;k.1v.6r=U;k.1v.9e=I;k.1v.9d=I;E I}};k.2A={5E:[],eS:u(){q.5I();X=q.3e;id=k.1p(X,\'id\');if(k.2A.5E[id]!=U){1V.6c(k.2A.5E[id])}1z=X.L.3x+1;if(X.L.1Q.1h<1z){1z=1}1Q=k(\'1U\',X.L.5F);X.L.3x=1z;if(1Q.1P()>0){1Q.7k(X.L.3V,k.2A.8B)}},eG:u(){q.5I();X=q.3e;id=k.1p(X,\'id\');if(k.2A.5E[id]!=U){1V.6c(k.2A.5E[id])}1z=X.L.3x-1;1Q=k(\'1U\',X.L.5F);if(1z<1){1z=X.L.1Q.1h}X.L.3x=1z;if(1Q.1P()>0){1Q.7k(X.L.3V,k.2A.8B)}},2H:u(c){X=1j.cP(c);if(X.L.6w){1z=X.L.3x;7o(1z==X.L.3x){1z=1+T(14.6w()*X.L.1Q.1h)}}P{1z=X.L.3x+1;if(X.L.1Q.1h<1z){1z=1}}1Q=k(\'1U\',X.L.5F);X.L.3x=1z;if(1Q.1P()>0){1Q.7k(X.L.3V,k.2A.8B)}},go:u(o){D X;if(o&&o.1K==7n){if(o.2a){X=1j.cP(o.2a.X);6b=1V.kK.3f.7h("#");o.2a.6B=U;if(6b.1h==2){1z=T(6b[1]);22=6b[1].4v(1z,\'\');if(k.1p(X,\'id\')!=22){1z=1}}P{1z=1}}if(o.8A){o.8A.5I();X=o.8A.3e.3e;id=k.1p(X,\'id\');if(k.2A.5E[id]!=U){1V.6c(k.2A.5E[id])}6b=o.8A.3f.7h("#");1z=T(6b[1]);22=6b[1].4v(1z,\'\');if(k.1p(X,\'id\')!=22){1z=1}}if(X.L.1Q.1h<1z||1z<1){1z=1}X.L.3x=1z;5h=k.1a.2p(X);e8=k.1a.aj(X);e9=k.1a.6h(X);if(X.L.3s){X.L.3s.o.B(\'19\',\'1n\')}if(X.L.3r){X.L.3r.o.B(\'19\',\'1n\')}if(X.L.2a){y=T(e8.t)+T(e9.t);if(X.L.1T){if(X.L.1T.5z==\'Q\'){y+=X.L.1T.4q.hb}P{5h.h-=X.L.1T.4q.hb}}if(X.L.2w){if(X.L.2w&&X.L.2w.6s==\'Q\'){y+=X.L.2w.4q.hb}P{5h.h-=X.L.2w.4q.hb}}if(!X.L.cV){X.L.eg=o.2a?o.2a.V:(T(X.L.2a.B(\'V\'))||0);X.L.cV=o.2a?o.2a.Z:(T(X.L.2a.B(\'Z\'))||0)}X.L.2a.B(\'Q\',y+(5h.h-X.L.eg)/2+\'S\');X.L.2a.B(\'O\',(5h.1D-X.L.cV)/2+\'S\');X.L.2a.B(\'19\',\'2E\')}1Q=k(\'1U\',X.L.5F);if(1Q.1P()>0){1Q.7k(X.L.3V,k.2A.8B)}P{aP=k(\'a\',X.L.1T.o).K(1z-1);k(aP).2Z(X.L.1T.64);D 1U=11 aH();1U.X=k.1p(X,\'id\');1U.1z=1z-1;1U.2M=X.L.1Q[X.L.3x-1].2M;if(1U.23){1U.6B=U;k.2A.19.1F(1U)}P{1U.6B=k.2A.19}if(X.L.2w){X.L.2w.o.3w(X.L.1Q[1z-1].6v)}}}},8B:u(){X=q.3e.3e;X.L.5F.B(\'19\',\'1n\');if(X.L.1T.64){aP=k(\'a\',X.L.1T.o).4p(X.L.1T.64).K(X.L.3x-1);k(aP).2Z(X.L.1T.64)}D 1U=11 aH();1U.X=k.1p(X,\'id\');1U.1z=X.L.3x-1;1U.2M=X.L.1Q[X.L.3x-1].2M;if(1U.23){1U.6B=U;k.2A.19.1F(1U)}P{1U.6B=k.2A.19}if(X.L.2w){X.L.2w.o.3w(X.L.1Q[X.L.3x-1].6v)}},19:u(){X=1j.cP(q.X);if(X.L.3s){X.L.3s.o.B(\'19\',\'1n\')}if(X.L.3r){X.L.3r.o.B(\'19\',\'1n\')}5h=k.1a.2p(X);y=0;if(X.L.1T){if(X.L.1T.5z==\'Q\'){y+=X.L.1T.4q.hb}P{5h.h-=X.L.1T.4q.hb}}if(X.L.2w){if(X.L.2w&&X.L.2w.6s==\'Q\'){y+=X.L.2w.4q.hb}P{5h.h-=X.L.2w.4q.hb}}kD=k(\'.cz\',X);y=y+(5h.h-q.V)/2;x=(5h.1D-q.Z)/2;X.L.5F.B(\'Q\',y+\'S\').B(\'O\',x+\'S\').3w(\'<1U 2M="\'+q.2M+\'" />\');X.L.5F.7m(X.L.3V);3r=X.L.3x+1;if(3r>X.L.1Q.1h){3r=1}3s=X.L.3x-1;if(3s<1){3s=X.L.1Q.1h}X.L.3r.o.B(\'19\',\'2E\').B(\'Q\',y+\'S\').B(\'O\',x+2*q.Z/3+\'S\').B(\'Z\',q.Z/3+\'S\').B(\'V\',q.V+\'S\').1p(\'45\',X.L.1Q[3r-1].6v);X.L.3r.o.K(0).3f=\'#\'+3r+k.1p(X,\'id\');X.L.3s.o.B(\'19\',\'2E\').B(\'Q\',y+\'S\').B(\'O\',x+\'S\').B(\'Z\',q.Z/3+\'S\').B(\'V\',q.V+\'S\').1p(\'45\',X.L.1Q[3s-1].6v);X.L.3s.o.K(0).3f=\'#\'+3s+k.1p(X,\'id\')},2s:u(o){if(!o||!o.1Z||k.2A.5E[o.1Z])E;D 1Z=k(\'#\'+o.1Z);D el=1Z.K(0);if(el.18.Y!=\'1O\'&&el.18.Y!=\'2y\'){el.18.Y=\'2y\'}el.18.2Y=\'2O\';if(1Z.1P()==0)E;el.L={};el.L.1Q=o.1Q?o.1Q:[];el.L.6w=o.6w&&o.6w==1b||I;8b=el.dU(\'kA\');1Y(i=0;i<8b.1h;i++){7I=el.L.1Q.1h;el.L.1Q[7I]={2M:8b[i].2M,6v:8b[i].45||8b[i].kC||\'\'}}if(el.L.1Q.1h==0){E}el.L.4m=k.21(k.1a.2R(el),k.1a.2p(el));el.L.d5=k.1a.aj(el);el.L.cL=k.1a.6h(el);t=T(el.L.d5.t)+T(el.L.cL.t);b=T(el.L.d5.b)+T(el.L.cL.b);k(\'1U\',el).aB();el.L.3V=o.3V?o.3V:er;if(o.5z||o.88||o.64){el.L.1T={};1Z.1R(\'<26 6A="eL"></26>\');el.L.1T.o=k(\'.eL\',el);if(o.88){el.L.1T.88=o.88;el.L.1T.o.2Z(o.88)}if(o.64){el.L.1T.64=o.64}el.L.1T.o.B(\'Y\',\'1O\').B(\'Z\',el.L.4m.w+\'S\');if(o.5z&&o.5z==\'Q\'){el.L.1T.5z=\'Q\';el.L.1T.o.B(\'Q\',t+\'S\')}P{el.L.1T.5z=\'4l\';el.L.1T.o.B(\'4l\',b+\'S\')}el.L.1T.au=o.au?o.au:\' \';1Y(D i=0;i<el.L.1Q.1h;i++){7I=T(i)+1;el.L.1T.o.1R(\'<a 3f="#\'+7I+o.1Z+\'" 6A="ku" 45="\'+el.L.1Q[i].6v+\'">\'+7I+\'</a>\'+(7I!=el.L.1Q.1h?el.L.1T.au:\'\'))}k(\'a\',el.L.1T.o).1H(\'5G\',u(){k.2A.go({8A:q})});el.L.1T.4q=k.1a.2p(el.L.1T.o.K(0))}if(o.6s||o.8l){el.L.2w={};1Z.1R(\'<26 6A="eK">&7J;</26>\');el.L.2w.o=k(\'.eK\',el);if(o.8l){el.L.2w.8l=o.8l;el.L.2w.o.2Z(o.8l)}el.L.2w.o.B(\'Y\',\'1O\').B(\'Z\',el.L.4m.w+\'S\');if(o.6s&&o.6s==\'Q\'){el.L.2w.6s=\'Q\';el.L.2w.o.B(\'Q\',(el.L.1T&&el.L.1T.5z==\'Q\'?el.L.1T.4q.hb+t:t)+\'S\')}P{el.L.2w.6s=\'4l\';el.L.2w.o.B(\'4l\',(el.L.1T&&el.L.1T.5z==\'4l\'?el.L.1T.4q.hb+b:b)+\'S\')}el.L.2w.4q=k.1a.2p(el.L.2w.o.K(0))}if(o.az){el.L.3r={az:o.az};1Z.1R(\'<a 3f="#2\'+o.1Z+\'" 6A="eR">&7J;</a>\');el.L.3r.o=k(\'.eR\',el);el.L.3r.o.B(\'Y\',\'1O\').B(\'19\',\'1n\').B(\'2Y\',\'2O\').B(\'4w\',\'eB\').2Z(el.L.3r.az);el.L.3r.o.1H(\'5G\',k.2A.eS)}if(o.av){el.L.3s={av:o.av};1Z.1R(\'<a 3f="#0\'+o.1Z+\'" 6A="ev">&7J;</a>\');el.L.3s.o=k(\'.ev\',el);el.L.3s.o.B(\'Y\',\'1O\').B(\'19\',\'1n\').B(\'2Y\',\'2O\').B(\'4w\',\'eB\').2Z(el.L.3s.av);el.L.3s.o.1H(\'5G\',k.2A.eG)}1Z.cA(\'<26 6A="cz"></26>\');el.L.5F=k(\'.cz\',el);el.L.5F.B(\'Y\',\'1O\').B(\'Q\',\'3c\').B(\'O\',\'3c\').B(\'19\',\'1n\');if(o.2a){1Z.cA(\'<26 6A="eD" 18="19: 1n;"><1U 2M="\'+o.2a+\'" /></26>\');el.L.2a=k(\'.eD\',el);el.L.2a.B(\'Y\',\'1O\');D 1U=11 aH();1U.X=o.1Z;1U.2M=o.2a;if(1U.23){1U.6B=U;k.2A.go({2a:1U})}P{1U.6B=u(){k.2A.go({2a:q})}}}P{k.2A.go({1Z:el})}if(o.cB){do=T(o.cB)*aF}k.2A.5E[o.1Z]=o.cB?1V.6I(\'k.2A.2H(\\\'\'+o.1Z+\'\\\')\',do):U}};k.X=k.2A.2s;k.8e={cN:u(e){3O=e.7F||e.7A||-1;if(3O==9){if(1V.2l){1V.2l.cj=1b;1V.2l.ci=I}P{e.al();e.am()}if(q.aI){1j.6G.du().31="\\t";q.dv=u(){q.6D();q.dv=U}}P if(q.aU){28=q.5B;2X=q.dq;q.2v=q.2v.iL(0,28)+"\\t"+q.2v.hm(2X);q.aU(28+1,28+1);q.6D()}E I}},58:u(){E q.1B(u(){if(q.7D&&q.7D==1b){k(q).3p(\'7E\',k.8e.cN);q.7D=I}})},2s:u(){E q.1B(u(){if(q.4S==\'cQ\'&&(!q.7D||q.7D==I)){k(q).1H(\'7E\',k.8e.cN);q.7D=1b}})}};k.fn.21({hS:k.8e.2s,hP:k.8e.58});',62,1292,'||||||||||||||||||||jQuery||||||this||||function||||||dragCfg|css|elm|var|return|dragged|easing|speed|false|callback|get|ss|options|iAuto|left|else|top|iResize|px|parseInt|null|height|oldStyle|slideshow|position|width||new|iDrag||Math||||style|display|iUtil|true|helper|subject|case|autoCFG|resizeOptions|length|dropCfg|document|iEL|carouselCfg|duration|none|interfaceFX|attr|sizes|break|pointer|iSort|type|ImageBox|queue|iDrop|iAutoscroller|slide|resizeElement|each|oC|wb|newSizes|apply|fisheyeCfg|bind|delta|opacity|constructor|custom|pos|axis|absolute|size|images|append|items|slideslinks|img|window|firstNum|255|for|container||extend|show|complete|cont||div||start|elsToScroll|loader|100|oR||body|oldP|selectedItem|typeof|elem|accordionCfg|props|event|parseFloat|newPosition|containment|getSize|field|ny|build|iTooltip|selectHelper|value|slideCaption|nx|relative|tp|islideshow|border|Function|step|block|itemWidth|hide|timer|nr|limit|fractions|dequeue|src|right|hidden|direction|PI|getPosition|cursorAt|onChange|onShow|scrollTop|result|end|overflow|addClass|parentData|text|||||||||scr|className|0px|iSlider|parentNode|href|scrollLeft|browser|onHide|visibility|item|pre|switch|selectdrug|wrapper|unbind|newCoords|nextslide|prevslide|createElement|values|max|html|currentslide|handle|onSlide|margins|zIndex|wrs|min|iframe|indexOf|valueToAdd|mousemove|pageSize|zones|multipleSeparator|iExpander|curCSS|canvas|pressedKey|accept|resizeDirection|abs|onStop|diff|handlers|fadeDuration|highlighted|dhs|toggle|dragElem||times||test|getPointer|title|distance||so|vp|horizontally|offsetWidth|startLeft|out|transferEl|startTop|subjectValue|lastSuggestion|vertically|ghosting|DropOutDirectiont|bottom|oP|iteration|lastValue|removeClass|dimm|slideCfg|ifxFirstDisplay|currentPointer|clear|replace|fontSize|onDrag|down|percent|onStart|nWidth|color|ratio|elToScroll|fieldData|rel|context|msie|documentElement|params|to|shs|dragHandle|fxCheckTag|els|nextImage|prevImage|tagName|tooltipCFG|up|helperclass|endLeft|paddingLeft|currentStyle|borderTopWidth||halign|onclick|delay|nodeEl||chunks|endTop|destroy|dragmoveBy|borderLeftWidth|mousedown|nHeight|from|dhe|containerW|string|slidePos|si|collected|marginLeft|overzone|marginBottom|getAttribute|marginTop|marginRight|toAdd|zonex|clonedEl|empty|newStyles|cos|hight|toWrite|zoney|linksPosition|OpenClose|selectionStart|clientScroll|cnt|slideshows|holder|click|restoreStyle|blur|onDragModifier|animate|elS|paddingBottom|toDrag|sw|close|post|animationHandler|styles|containerH|prop|sortCfg|BlindDirection|nmp|pow|toLowerCase||mouseup|oldVisibility|offsetHeight|activeLinkClass|old|paddingTop|grid|point|filter|onSelect|url|clearInterval|fxh|currentPanel|elementData|borderBottomWidth|getBorder|cur|paddingRight|borderRightWidth|puff|snapDistance|tolerance|revert|hpc|maxWidth|currentRel|captionPosition|Expander|orig|caption|random|3000|iFisheye|Scale|class|onload|wr|focus|restore|128|selection|parseColor|setInterval|current|selRange|captionText|itemHeight|outerContainer|newDimensions|totalImages|getHeight|reflections|keyup|sliders|imageEl|getWidth|getScroll|margin|Draggable|onHighlight|selectClass|getTime|Date|oldStyleAttr|onClick||scrollIntoView|firstChild||data|ActiveXObject|Array|focused|accordionPos|open|backgroundColor|zoneh|split|oD|zonew|fadeOut|user|fadeIn|Object|while|minLeft|nw|startDrag|minTop|captionEl|newTop|newLeft|frameClass|increment|F0|0x|keyCode|139|toInteger|hasTabsEnabled|keydown|charCode|cssRules|rule|indic|nbsp|rgb|np|oldDisplay|opera|radiusY|positionItems|onOut|proximity|efx|onHover|hash|changed|init|sc|inFrontOf|selectKeyHelper||selectCurrent|getSizeLite|1px|contBorders||ts|parentEl|linksClass|parentBorders|yproc|imgs|nRx|fnc|iTTabs|panels|insideParent|fontWeight|object|nRy|clientWidth|captionClass|namedColors|offsetLeft|serialize|cssSides|mouseout|activeClass|targetEl|offsetTop|expand|stop|400|pr|directionIncrement|clientHeight|link|showImage|move|sx|containerSize|createTextNode|jEl|imageSrc|ser|newPos|selectedone|minHeight|maxHeight|gallery|dir|applyOn|overlay|sh|content|maxRight|maxBottom|tooltipHelper|count|onselectstop|onselect|select|li|reflectionSize|padding|selectBorders|cursor|png|parent|finishedPre|sin|xproc|ImageBoxPrevImage|ImageBoxNextImage|bounceout|animationInProgress|opened|sy|destroyWrapper|buildWrapper|diffWidth|diffHeight|iIndex|diffX|diffY|prot|hidehelper|dEs|isDraggable|onDrop|minWidth|side|isDroppable|onActivate|dragstop|startTime|211|192|nodeName|self|oldPosition|exec|opt|getValues|styleSheets|sideEnd|borderColor|ne|handleEl|unit|DoFold|5625|oldTitle|SliderContainer|unfold|9999|ScrollTo|cssText|oldColor|alpha|2000|prev|selectKeyUp|os|selectKeyDown|selectcheck|dragEl|checkhover|DraggableDestroy|next|key|hoverclass|activeclass|sl|st|image||panelSelector|headerSelector|hoverClass|panelHeight|hideImage|headers|getPadding|iCarousel|preventDefault|stopPropagation|itemMinWidth|auto|getFieldValues|ImageBoxOuterContainer|prevEl|nextImageEl|linkRel|linksSeparator|prevslideClass|progid|DXImageTransform|Microsoft|nextslideClass|valToAdd|remove|prevImageEl|nextEl|childs|1000|default|Image|createTextRange|positionContainer|helperClass|minchars|source|itemsText|multiple|lnk|posx|autofill|reflexions|blind|setSelectionRange|mouseover|inCache|ul|protectRotation|maxRotation|gradient|setTimeout|index|elPosition|writeItems|String|ImageBoxIframe|transparent|center|textAlign|paddingRightSize|paddingTopSize|bounce|loadImage|borderLeftSize|borderBottomSize|borderRightSize|ImageBoxCaption|ImageBoxCurrentImage|moveDrag|ImageBoxOverlay|paddings|borders|idsa|firstStep|currentValue|getClient||stopDrag|borderTopSize|autocomplete|zoom|300|hidefocused|intersect|INPUT|inputWidth|fade|extraWidth|sortable|restricted|isSlider|tabindex|fitToContainer|snapToGrid|slider|prevTop|prevLeft|floats|getPositionLite|modifyContainer|getContainment|lastSi|SliderIteration|sliderEl|selectstop|match|linear|character|no|bouncein|captionImages|asin|Alpha|Selectserialize|mouse|initialPosition|measure|clearTimeout|helperSize|getMargins|tooltipURL|keyPressed|applyOnHover|closeEl|10000|parentPos|sliderSize|sliderPos|angle|returnValue|cancelBubble|spacer|oldBorder|pulse|169|entities|RegExp|Color|Pulsate||rotationSpeed|parseStyle|stopAnim|cssSidesEnd|shake|Shake|slideshowHolder|prepend|autoplay|floatVal|borderWidth|scroll|paddingY|pValue|letterSpacing|paddingX|paddingBottomSize|pause|oBor|clnt|doTab|autoSize|getElementById|TEXTAREA|Number|traverseDOM|func|draginit|loaderWidth|scrollHeight|paddingLeftSize|scrollWidth|oneIsSortable|innerWidth|innerHeight|shrink|windowSize|unselectable|oPad|dragmove|oldFloat|cssProps|colorCssProps|107|doScroll|addItem|SortableAddItem||DroppableDestroy|fxe||interval|after|insertBefore||sqrt|cloneNode|time|check|selectionEnd|offsetParent|Width|sortHelper|createRange|onblur|valign|||onout|224|posy|wid|isSortable|165|zindex|245|notColor|140|240|230|144|styleFloat|onhover|Droppable|emptyGIF|relAttr|visible|captionSize|dragstart|getElementsByTagName|listStyle|dragHelper|getHeightMinMax|onResize|ImageBoxCaptionText|ImageBoxContainer|ImageBoxCaptionImages||textImage|clientSize|textImageFrom|userSelect|onDragStop|slidePad|slideBor|highlight|shc|hlt|checkdrop|fit||loaderHeight||onDragStart|KhtmlUserSelect|remeasure|||on|fadeTo|ImageBoxLoader||500|||imageTypes|slideshowPrevslide|javascript|selectstopApply|scrolling|frameborder|hrefAttr|30px|jpg|slideshowLoader|selectedclass|gif|goprev|oldOverflow|isFunction|imagebox|slideshowCaption|slideshowLinks|directions|overlayOpacity|se|trim|textDecoration|slideshowNextSlide|gonext|closeHTML|selectcheckApply|loaderSRC|selectstart|isSelectable|360|radiusX|set|grow|hoverItem|SlideOutUp|leftUnit|boxModel|interfaceColorFX|fakeAccordionClass|togglever|elType|iBounce|paddingBottomUnit|wordSpacing|150|mousex|iAccordion|fontFamily|togglehor|fontUnit|filteredPosition|paddingTopUnit|parte|itemZIndex||selRange2|finish|paddingLeftUnit|moveStart|paddingRightUnit|xml|itransferTo|borderLeftUnit|borderTopUnit||update|BlindUp||borderRightUnit|checkCache|getSelectionStart|borderBottomUnit|tooltipTitle|easeout|expanderHelper|fontStyle|fontStretch|containerMaxx|yfrac|topUnit|containerMaxy|clickItem|BlindDown|off|inputValue|fracH|fontVariant|rgba|maxy|maxx|keypress|fracW|xfrac|horizontal|addColorStop|htmlEntities|vertical|dragmoveByKey|autocompleteIframe|onslide|fold|parts|SlideInUp|getContext|protect|autocompleteHelper|olive|orange|pink|white|maroon|navy|magenta|203|193|rotationTimer|lightpink||red|lightyellow|182|lime||purple|silver|Top|||inset|outset|SlideOutRight|SlideInRight|ridge|groove|dashed|solid|double|SlideToggleLeft|SlideOutLeft|SlideOutDown|SlideInDown|SlideToggleUp|scrollTo|selectorText|rules|borderStyle|SlideInLeft|SlideToggleDown|dotted|SlideToggleRight|textIndent|borderBottomColor|borderLeftColor|borderRightColor|outlineWidth|outlineOffset|TransferTo|transferHelper|lineHeight|borderTopColor|outlineColor|hover|Accordion|isNaN|Carousel|stopAll|||Right|Bottom|Left|yellow|215|option|frameset|optgroup|meta|substr|frame|script|col|colgroup||th|header|removeChild|float|ol|finishx|fxWrapper|starty|table|form|w_|input|textarea|button|tfoot|thead|pageX|drawImage|clientX|pageY|clientY|globalCompositeOperation|destination|DisableTabs|createLinearGradient|fillStyle|EnableTabs|scale|nextSibling|prototype|tr|td|tbody|AlphaImageLoader|fixPNG|purgeEvents|translate|centerEl|save|cssFloat|startx|fuchsia|148|gold|green|indigo|darkviolet||122||204||darkred|darksalmon|233|130|khaki||lightcyan|lightgreen|238|fillRect||fill|216|appVersion||WebKit|lightblue|173|153|darkorchid|black|220|blue|brown|cyan|beige|azure|finishOpacity|appendChild|substring|aqua|darkblue|darkcyan|darkmagenta|darkolivegreen|navigator|darkorange|183|189|darkgrey|flipv|darkgreen|darkkhaki|lightgrey|amp|BlindToggleHorizontally|BlindRight|BlindLeft|ResizableDestroy|Resizable|120|lineHeigt|collapse|BlindToggleVertically|moveEnd|elasticin|bounceboth|984375|elasticout|elasticboth|duplicate|ImageBoxClose|DropOutDown|DropInDown|load|DropToggleRight|DropInRight|Fold|UnFold|Shrink|Grow|FoldToggle|DropOutRight|DropToggleLeft|DropInUp|DropOutUp|DropToggleDown|DropToggleUp|DropOutLeft|DropInLeft|captiontext|625|9375|Fisheye|30001|list|loading|fix|imageLoaded|childNodes|Showing|onchange|30002|SortSerialize|Autocomplete|200|SortableDestroy|Sortable|resize|wh|firstResize|Slider|bmp|100000|jpeg|Selectable|ToolTip|easeboth|easein|nodeValue|http|first|before|last|112|SliderSetValues|110|SliderGetValues|array|Bounce|Autoexpand|onselectstart|CloseVertically|mozUserSelect|fromHandler|ondragstart|MozUserSelect|number|pW|toUpperCase|khtml|find|CloseHorizontally|SwitchHorizontally|ScrollToAnchors|Puff|slideshowLink|password|quot|OpenHorizontally|OpenVertically|SwitchVertically|IMG|lt|alt|par|moz|success|POST|recallDroppables|param|pt|location|Highlight|100000000|ajax|ondrop|name'.split('|'),0,{}))
diff --git a/docs/_static/jquery.js b/docs/_static/jquery.js
new file mode 100644
index 0000000..3747929
--- /dev/null
+++ b/docs/_static/jquery.js
@@ -0,0 +1,32 @@
+/*
+ * jQuery 1.2.3 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
+ * $Rev: 4663 $
+ */
+(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else
+selector=[];}}else
+return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
+return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
+return(this[0].value||"").replace(/\r/g,"");}return undefined;}return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){if(target===options[name])continue;if(deep&&options[name]&&typeof options[name]=="object"&&target[name]&&!options[name].nodeType)target[name]=jQuery.extend(target[name],options[name]);else if(options[name]!=undefined)target[name]=options[name];}return target;};var expando="jQuery"+(new Date()).getTime(),uuid=0,windowData={};var exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i;jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/function/i.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
+script.appendChild(document.createTextNode(data));head.appendChild(script);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!=undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){if(args){if(object.length==undefined){for(var name in object)if(callback.apply(object[name],args)===false)break;}else
+for(var i=0,length=object.length;i<length;i++)if(callback.apply(object[i],args)===false)break;}else{if(object.length==undefined){for(var name in object)if(callback.call(object[name],name,object[name])===false)break;}else
+for(var i=0,length=object.length,value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(getComputedStyle&&getComputedStyle.getPropertyValue(name))||"";for(var i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var style=elem.style.left,runtimeStyle=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=ret||0;ret=elem.style.pixelLeft+"px";elem.style.left=style;elem.runtimeStyle.left=runtimeStyle;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem=elem.toString();if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
+ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i<length;i++)ret.push(array[i]);else
+ret=array.slice(0);return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]==elem)return i;return-1;},merge:function(first,second){if(jQuery.browser.msie){for(var i=0;second[i];i++)if(second[i].nodeType!=8)first.push(second[i]);}else
+for(var i=0;second[i];i++)first.push(second[i]);return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv&&callback(elems[i],i)||inv&&!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!==null&&value!=undefined){if(value.constructor!=Array)value=[value];ret=ret.concat(value);}}return ret;}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,innerHTML:"innerHTML",className:"className",value:"value",disabled:"disabled",checked:"checked",readonly:"readOnly",selected:"selected",maxlength:"maxLength",selectedIndex:"selectedIndex",defaultValue:"defaultValue",tagName:"tagName",nodeName:"nodeName"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},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.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
+for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
+jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({load:function(url,params,callback){if(jQuery.isFunction(url))return this.bind("load",url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
+jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
+for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
+s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
+e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(!elem)return undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=(new Date()).getTime();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})(); \ No newline at end of file
diff --git a/docs/_static/minus.png b/docs/_static/minus.png
new file mode 100644
index 0000000..da1c562
--- /dev/null
+++ b/docs/_static/minus.png
Binary files differ
diff --git a/docs/_static/navigation.png b/docs/_static/navigation.png
new file mode 100644
index 0000000..1081dc1
--- /dev/null
+++ b/docs/_static/navigation.png
Binary files differ
diff --git a/docs/_static/plus.png b/docs/_static/plus.png
new file mode 100644
index 0000000..b3cb374
--- /dev/null
+++ b/docs/_static/plus.png
Binary files differ
diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css
new file mode 100644
index 0000000..a55a324
--- /dev/null
+++ b/docs/_static/pygments.css
@@ -0,0 +1,59 @@
+.c { color: #408090; font-style: italic } /* Comment */
+.err { border: 1px solid #FF0000 } /* Error */
+.k { color: #007020; font-weight: bold } /* Keyword */
+.o { color: #666666 } /* Operator */
+.cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.cp { color: #007020 } /* Comment.Preproc */
+.c1 { color: #408090; font-style: italic } /* Comment.Single */
+.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.gd { color: #A00000 } /* Generic.Deleted */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #FF0000 } /* Generic.Error */
+.gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.gi { color: #00A000 } /* Generic.Inserted */
+.go { color: #303030 } /* Generic.Output */
+.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.gt { color: #0040D0 } /* Generic.Traceback */
+.kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.kp { color: #007020 } /* Keyword.Pseudo */
+.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.kt { color: #902000 } /* Keyword.Type */
+.m { color: #208050 } /* Literal.Number */
+.s { color: #4070a0 } /* Literal.String */
+.na { color: #4070a0 } /* Name.Attribute */
+.nb { color: #007020 } /* Name.Builtin */
+.nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.no { color: #60add5 } /* Name.Constant */
+.nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.ne { color: #007020 } /* Name.Exception */
+.nf { color: #06287e } /* Name.Function */
+.nl { color: #002070; font-weight: bold } /* Name.Label */
+.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.nt { color: #062873; font-weight: bold } /* Name.Tag */
+.nv { color: #bb60d5 } /* Name.Variable */
+.ow { color: #007020; font-weight: bold } /* Operator.Word */
+.w { color: #bbbbbb } /* Text.Whitespace */
+.mf { color: #208050 } /* Literal.Number.Float */
+.mh { color: #208050 } /* Literal.Number.Hex */
+.mi { color: #208050 } /* Literal.Number.Integer */
+.mo { color: #208050 } /* Literal.Number.Oct */
+.sb { color: #4070a0 } /* Literal.String.Backtick */
+.sc { color: #4070a0 } /* Literal.String.Char */
+.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.s2 { color: #4070a0 } /* Literal.String.Double */
+.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.sh { color: #4070a0 } /* Literal.String.Heredoc */
+.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.sx { color: #c65d09 } /* Literal.String.Other */
+.sr { color: #235388 } /* Literal.String.Regex */
+.s1 { color: #4070a0 } /* Literal.String.Single */
+.ss { color: #517918 } /* Literal.String.Symbol */
+.bp { color: #007020 } /* Name.Builtin.Pseudo */
+.vc { color: #bb60d5 } /* Name.Variable.Class */
+.vg { color: #bb60d5 } /* Name.Variable.Global */
+.vi { color: #bb60d5 } /* Name.Variable.Instance */
+.il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file
diff --git a/docs/_static/rightsidebar.css b/docs/_static/rightsidebar.css
new file mode 100644
index 0000000..bc604a8
--- /dev/null
+++ b/docs/_static/rightsidebar.css
@@ -0,0 +1,16 @@
+/**
+ * Sphinx Doc Design -- Right Side Bar Overrides
+ */
+
+
+div.sphinxsidebar {
+ float: right;
+}
+
+div.bodywrapper {
+ margin: 0 230px 0 0;
+}
+
+div.inlinecomments {
+ right: 250px;
+}
diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js
new file mode 100644
index 0000000..5fed111
--- /dev/null
+++ b/docs/_static/searchtools.js
@@ -0,0 +1,404 @@
+/**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+jQuery.makeSearchSummary = function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1) {
+ start = i;
+ }
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlight');
+ });
+ return rv;
+}
+
+/**
+ * Porter Stemmer
+ */
+var PorterStemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3) {
+ return w;
+ }
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w)) {
+ w = w.replace(re,"$1$2");
+ }
+ else if (re2.test(w)) {
+ w = w.replace(re2,"$1$2");
+ }
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w)) {
+ w = w + "e";
+ }
+ else if (re3.test(w)) {
+ re = /.$/; w = w.replace(re,"");
+ }
+ else if (re4.test(w)) {
+ w = w + "e";
+ }
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem)) { w = stem + "i"; }
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem)) {
+ w = stem;
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+ return w;
+ }
+}
+
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[@name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ /**
+ * perform a search for something
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ var out = $('#search-results');
+ var title = $('<h2>Searching</h2>').appendTo(out);
+ var dots = $('<span></span>').appendTo(title);
+ var status = $('<p style="display: none"></p>').appendTo(out);
+ var output = $('<ul class="search"/>').appendTo(out);
+
+ // spawn a background runner for updating the dots
+ // until the search has finished
+ var pulseStatus = 0;
+ function pulse() {
+ pulseStatus = (pulseStatus + 1) % 4;
+ var dotString = '';
+ for (var i = 0; i < pulseStatus; i++) {
+ dotString += '.';
+ }
+ dots.text(dotString);
+ if (pulseStatus > -1) {
+ window.setTimeout(pulse, 500);
+ }
+ };
+ pulse();
+
+ // stem the searchwords and add them to the
+ // correct list
+ var stemmer = new PorterStemmer();
+ var searchwords = [];
+ var excluded = [];
+ var hlwords = [];
+ var tmp = query.split(/\s+/);
+ for (var i = 0; i < tmp.length; i++) {
+ // stem the word
+ var word = stemmer.stemWord(tmp[i]).toLowerCase();
+ // select the correct list
+ if (word[0] == '-') {
+ var toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ var toAppend = searchwords;
+ hlwords.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$.contains(toAppend, word)) {
+ toAppend.push(word);
+ }
+ };
+ var highlightstring = '?highlight=' + $.urlencode(hlwords.join(" "));
+
+ console.debug('SEARCH: searching for:');
+ console.info('required: ', searchwords);
+ console.info('excluded: ', excluded);
+
+ // fetch searchindex and perform search
+ $.getJSON('searchindex.json', function(data) {
+
+ // prepare search
+ var filenames = data[0];
+ var titles = data[1]
+ var words = data[2];
+ var fileMap = {};
+ var files = null;
+
+ // perform the search on the required words
+ for (var i = 0; i < searchwords.length; i++) {
+ var word = searchwords[i];
+ // no match but word was a required one
+ if ((files = words[word]) == null) {
+ break;
+ }
+ // create the mapping
+ for (var j = 0; j < files.length; j++) {
+ var file = files[j];
+ if (file in fileMap) {
+ fileMap[file].push(word);
+ }
+ else {
+ fileMap[file] = [word];
+ }
+ }
+ }
+
+ // now check if the files are in the correct
+ // areas and if the don't contain excluded words
+ var results = [];
+ for (var file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchwords.length) {
+ continue;
+ }
+ // ensure that none of the excluded words is in the
+ // search result.
+ for (var i = 0; i < excluded.length; i++) {
+ if ($.contains(words[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it
+ // to the result list
+ if (valid) {
+ results.push([filenames[file], titles[file]]);
+ }
+ }
+
+ // delete unused variables in order to not waste
+ // memory until list is retrieved completely
+ delete filenames, titles, words, data;
+
+ // now sort the results by title
+ results.sort(function(a, b) {
+ var left = a[1].toLowerCase();
+ var right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ });
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ listItem.append($('<a/>').attr(
+ 'href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring).html(item[1]));
+ $.get('_sources/' + item[0] + '.txt', function(data) {
+ listItem.append($.makeSearchSummary(data, searchwords, hlwords));
+ output.append(listItem);
+ listItem.slideDown(10, function() {
+ displayNextItem();
+ });
+ });
+ }
+ // search finished, update title and status message
+ else {
+ pulseStatus = -1;
+ title.text('Search Results');
+ if (!resultCount) {
+ status.text('Your search did not match any documents. ' +
+ 'Please make sure that all words are spelled ' +
+ 'correctly and that you\'ve selected enough ' +
+ 'categories.');
+ }
+ else {
+ status.text('Search finished, found ' + resultCount +
+ ' page' + (resultCount != 1 ? 's' : '') +
+ ' matching the search query.');
+ }
+ status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ });
+ }
+
+}
+
+$(document).ready(function() {
+ Search.init();
+ });
diff --git a/docs/_static/sphinxdoc.css b/docs/_static/sphinxdoc.css
new file mode 100644
index 0000000..2c63178
--- /dev/null
+++ b/docs/_static/sphinxdoc.css
@@ -0,0 +1,504 @@
+/**
+ * Alternate Sphinx design
+ * Originally created by Armin Ronacher for Werkzeug, adapted by Georg Brandl.
+ */
+
+body {
+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif;
+ font-size: 14px;
+ letter-spacing: -0.01em;
+ line-height: 150%;
+ text-align: center;
+ /*background-color: #AFC1C4; */
+ background-color: #BFD1D4;
+ color: black;
+ padding: 0;
+ border: 1px solid #aaa;
+
+ margin: 0px 80px 0px 80px;
+ min-width: 740px;
+}
+
+a {
+ color: #CA7900;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #2491CF;
+}
+
+pre {
+ font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+ font-size: 0.95em;
+ letter-spacing: 0.015em;
+ padding: 0.5em;
+ border: 1px solid #ccc;
+ background-color: #f8f8f8;
+}
+
+td.linenos pre {
+ padding: 0.5em 0;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+cite, code, tt {
+ font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+ font-size: 0.95em;
+ letter-spacing: 0.01em;
+}
+
+hr {
+ border: 1px solid #abc;
+ margin: 2em;
+}
+
+tt {
+ background-color: #f2f2f2;
+ border-bottom: 1px solid #ddd;
+ color: #333;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+ border: 0;
+}
+
+tt.descclassname {
+ background-color: transparent;
+ border: 0;
+}
+
+tt.xref {
+ background-color: transparent;
+ font-weight: bold;
+ border: 0;
+}
+
+a tt {
+ background-color: transparent;
+ font-weight: bold;
+ border: 0;
+ color: #CA7900;
+}
+
+a tt:hover {
+ color: #2491CF;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+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;
+}
+
+.refcount {
+ color: #060;
+}
+
+dt:target,
+.highlight {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+pre {
+ line-height: 120%;
+}
+
+pre a {
+ color: inherit;
+ text-decoration: underline;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+div.document {
+ background-color: white;
+ text-align: left;
+ background-image: url(contents.png);
+ background-repeat: repeat-x;
+}
+
+/*
+div.documentwrapper {
+ width: 100%;
+}
+*/
+
+div.clearer {
+ clear: both;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ background-image: url(navigation.png);
+ height: 2em;
+ list-style: none;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 0;
+ padding-left: 10px;
+}
+
+div.related ul li {
+ margin: 0;
+ padding: 0;
+ height: 2em;
+ float: left;
+}
+
+div.related ul li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+div.related ul li a {
+ margin: 0;
+ padding: 0 5px 0 5px;
+ line-height: 1.75em;
+ color: #EE9816;
+}
+
+div.related ul li a:hover {
+ color: #3CA8E7;
+}
+
+div.body {
+ margin: 0;
+ padding: 0.5em 20px 20px 20px;
+}
+
+div.bodywrapper {
+ margin: 0 240px 0 0;
+ border-right: 1px solid #ccc;
+}
+
+div.body a {
+ text-decoration: underline;
+}
+
+div.sphinxsidebar {
+ margin: 0;
+ padding: 0.5em 15px 15px 0;
+ width: 210px;
+ float: right;
+ text-align: left;
+/* margin-left: -100%; */
+}
+
+div.sphinxsidebar h4, div.sphinxsidebar h3 {
+ margin: 1em 0 0.5em 0;
+ font-size: 0.9em;
+ padding: 0.1em 0 0.1em 0.5em;
+ color: white;
+ border: 1px solid #86989B;
+ background-color: #AFC1C4;
+}
+
+div.sphinxsidebar ul {
+ padding-left: 1.5em;
+ margin-top: 7px;
+ list-style: none;
+ padding: 0;
+ line-height: 130%;
+}
+
+div.sphinxsidebar ul ul {
+ list-style: square;
+ margin-left: 20px;
+}
+
+p {
+ margin: 0.8em 0 0.5em 0;
+}
+
+p.rubric {
+ font-weight: bold;
+}
+
+h1 {
+ margin: 0;
+ padding: 0.7em 0 0.3em 0;
+ font-size: 1.5em;
+ color: #11557C;
+}
+
+h2 {
+ margin: 1.3em 0 0.2em 0;
+ font-size: 1.35em;
+ padding: 0;
+}
+
+h3 {
+ margin: 1em 0 -0.3em 0;
+ font-size: 1.2em;
+}
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+ color: black!important;
+}
+
+h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
+ display: none;
+ margin: 0 0 0 0.3em;
+ padding: 0 0.2em 0 0.2em;
+ color: #aaa!important;
+}
+
+h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
+h5:hover a.anchor, h6:hover a.anchor {
+ display: inline;
+}
+
+h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
+h5 a.anchor:hover, h6 a.anchor:hover {
+ color: #777;
+ background-color: #eee;
+}
+
+table {
+ border-collapse: collapse;
+ margin: 0 -0.5em 0 -0.5em;
+}
+
+table td, table th {
+ padding: 0.2em 0.5em 0.2em 0.5em;
+}
+
+div.footer {
+ background-color: #E3EFF1;
+ color: #86989B;
+ padding: 3px 8px 3px 0;
+ clear: both;
+ font-size: 0.8em;
+ text-align: right;
+}
+
+div.footer a {
+ color: #86989B;
+ text-decoration: underline;
+}
+
+div.pagination {
+ margin-top: 2em;
+ padding-top: 0.5em;
+ border-top: 1px solid black;
+ text-align: center;
+}
+
+div.sphinxsidebar ul.toc {
+ margin: 1em 0 1em 0;
+ padding: 0 0 0 0.5em;
+ list-style: none;
+}
+
+div.sphinxsidebar ul.toc li {
+ margin: 0.5em 0 0.5em 0;
+ font-size: 0.9em;
+ line-height: 130%;
+}
+
+div.sphinxsidebar ul.toc li p {
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar ul.toc ul {
+ margin: 0.2em 0 0.2em 0;
+ padding: 0 0 0 1.8em;
+}
+
+div.sphinxsidebar ul.toc ul li {
+ padding: 0;
+}
+
+div.admonition, div.warning {
+ font-size: 0.9em;
+ margin: 1em 0 0 0;
+ border: 1px solid #86989B;
+ background-color: #f7f7f7;
+}
+
+div.admonition p, div.warning p {
+ margin: 0.5em 1em 0.5em 1em;
+ padding: 0;
+}
+
+div.admonition pre, div.warning pre {
+ margin: 0.4em 1em 0.4em 1em;
+}
+
+div.admonition p.admonition-title,
+div.warning p.admonition-title {
+ margin: 0;
+ padding: 0.1em 0 0.1em 0.5em;
+ color: white;
+ border-bottom: 1px solid #86989B;
+ font-weight: bold;
+ background-color: #AFC1C4;
+}
+
+div.warning {
+ border: 1px solid #940000;
+}
+
+div.warning p.admonition-title {
+ background-color: #CF0000;
+ border-bottom-color: #940000;
+}
+
+div.admonition ul, div.admonition ol,
+div.warning ul, div.warning ol {
+ margin: 0.1em 0.5em 0.5em 3em;
+ padding: 0;
+}
+
+div.versioninfo {
+ margin: 1em 0 0 0;
+ border: 1px solid #ccc;
+ background-color: #DDEAF0;
+ padding: 8px;
+ line-height: 1.3em;
+ font-size: 0.9em;
+}
+
+
+a.headerlink {
+ color: #c60f0f!important;
+ font-size: 1em;
+ margin-left: 6px;
+ padding: 0 4px 0 4px;
+ text-decoration: none!important;
+ 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 {
+ visibility: visible;
+}
+
+a.headerlink:hover {
+ background-color: #ccc;
+ color: white!important;
+}
+
+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;
+}
+
+form.pfform {
+ margin: 10px 0 20px 0;
+}
+
+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%;
+}
+
+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;
+}
diff --git a/docs/_static/stickysidebar.css b/docs/_static/stickysidebar.css
new file mode 100644
index 0000000..dfc99c7
--- /dev/null
+++ b/docs/_static/stickysidebar.css
@@ -0,0 +1,19 @@
+/**
+ * Sphinx Doc Design -- Sticky sidebar Overrides
+ */
+
+div.sphinxsidebar {
+ top: 30px;
+ left: 0px;
+ position: fixed;
+ margin: 0;
+ float: none;
+}
+
+div.related {
+ position: fixed;
+}
+
+div.documentwrapper {
+ margin-top: 30px;
+}
diff --git a/docs/_static/traditional.css b/docs/_static/traditional.css
new file mode 100644
index 0000000..8c224c0
--- /dev/null
+++ b/docs/_static/traditional.css
@@ -0,0 +1,700 @@
+/**
+ * Sphinx Doc Design -- traditional python.org style
+ */
+
+body {
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+/* :::: LAYOUT :::: */
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 230px 0 0;
+}
+
+div.body {
+ background-color: white;
+ padding: 0 20px 30px 20px;
+}
+
+div.sphinxsidebarwrapper {
+ border: 1px solid #99ccff;
+ padding: 10px;
+ margin: 10px 15px 10px 0;
+}
+
+div.sphinxsidebar {
+ float: right;
+ margin-left: -100%;
+ width: 230px;
+}
+
+div.clearer {
+ clear: both;
+}
+
+div.footer {
+ clear: both;
+ width: 100%;
+ background-color: #99ccff;
+ padding: 9px 0 9px 0;
+ text-align: center;
+}
+
+div.related {
+ background-color: #99ccff;
+ color: #333;
+ width: 100%;
+ height: 30px;
+ line-height: 30px;
+ border-bottom: 5px solid white;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+ font-weight: bold;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* ::: SIDEBAR :::: */
+div.sphinxsidebar h3 {
+ margin: 0;
+}
+
+div.sphinxsidebar h4 {
+ margin: 5px 0 0 0;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ margin-left: 15px;
+ padding: 0;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+
+/* :::: SEARCH :::: */
+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;
+}
+
+/* :::: COMMON FORM STYLES :::: */
+
+div.actions {
+ border-top: 1px solid #aaa;
+ background-color: #ddd;
+ margin: 10px 0 0 -20px;
+ padding: 5px 0 5px 20px;
+}
+
+form dl {
+ color: #333;
+}
+
+form dt {
+ clear: both;
+ float: left;
+ min-width: 110px;
+ margin-right: 10px;
+ padding-top: 2px;
+}
+
+input#homepage {
+ display: none;
+}
+
+div.error {
+ margin: 5px 20px 0 0;
+ padding: 5px;
+ border: 1px solid #d00;
+ /*border: 2px solid #05171e;
+ background-color: #092835;
+ color: white;*/
+ font-weight: bold;
+}
+
+/* :::: INLINE COMMENTS :::: */
+
+div.inlinecommentswrapper {
+ float: right;
+ max-width: 40%;
+}
+
+div.commentmarker {
+ float: right;
+ background-image: url(style/comment.png);
+ background-repeat: no-repeat;
+ width: 25px;
+ height: 25px;
+ text-align: center;
+ padding-top: 3px;
+}
+
+div.nocommentmarker {
+ float: right;
+ background-image: url(style/nocomment.png);
+ background-repeat: no-repeat;
+ width: 25px;
+ height: 25px;
+}
+
+div.inlinecomments {
+ margin-left: 10px;
+ margin-bottom: 5px;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ padding: 5px;
+}
+
+div.inlinecomment {
+ border-top: 1px solid #ccc;
+ padding-top: 5px;
+ margin-top: 5px;
+}
+
+.inlinecomments p {
+ margin: 5px 0 5px 0;
+}
+
+.inlinecomments .head {
+ font-weight: bold;
+}
+
+.inlinecomments .meta {
+ font-style: italic;
+}
+
+
+/* :::: COMMENTS :::: */
+
+div#comments h3 {
+ border-top: 1px solid #aaa;
+ padding: 5px 20px 5px 20px;
+ margin: 20px -20px 20px -20px;
+ background-color: #ddd;
+}
+
+/*
+div#comments {
+ background-color: #ccc;
+ margin: 40px -20px -30px -20px;
+ padding: 0 0 1px 0;
+}
+
+div#comments h4 {
+ margin: 30px 0 20px 0;
+ background-color: #aaa;
+ border-bottom: 1px solid #09232e;
+ color: #333;
+}
+
+div#comments form {
+ display: block;
+ margin: 0 0 0 20px;
+}
+
+div#comments textarea {
+ width: 98%;
+ height: 160px;
+}
+
+div#comments div.help {
+ margin: 20px 20px 10px 0;
+ background-color: #ccc;
+ color: #333;
+}
+
+div#comments div.help p {
+ margin: 0;
+ padding: 0 0 10px 0;
+}
+
+div#comments input, div#comments textarea {
+ font-family: 'Bitstream Vera Sans', 'Arial', sans-serif;
+ font-size: 13px;
+ color: black;
+ background-color: #aaa;
+ border: 1px solid #092835;
+}
+
+div#comments input[type="reset"],
+div#comments input[type="submit"] {
+ cursor: pointer;
+ font-weight: bold;
+ padding: 2px;
+ margin: 5px 5px 5px 0;
+ background-color: #666;
+ color: white;
+}
+
+div#comments div.comment {
+ margin: 10px 10px 10px 20px;
+ padding: 10px;
+ border: 1px solid #0f3646;
+ background-color: #aaa;
+ color: #333;
+}
+
+div#comments div.comment p {
+ margin: 5px 0 5px 0;
+}
+
+div#comments div.comment p.meta {
+ font-style: italic;
+ color: #444;
+ text-align: right;
+ margin: -5px 0 -5px 0;
+}
+
+div#comments div.comment h4 {
+ margin: -10px -10px 5px -10px;
+ padding: 3px;
+ font-size: 15px;
+ background-color: #888;
+ color: white;
+ border: 0;
+}
+
+div#comments div.comment pre,
+div#comments div.comment tt {
+ background-color: #ddd;
+ color: #111;
+ border: none;
+}
+
+div#comments div.comment a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+div#comments div.comment blockquote {
+ margin: 10px;
+ padding: 10px;
+ border-left: 1px solid #0f3646;
+ /*border: 1px solid #0f3646;
+ background-color: #071c25;*/
+}
+
+div#comments em.important {
+ color: #d00;
+ font-weight: bold;
+ font-style: normal;
+}*/
+
+/* :::: SUGGEST CHANGES :::: */
+div#suggest-changes-box input, div#suggest-changes-box textarea {
+ border: 1px solid #ccc;
+ background-color: white;
+ color: black;
+}
+
+div#suggest-changes-box textarea {
+ width: 99%;
+ height: 400px;
+}
+
+
+/* :::: PREVIEW :::: */
+div.preview {
+ background-image: url(style/preview.png);
+ padding: 0 20px 20px 20px;
+ margin-bottom: 30px;
+}
+
+
+/* :::: INDEX PAGE :::: */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.5em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+}
+
+/* :::: GENINDEX STYLES :::: */
+
+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;
+}
+
+/* :::: GLOBAL STYLES :::: */
+
+p.subhead {
+ font-weight: bold;
+ margin-top: 20px;
+}
+
+a:link:active { color: #ff0000; }
+a:link:hover { background-color: #bbeeff; }
+a:visited:hover { background-color: #bbeeff; }
+a:visited { color: #551a8b; }
+a:link { color: #0000bb; }
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: avantgarde, sans-serif;
+ font-weight: bold;
+}
+
+div.body h1 { font-size: 180%; }
+div.body h2 { font-size: 150%; }
+div.body h3 { font-size: 120%; }
+div.body h4 { font-size: 120%; }
+
+a.headerlink,
+a.headerlink,
+a.headerlink,
+a.headerlink,
+a.headerlink,
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+ visibility: hidden;
+}
+
+*:hover > a.headerlink,
+*:hover > a.headerlink,
+*:hover > a.headerlink,
+*:hover > a.headerlink,
+*:hover > a.headerlink,
+*:hover > a.headerlink {
+ visibility: visible;
+}
+
+a.headerlink:hover,
+a.headerlink:hover,
+a.headerlink:hover,
+a.headerlink:hover,
+a.headerlink:hover,
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ text-align: justify;
+}
+
+div.body td {
+ text-align: left;
+}
+
+ul.fakelist {
+ list-style: none;
+ margin: 10px 0 10px 20px;
+ padding: 0;
+}
+
+/* "Footnotes" heading */
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+/* "Topics" */
+
+div.topic {
+ background-color: #eee;
+ border: 1px solid #ccc;
+ padding: 0 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 dd {
+ margin-bottom: 10px;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+div.admonition p {
+ display: inline;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+table.docutils {
+ border: 0;
+}
+
+table.docutils td, table.docutils th {
+ padding: 0 8px 2px 0;
+ 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;
+}
+
+dl {
+ margin-bottom: 15px;
+ clear: both;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.refcount {
+ color: #060;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+pre {
+ font-family: monospace;
+ padding: 5px;
+ color: #00008b;
+ border-left: none;
+ border-right: none;
+}
+
+tt {
+ font-family: monospace;
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.footnote:target { background-color: #ffa }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+form.comment {
+ margin: 0;
+ padding: 10px 30px 10px 30px;
+ background-color: #eee;
+}
+
+form.comment h3 {
+ background-color: #326591;
+ color: white;
+ margin: -10px -30px 10px -30px;
+ padding: 5px;
+ font-size: 1.4em;
+}
+
+form.comment input,
+form.comment textarea {
+ border: 1px solid #ccc;
+ padding: 2px;
+ font-family: sans-serif;
+ font-size: 13px;
+}
+
+form.comment input[type="text"] {
+ width: 240px;
+}
+
+form.comment textarea {
+ width: 100%;
+ height: 200px;
+ margin-bottom: 10px;
+}
+
+/* :::: PRINT :::: */
+@media print {
+ div.documentwrapper {
+ width: 100%;
+ }
+
+ div.body {
+ margin: 0;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ div#comments div.new-comment-box,
+ #top-link {
+ display: none;
+ }
+}
diff --git a/docs/class-simplejson.JSONDecoder.html b/docs/class-simplejson.JSONDecoder.html
deleted file mode 100644
index 4d283c1..0000000
--- a/docs/class-simplejson.JSONDecoder.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>simplejson.JSONDecoder -- Simple JSON &amp;lt;&lt;a class="reference" href="http://json.org">http://json.org&lt;/a>&amp;gt; decoder</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
-
- <A HREF="class-simplejson.JSONDecoder.html">details</A>
-
- <A HREF="class-simplejson.JSONDecoder-index.html">
- tree
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1 CLASS="pudge-member-page-heading">
- <TT>JSONDecoder</TT>
- </H1>
- <H4 CLASS="pudge-member-page-subheading">
- Simple JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> decoder
- </H4>
- <P CLASS="pudge-member-parent-link">
- <SMALL>
- The JSONDecoder class is accessible via the
- <A HREF="module-simplejson.html">
- <TT>simplejson</TT>
- </A> module.
- </SMALL>
- </P>
- <DIV ID="pudge-section-nav">
- <UL>
- <LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Attributes
- </SPAN>
- </LI><LI>
- <A HREF="#methods" CLASS="pudge-section-link">
- Methods (3)
- </A>
-
- </LI>
-
- <LI>
- <A HREF="simplejson/decoder.py.html?f=244&amp;l=340#244" CLASS="pudge-section-link">
- Source
- </A>
- </LI>
- </UL>
- </DIV>
- <DIV STYLE="clear: left"></DIV>
- <DIV CLASS="rst pudge-module-doc">
- <P>Performs the following translations in decoding by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="44%">
-<COL WIDTH="56%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">JSON</TH>
-<TH CLASS="head">Python</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>object</TD>
-<TD>dict</TD>
-</TR>
-<TR><TD>array</TD>
-<TD>list</TD>
-</TR>
-<TR><TD>string</TD>
-<TD>unicode</TD>
-</TR>
-<TR><TD>number (int)</TD>
-<TD>int, long</TD>
-</TR>
-<TR><TD>number (real)</TD>
-<TD>float</TD>
-</TR>
-<TR><TD>true</TD>
-<TD>True</TD>
-</TR>
-<TR><TD>false</TD>
-<TD>False</TD>
-</TR>
-<TR><TD>null</TD>
-<TD>None</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>It also understands <TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, and <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT> as
-their corresponding <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values, which is outside the JSON spec.</P>
-
- </DIV>
-
- <HR>
-
-
- <A NAME="methods"></A>
- <H2>Methods</H2>
- <DIV CLASS="pudge-member routine alias">
- <A NAME="__init__"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONDecoder.html#__init__" CLASS="pudge-obj-link">__init__</A>(self, encoding=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True)</TT>
- <A HREF="simplejson/decoder.py.html?f=277&amp;l=313#277" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- <TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> determines the encoding used to interpret any <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>
-objects decoded by this instance (utf-8 by default). It has no
-effect when decoding <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> objects.
- </P>
- <P>Note that currently only encodings that are a superset of ASCII work,
-strings of other encodings should be passed in as <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT>, if specified, will be called with the result
-of every JSON object decoded and its return value will be used in
-place of the given <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>. This can be used to provide custom
-deserializations (e.g. to support JSON-RPC class hinting).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_float</SPAN></TT>, if specified, will be called with the string
-of every JSON float to be decoded. By default this is equivalent to
-float(num_str). This can be used to use another datatype or parser
-for JSON floats (e.g. decimal.Decimal).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_int</SPAN></TT>, if specified, will be called with the string
-of every JSON int to be decoded. By default this is equivalent to
-int(num_str). This can be used to use another datatype or parser
-for JSON integers (e.g. float).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_constant</SPAN></TT>, if specified, will be called with one of the
-following strings: -Infinity, Infinity, NaN, null, true, false.
-This can be used to raise an exception if invalid JSON numbers
-are encountered.</P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine alias">
- <A NAME="decode"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONDecoder.html#decode" CLASS="pudge-obj-link">decode</A>(self, s, _w=&lt;built-in method match of _sre.SRE_Pattern object at 0x15a46e0>)</TT>
- <A HREF="simplejson/decoder.py.html?f=314&amp;l=324#314" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Return the Python representation of <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> or <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>
-instance containing a JSON document)
- </P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine alias">
- <A NAME="raw_decode"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONDecoder.html#raw_decode" CLASS="pudge-obj-link">raw_decode</A>(self, s, **kw)</TT>
- <A HREF="simplejson/decoder.py.html?f=325&amp;l=340#325" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Decode a JSON document from <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> or <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> beginning
-with a JSON document) and return a 2-tuple of the Python
-representation and the index in <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> where the document ended.
- </P>
- <P>This can be used to decode a JSON document from a string that may
-have extraneous data at the end.</P>
-
-
- </DIV>
- </DIV>
-
-
-
- <P>
- <SMALL>
-
-
- See
- <A HREF="simplejson/decoder.py.html?f=244&amp;l=340#244" TITLE="simplejson/decoder.py:244">the source</A>
- for more information.
- </SMALL>
- </P>
-
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
-
- </DIV>
- </DIV>
- </BODY>
-
-</HTML> \ No newline at end of file
diff --git a/docs/class-simplejson.JSONEncoder.html b/docs/class-simplejson.JSONEncoder.html
deleted file mode 100644
index d5593e9..0000000
--- a/docs/class-simplejson.JSONEncoder.html
+++ /dev/null
@@ -1,264 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>simplejson.JSONEncoder -- Extensible JSON &amp;lt;&lt;a class="reference" href="http://json.org">http://json.org&lt;/a>&amp;gt; encoder for Python data structures.</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
-
- <A HREF="class-simplejson.JSONEncoder.html">details</A>
-
- <A HREF="class-simplejson.JSONEncoder-index.html">
- tree
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1 CLASS="pudge-member-page-heading">
- <TT>JSONEncoder</TT>
- </H1>
- <H4 CLASS="pudge-member-page-subheading">
- Extensible JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> encoder for Python data structures.
- </H4>
- <P CLASS="pudge-member-parent-link">
- <SMALL>
- The JSONEncoder class is accessible via the
- <A HREF="module-simplejson.html">
- <TT>simplejson</TT>
- </A> module.
- </SMALL>
- </P>
- <DIV ID="pudge-section-nav">
- <UL>
- <LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Attributes
- </SPAN>
- </LI><LI>
- <A HREF="#methods" CLASS="pudge-section-link">
- Methods (4)
- </A>
-
- </LI>
-
- <LI>
- <A HREF="simplejson/encoder.py.html?f=83&amp;l=382#83" CLASS="pudge-section-link">
- Source
- </A>
- </LI>
- </UL>
- </DIV>
- <DIV STYLE="clear: left"></DIV>
- <DIV CLASS="rst pudge-module-doc">
- <P>Supports the following objects and types by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="56%">
-<COL WIDTH="44%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">Python</TH>
-<TH CLASS="head">JSON</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>dict</TD>
-<TD>object</TD>
-</TR>
-<TR><TD>list, tuple</TD>
-<TD>array</TD>
-</TR>
-<TR><TD>str, unicode</TD>
-<TD>string</TD>
-</TR>
-<TR><TD>int, long, float</TD>
-<TD>number</TD>
-</TR>
-<TR><TD>True</TD>
-<TD>true</TD>
-</TR>
-<TR><TD>False</TD>
-<TD>false</TD>
-</TR>
-<TR><TD>None</TD>
-<TD>null</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>To extend this to recognize other objects, subclass and implement a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method with another method that returns a serializable
-object for <TT CLASS="docutils literal"><SPAN CLASS="pre">o</SPAN></TT> if possible, otherwise it should call the superclass
-implementation (to raise <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>).</P>
-
- </DIV>
-
- <HR>
-
-
- <A NAME="methods"></A>
- <H2>Methods</H2>
- <DIV CLASS="pudge-member routine alias">
- <A NAME="__init__"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONEncoder.html#__init__" CLASS="pudge-obj-link">__init__</A>(self, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, encoding='utf-8', default=None)</TT>
- <A HREF="simplejson/encoder.py.html?f=115&amp;l=173#115" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Constructor for JSONEncoder, with sensible defaults.
- </P>
- <P>If skipkeys is False, then it is a TypeError to attempt
-encoding of keys that are not str, int, long, float or None. If
-skipkeys is True, such items are simply skipped.</P>
-<P>If ensure_ascii is True, the output is guaranteed to be str
-objects with all incoming unicode characters escaped. If
-ensure_ascii is false, the output will be unicode object.</P>
-<P>If check_circular is True, then lists, dicts, and custom encoded
-objects will be checked for circular references during encoding to
-prevent an infinite recursion (which would cause an OverflowError).
-Otherwise, no such check takes place.</P>
-<P>If allow_nan is True, then NaN, Infinity, and -Infinity will be
-encoded as such. This behavior is not JSON specification compliant,
-but is consistent with most JavaScript based encoders and decoders.
-Otherwise, it will be a ValueError to encode such floats.</P>
-<P>If sort_keys is True, then the output of dictionaries will be
-sorted by key; this is useful for regression tests to ensure
-that JSON serializations can be compared on a day-to-day basis.</P>
-<P>If indent is a non-negative integer, then JSON array
-elements and object members will be pretty-printed with that
-indent level. An indent level of 0 will only insert newlines.
-None is the most compact representation.</P>
-<P>If specified, separators should be a (item_separator, key_separator)
-tuple. The default is (', ', ': '). To get the most compact JSON
-representation you should specify (',', ':') to eliminate whitespace.</P>
-<P>If specified, default is a function that gets called for objects
-that can't otherwise be serialized. It should return a JSON encodable
-version of the object or raise a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>.</P>
-<P>If encoding is not None, then all input strings will be
-transformed into unicode using that encoding prior to JSON-encoding.
-The default is UTF-8.</P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine alias">
- <A NAME="default"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONEncoder.html#default" CLASS="pudge-obj-link">default</A>(self, o)</TT>
- <A HREF="simplejson/encoder.py.html?f=323&amp;l=342#323" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Implement this method in a subclass such that it returns
-a serializable object for <TT CLASS="docutils literal"><SPAN CLASS="pre">o</SPAN></TT>, or calls the base implementation
-(to raise a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>).
- </P>
- <P>For example, to support arbitrary iterators, you could
-implement default like this:</P>
-<PRE CLASS="literal-block">
-def default(self, o):
- try:
- iterable = iter(o)
- except TypeError:
- pass
- else:
- return list(iterable)
- return JSONEncoder.default(self, o)
-</PRE>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine alias">
- <A NAME="encode"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONEncoder.html#encode" CLASS="pudge-obj-link">encode</A>(self, o)</TT>
- <A HREF="simplejson/encoder.py.html?f=343&amp;l=366#343" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Return a JSON string representation of a Python data structure.
- </P>
- <PRE CLASS="doctest-block">
->>> JSONEncoder().encode({"foo": ["bar", "baz"]})
-'{"foo": ["bar", "baz"]}'
-</PRE>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine alias">
- <A NAME="iterencode"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="class-simplejson.JSONEncoder.html#iterencode" CLASS="pudge-obj-link">iterencode</A>(self, o)</TT>
- <A HREF="simplejson/encoder.py.html?f=367&amp;l=382#367" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Encode the given object and yield each string
-representation as available.
- </P>
- <P>For example:</P>
-<PRE CLASS="literal-block">
-for chunk in JSONEncoder().iterencode(bigobject):
- mysocket.write(chunk)
-</PRE>
-
-
- </DIV>
- </DIV>
-
-
-
- <P>
- <SMALL>
-
-
- See
- <A HREF="simplejson/encoder.py.html?f=83&amp;l=382#83" TITLE="simplejson/encoder.py:83">the source</A>
- for more information.
- </SMALL>
- </P>
-
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
-
- </DIV>
- </DIV>
- </BODY>
-
-</HTML> \ No newline at end of file
diff --git a/docs/class_to_source.js b/docs/class_to_source.js
deleted file mode 100644
index b6dc765..0000000
--- a/docs/class_to_source.js
+++ /dev/null
@@ -1,22 +0,0 @@
-(function () {
- var href = document.location.href;
- if (href.indexOf("file:") == 0 || !document.getElementsByTagName) return;
- var _old_onload = window.onload;
- window.onload = function () {
- if (_old_onload) _old_onload.call(this);
- _old_onload = null;
- var anchors = document.getElementsByTagName('A');
- var class_re = /\blines-(\d+)-(\d+)\b/;
- var hash_re = /#.*$/;
- for (var i = 0; i < anchors.length; i++) {
- var anchor = anchors[i];
- var found = anchor.className.match(class_re);
- if (!found) continue;
- href = anchor.href;
- var hashidx = href.indexOf("#");
- if (hashidx == -1) hashidx = href.length;
- anchor.href = (href.substring(0, hashidx) + "?f=" + found[1] +
- "&l=" + found[2] + href.substring(hashidx, href.length));
- }
- }
-})();
diff --git a/docs/genindex.html b/docs/genindex.html
new file mode 100644
index 0000000..88bac0c
--- /dev/null
+++ b/docs/genindex.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Index &mdash; simlejson v2.0.0 documentation</title>
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '2.0.0',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html'
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/interface.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="contents" title="Global table of contents" href="contents.html" />
+ <link rel="index" title="Global index" href="" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="top" title="simlejson v2.0.0 documentation" href="index.html" />
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+
+ <h1 id="index">Index</h1>
+
+ <a href="#D"><strong>D</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#J"><strong>J</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a>
+
+ <hr />
+
+
+<h2 id="D">D</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#simplejson.JSONDecoder.decode">decode() (simplejson.JSONDecoder method)</a></dt>
+<dt><a href="index.html#simplejson.JSONEncoder.default">default() (simplejson.JSONEncoder method)</a></dt>
+<dt><a href="index.html#simplejson.dump">dump() (in module simplejson)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="index.html#simplejson.dumps">dumps() (in module simplejson)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="E">E</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#simplejson.JSONEncoder.encode">encode() (simplejson.JSONEncoder method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="I">I</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#simplejson.JSONEncoder.iterencode">iterencode() (simplejson.JSONEncoder method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="J">J</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#simplejson.JSONDecoder">JSONDecoder (class in simplejson)</a></dt>
+<dt><a href="index.html#simplejson.JSONEncoder">JSONEncoder (class in simplejson)</a></dt></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="R">R</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#simplejson.JSONDecoder.raw_decode">raw_decode() (simplejson.JSONDecoder method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="S">S</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="index.html#module-simplejson">simplejson (module)</a></dt></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+
+
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" /> <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2008, Bob Ippolito.
+ Last updated on Sep 26, 2008.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 907cbc7..57c35e9 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,484 +1,432 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>simplejson -- A simple, fast, extensible JSON encoder and decoder</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
-
- <A HREF="module-simplejson.html">details</A>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>simplejson &#8212; JSON encoder and decoder &mdash; simlejson v2.0.0 documentation</title>
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '2.0.0',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html'
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/interface.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="contents" title="Global table of contents" href="contents.html" />
+ <link rel="index" title="Global index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="top" title="simlejson v2.0.0 documentation" href="" />
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
- <A HREF="module-simplejson-index.html">
- tree
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1 CLASS="pudge-member-page-heading">
- <TT>simplejson</TT>
- </H1>
- <H4 CLASS="pudge-member-page-subheading">
- A simple, fast, extensible JSON encoder and decoder
- </H4>
- <DIV ID="pudge-section-nav">
- <UL>
- <LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Attributes
- </SPAN>
- </LI><LI>
- <A HREF="#functions" CLASS="pudge-section-link">
- Functions (4)
- </A>
-
- </LI><LI>
- <A HREF="#classes" CLASS="pudge-section-link">
- Classes (2)
- </A>
-
- </LI><LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Modules
- </SPAN>
- </LI>
- <LI>
- <A HREF="module-simplejson-index.html" CLASS="pudge-section-link">
- Index
- </A>
- </LI>
- <LI>
- <A HREF="simplejson/__init__.py.html" CLASS="pudge-section-link">
- Source
- </A>
- </LI>
- </UL>
- </DIV>
- <DIV STYLE="clear: left"></DIV>
- <DIV CLASS="rst pudge-module-doc">
- <P>JSON (JavaScript Object Notation) &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.</P>
-<P>simplejson exposes an API familiar to uses of the standard library
-marshal and pickle modules.</P>
-<P>Encoding basic Python object hierarchies:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
-'["foo", {"bar": ["baz", null, 1.0, 2]}]'
->>> print simplejson.dumps("\"foo\bar")
-"\"foo\bar"
->>> print simplejson.dumps(u'\u1234')
-"\u1234"
->>> print simplejson.dumps('\\')
-"\\"
->>> print simplejson.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
-{"a": 0, "b": 0, "c": 0}
->>> from StringIO import StringIO
->>> io = StringIO()
->>> simplejson.dump(['streaming API'], io)
->>> io.getvalue()
-'["streaming API"]'
-</PRE>
-<P>Compact encoding:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
-'[1,2,3,{"4":5,"6":7}]'
-</PRE>
-<P>Pretty printing:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> print simplejson.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
-{
- "4": 5,
- "6": 7
-}
-</PRE>
-<P>Decoding JSON:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
-[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
->>> simplejson.loads('"\\"foo\\bar"')
-u'"foo\x08ar'
->>> from StringIO import StringIO
->>> io = StringIO('["streaming API"]')
->>> simplejson.load(io)
-[u'streaming API']
-</PRE>
-<P>Specializing JSON object decoding:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> def as_complex(dct):
-... if '__complex__' in dct:
-... return complex(dct['real'], dct['imag'])
-... return dct
-...
->>> simplejson.loads('{"__complex__": true, "real": 1, "imag": 2}',
-... object_hook=as_complex)
-(1+2j)
->>> import decimal
->>> simplejson.loads('1.1', parse_float=decimal.Decimal)
-Decimal("1.1")
-</PRE>
-<P>Extending JSONEncoder:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> class ComplexEncoder(simplejson.JSONEncoder):
-... def default(self, obj):
-... if isinstance(obj, complex):
-... return [obj.real, obj.imag]
-... return simplejson.JSONEncoder.default(self, obj)
-...
->>> dumps(2 + 1j, cls=ComplexEncoder)
-'[2.0, 1.0]'
->>> ComplexEncoder().encode(2 + 1j)
-'[2.0, 1.0]'
->>> list(ComplexEncoder().iterencode(2 + 1j))
-['[', '2.0', ', ', '1.0', ']']
-</PRE>
-<P>Using simplejson from the shell to validate and
-pretty-print:</P>
-<PRE CLASS="literal-block">
-$ echo '{"json":"obj"}' | python -msimplejson
+ <div class="section">
+<h1 id="module-simplejson"><tt class="xref docutils literal"><span class="pre">simplejson</span></tt> &#8212; JSON encoder and decoder<a class="headerlink" href="#module-simplejson" title="Permalink to this headline">¶</a></h1>
+<p>JSON (JavaScript Object Notation) &lt;<a class="reference" href="http://json.org">http://json.org</a>&gt; is a subset of JavaScript
+syntax (ECMA-262 3rd edition) used as a lightweight data interchange format.</p>
+<p><tt class="xref docutils literal"><span class="pre">simplejson</span></tt> exposes an API familiar to users of the standard library
+<tt class="xref docutils literal"><span class="pre">marshal</span></tt> and <tt class="xref docutils literal"><span class="pre">pickle</span></tt> modules. It is the externally maintained
+version of the <tt class="xref docutils literal"><span class="pre">json</span></tt> library contained in Python 2.6, but maintains
+compatibility with Python 2.4 and Python 2.5 and (currently) has
+significant performance advantages, even without using the optional C
+extension for speedups.</p>
+<p>Encoding basic Python object hierarchies:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">simplejson</span> <span class="k">as</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">([</span><span class="s">&#39;foo&#39;</span><span class="p">,</span> <span class="p">{</span><span class="s">&#39;bar&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s">&#39;baz&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">2</span><span class="p">)}])</span>
+<span class="go">&#39;[&quot;foo&quot;, {&quot;bar&quot;: [&quot;baz&quot;, null, 1.0, 2]}]&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\&quot;</span><span class="s">foo</span><span class="se">\b</span><span class="s">ar&quot;</span><span class="p">)</span>
+<span class="go">&quot;\&quot;foo\bar&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="s">u&#39;</span><span class="se">\u1234</span><span class="s">&#39;</span><span class="p">)</span>
+<span class="go">&quot;\u1234&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\\</span><span class="s">&#39;</span><span class="p">)</span>
+<span class="go">&quot;\\&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">({</span><span class="s">&quot;c&quot;</span><span class="p">:</span> <span class="mf">0</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">:</span> <span class="mf">0</span><span class="p">,</span> <span class="s">&quot;a&quot;</span><span class="p">:</span> <span class="mf">0</span><span class="p">},</span> <span class="n">sort_keys</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="go">{&quot;a&quot;: 0, &quot;b&quot;: 0, &quot;c&quot;: 0}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">from</span> <span class="nn">StringIO</span> <span class="k">import</span> <span class="n">StringIO</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">io</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">([</span><span class="s">&#39;streaming API&#39;</span><span class="p">],</span> <span class="n">io</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">io</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span>
+<span class="go">&#39;[&quot;streaming API&quot;]&#39;</span>
+</pre></div>
+<p>Compact encoding:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">simplejson</span> <span class="k">as</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">([</span><span class="mf">1</span><span class="p">,</span><span class="mf">2</span><span class="p">,</span><span class="mf">3</span><span class="p">,{</span><span class="s">&#39;4&#39;</span><span class="p">:</span> <span class="mf">5</span><span class="p">,</span> <span class="s">&#39;6&#39;</span><span class="p">:</span> <span class="mf">7</span><span class="p">}],</span> <span class="n">separators</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;,&#39;</span><span class="p">,</span><span class="s">&#39;:&#39;</span><span class="p">))</span>
+<span class="go">&#39;[1,2,3,{&quot;4&quot;:5,&quot;6&quot;:7}]&#39;</span>
+</pre></div>
+<p>Pretty printing:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">simplejson</span> <span class="k">as</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">({</span><span class="s">&#39;4&#39;</span><span class="p">:</span> <span class="mf">5</span><span class="p">,</span> <span class="s">&#39;6&#39;</span><span class="p">:</span> <span class="mf">7</span><span class="p">},</span> <span class="n">sort_keys</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mf">4</span><span class="p">)</span>
+<span class="go">{</span>
+<span class="go"> &quot;4&quot;: 5,</span>
+<span class="go"> &quot;6&quot;: 7</span>
+<span class="go">}</span>
+</pre></div>
+<p>Decoding JSON:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">simplejson</span> <span class="k">as</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="s">&#39;[&quot;foo&quot;, {&quot;bar&quot;:[&quot;baz&quot;, null, 1.0, 2]}]&#39;</span><span class="p">)</span>
+<span class="go">[u&#39;foo&#39;, {u&#39;bar&#39;: [u&#39;baz&#39;, None, 1.0, 2]}]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="s">&#39;&quot;</span><span class="se">\\</span><span class="s">&quot;foo</span><span class="se">\\</span><span class="s">bar&quot;&#39;</span><span class="p">)</span>
+<span class="go">u&#39;&quot;foo\x08ar&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">from</span> <span class="nn">StringIO</span> <span class="k">import</span> <span class="n">StringIO</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">io</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;[&quot;streaming API&quot;]&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">io</span><span class="p">)</span>
+<span class="go">[u&#39;streaming API&#39;]</span>
+</pre></div>
+<p>Specializing JSON object decoding:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">simplejson</span> <span class="k">as</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">as_complex</span><span class="p">(</span><span class="n">dct</span><span class="p">):</span>
+<span class="gp">... </span> <span class="k">if</span> <span class="s">&#39;__complex__&#39;</span> <span class="ow">in</span> <span class="n">dct</span><span class="p">:</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="nb">complex</span><span class="p">(</span><span class="n">dct</span><span class="p">[</span><span class="s">&#39;real&#39;</span><span class="p">],</span> <span class="n">dct</span><span class="p">[</span><span class="s">&#39;imag&#39;</span><span class="p">])</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="n">dct</span>
+<span class="gp">...</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="s">&#39;{&quot;__complex__&quot;: true, &quot;real&quot;: 1, &quot;imag&quot;: 2}&#39;</span><span class="p">,</span>
+<span class="gp">... </span> <span class="n">object_hook</span><span class="o">=</span><span class="n">as_complex</span><span class="p">)</span>
+<span class="go">(1+2j)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">decimal</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="s">&#39;1.1&#39;</span><span class="p">,</span> <span class="n">parse_float</span><span class="o">=</span><span class="n">decimal</span><span class="o">.</span><span class="n">Decimal</span><span class="p">)</span>
+<span class="go">Decimal(&#39;1.1&#39;)</span>
+</pre></div>
+<p>Extending <a title="simplejson.JSONEncoder" class="reference" href="#simplejson.JSONEncoder"><tt class="xref docutils literal"><span class="pre">JSONEncoder</span></tt></a>:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">json</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">ComplexEncoder</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="p">):</span>
+<span class="gp">... </span> <span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
+<span class="gp">... </span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">complex</span><span class="p">):</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">imag</span><span class="p">]</span>
+<span class="gp">... </span> <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
+<span class="gp">...</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">dumps</span><span class="p">(</span><span class="mf">2</span> <span class="o">+</span> <span class="mf">1</span><span class="n">j</span><span class="p">,</span> <span class="n">cls</span><span class="o">=</span><span class="n">ComplexEncoder</span><span class="p">)</span>
+<span class="go">&#39;[2.0, 1.0]&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ComplexEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="mf">2</span> <span class="o">+</span> <span class="mf">1</span><span class="n">j</span><span class="p">)</span>
+<span class="go">&#39;[2.0, 1.0]&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="n">ComplexEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">iterencode</span><span class="p">(</span><span class="mf">2</span> <span class="o">+</span> <span class="mf">1</span><span class="n">j</span><span class="p">))</span>
+<span class="go">[&#39;[&#39;, &#39;2.0&#39;, &#39;, &#39;, &#39;1.0&#39;, &#39;]&#39;]</span>
+</pre></div>
+<p>Using simplejson.tool from the shell to validate and pretty-print:</p>
+<div class="highlight"><pre>$ echo &#39;{&quot;json&quot;:&quot;obj&quot;}&#39; | python -msimplejson.tool
{
- "json": "obj"
+ &quot;json&quot;: &quot;obj&quot;
}
-$ echo '{ 1.2:3.4}' | python -msimplejson
+$ echo &#39;{ 1.2:3.4}&#39; | python -msimplejson.tool
Expecting property name: line 1 column 2 (char 2)
-</PRE>
-<P>Note that the JSON produced by this module's default settings
-is a subset of YAML, so it may be used as a serializer for that as well.</P>
+</pre></div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">The JSON produced by this module&#8217;s default settings is a subset of
+YAML, so it may be used as a serializer for that as well.</p>
+</div>
+<div class="section">
+<h2 id="basic-usage">Basic Usage<a class="headerlink" href="#basic-usage" title="Permalink to this headline">¶</a></h2>
+<dl class="function">
+<dt id="simplejson.dump">
+<!--[simplejson.dump]--><tt class="descclassname">simplejson.</tt><tt class="descname">dump</tt><big>(</big><em>obj</em>, <em>fp</em><span class="optional">[</span>, <em>skipkeys</em><span class="optional">[</span>, <em>ensure_ascii</em><span class="optional">[</span>, <em>check_circular</em><span class="optional">[</span>, <em>allow_nan</em><span class="optional">[</span>, <em>cls</em><span class="optional">[</span>, <em>indent</em><span class="optional">[</span>, <em>separators</em><span class="optional">[</span>, <em>encoding</em><span class="optional">[</span>, <em>default</em><span class="optional">[</span>, <em>**kw</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#simplejson.dump" title="Permalink to this definition">¶</a></dt>
+<dd><p>Serialize <em>obj</em> as a JSON formatted stream to <em>fp</em> (a <tt class="docutils literal"><span class="pre">.write()</span></tt>-supporting
+file-like object).</p>
+<p>If <em>skipkeys</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt> (default: <tt class="xref docutils literal"><span class="pre">False</span></tt>), then dict keys that are not
+of a basic type (<tt class="xref docutils literal"><span class="pre">str</span></tt>, <tt class="xref docutils literal"><span class="pre">unicode</span></tt>, <tt class="xref docutils literal"><span class="pre">int</span></tt>, <tt class="xref docutils literal"><span class="pre">long</span></tt>,
+<tt class="xref docutils literal"><span class="pre">float</span></tt>, <tt class="xref docutils literal"><span class="pre">bool</span></tt>, <tt class="xref docutils literal"><span class="pre">None</span></tt>) will be skipped instead of raising a
+<tt class="xref docutils literal"><span class="pre">TypeError</span></tt>.</p>
+<p>If <em>ensure_ascii</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt> (default: <tt class="xref docutils literal"><span class="pre">True</span></tt>), then some chunks written
+to <em>fp</em> may be <tt class="xref docutils literal"><span class="pre">unicode</span></tt> instances, subject to normal Python
+<tt class="xref docutils literal"><span class="pre">str</span></tt> to <tt class="xref docutils literal"><span class="pre">unicode</span></tt> coercion rules. Unless <tt class="docutils literal"><span class="pre">fp.write()</span></tt>
+explicitly understands <tt class="xref docutils literal"><span class="pre">unicode</span></tt> (as in <tt class="xref docutils literal"><span class="pre">codecs.getwriter()</span></tt>) this
+is likely to cause an error. It&#8217;s best to leave the default settings, because
+they are safe and it is highly optimized.</p>
+<p>If <em>check_circular</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt> (default: <tt class="xref docutils literal"><span class="pre">True</span></tt>), then the circular
+reference check for container types will be skipped and a circular reference
+will result in an <tt class="xref docutils literal"><span class="pre">OverflowError</span></tt> (or worse).</p>
+<p>If <em>allow_nan</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt> (default: <tt class="xref docutils literal"><span class="pre">True</span></tt>), then it will be a
+<tt class="xref docutils literal"><span class="pre">ValueError</span></tt> to serialize out of range <tt class="xref docutils literal"><span class="pre">float</span></tt> values (<tt class="docutils literal"><span class="pre">nan</span></tt>,
+<tt class="docutils literal"><span class="pre">inf</span></tt>, <tt class="docutils literal"><span class="pre">-inf</span></tt>) in strict compliance of the JSON specification, instead of
+using the JavaScript equivalents (<tt class="docutils literal"><span class="pre">NaN</span></tt>, <tt class="docutils literal"><span class="pre">Infinity</span></tt>, <tt class="docutils literal"><span class="pre">-Infinity</span></tt>).</p>
+<p>If <em>indent</em> is a non-negative integer, then JSON array elements and object
+members will be pretty-printed with that indent level. An indent level of 0
+will only insert newlines. <tt class="xref docutils literal"><span class="pre">None</span></tt> (the default) selects the most compact
+representation.</p>
+<p>If <em>separators</em> is an <tt class="docutils literal"><span class="pre">(item_separator,</span> <span class="pre">dict_separator)</span></tt> tuple, then it
+will be used instead of the default <tt class="docutils literal"><span class="pre">(',</span> <span class="pre">',</span> <span class="pre">':</span> <span class="pre">')</span></tt> separators. <tt class="docutils literal"><span class="pre">(',',</span>
+<span class="pre">':')</span></tt> is the most compact JSON representation.</p>
+<p><em>encoding</em> is the character encoding for str instances, default is UTF-8.</p>
+<p><em>default(obj)</em> is a function that should return a serializable version of
+<em>obj</em> or raise <tt class="xref docutils literal"><span class="pre">TypeError</span></tt>. The default simply raises <tt class="xref docutils literal"><span class="pre">TypeError</span></tt>.</p>
+<p>To use a custom <tt class="xref docutils literal"><span class="pre">JSONEncoder`</span></tt> subclass (e.g. one that overrides the
+<tt class="xref docutils literal"><span class="pre">default()</span></tt> method to serialize additional types), specify it with the
+<em>cls</em> kwarg.</p>
+</dd></dl>
- </DIV>
-
- <HR>
-
-
- <A NAME="functions"></A>
- <H2>Functions</H2>
- <DIV CLASS="pudge-member routine ">
- <A NAME="dump"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#dump" CLASS="pudge-obj-link">dump</A>(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=126&amp;l=186#126" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> as a JSON formatted stream to <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.write()</SPAN></TT>-supporting file-like object).
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">skipkeys</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">True</SPAN></TT> then <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT> keys that are not basic types
-(<TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">int</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">long</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">bool</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT>)
-will be skipped instead of raising a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">ensure_ascii</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the some chunks written to <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT>
-may be <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instances, subject to normal Python <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> to
-<TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> coercion rules. Unless <TT CLASS="docutils literal"><SPAN CLASS="pre">fp.write()</SPAN></TT> explicitly
-understands <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> (as in <TT CLASS="docutils literal"><SPAN CLASS="pre">codecs.getwriter()</SPAN></TT>) this is likely
-to cause an error.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">check_circular</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the circular reference check
-for container types will be skipped and a circular reference will
-result in an <TT CLASS="docutils literal"><SPAN CLASS="pre">OverflowError</SPAN></TT> (or worse).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">allow_nan</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then it will be a <TT CLASS="docutils literal"><SPAN CLASS="pre">ValueError</SPAN></TT> to
-serialize out of range <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values (<TT CLASS="docutils literal"><SPAN CLASS="pre">nan</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">inf</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-inf</SPAN></TT>)
-in strict compliance of the JSON specification, instead of using the
-JavaScript equivalents (<TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT>).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">indent</SPAN></TT> is a non-negative integer, then JSON array elements and object
-members will be pretty-printed with that indent level. An indent level
-of 0 will only insert newlines. <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT> is the most compact representation.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">separators</SPAN></TT> is an <TT CLASS="docutils literal"><SPAN CLASS="pre">(item_separator,</SPAN> <SPAN CLASS="pre">dict_separator)</SPAN></TT> tuple
-then it will be used instead of the default <TT CLASS="docutils literal"><SPAN CLASS="pre">(',</SPAN> <SPAN CLASS="pre">',</SPAN> <SPAN CLASS="pre">':</SPAN> <SPAN CLASS="pre">')</SPAN></TT> separators.
-<TT CLASS="docutils literal"><SPAN CLASS="pre">(',',</SPAN> <SPAN CLASS="pre">':')</SPAN></TT> is the most compact JSON representation.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> is the character encoding for str instances, default is UTF-8.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">default(obj)</SPAN></TT> is a function that should return a serializable version
-of obj or raise TypeError. The default simply raises TypeError.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONEncoder</SPAN></TT> subclass (e.g. one that overrides the
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method to serialize additional types), specify it with
-the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT> kwarg.</P>
+<dl class="function">
+<dt id="simplejson.dumps">
+<!--[simplejson.dumps]--><tt class="descclassname">simplejson.</tt><tt class="descname">dumps</tt><big>(</big><em>obj</em><span class="optional">[</span>, <em>skipkeys</em><span class="optional">[</span>, <em>ensure_ascii</em><span class="optional">[</span>, <em>check_circular</em><span class="optional">[</span>, <em>allow_nan</em><span class="optional">[</span>, <em>cls</em><span class="optional">[</span>, <em>indent</em><span class="optional">[</span>, <em>separators</em><span class="optional">[</span>, <em>encoding</em><span class="optional">[</span>, <em>default</em><span class="optional">[</span>, <em>**kw</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#simplejson.dumps" title="Permalink to this definition">¶</a></dt>
+<dd><p>Serialize <em>obj</em> to a JSON formatted <tt class="xref docutils literal"><span class="pre">str</span></tt>.</p>
+<p>If <em>ensure_ascii</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt>, then the return value will be a
+<tt class="xref docutils literal"><span class="pre">unicode</span></tt> instance. The other arguments have the same meaning as in
+<a title="simplejson.dump" class="reference" href="#simplejson.dump"><tt class="xref docutils literal"><span class="pre">dump()</span></tt></a>. Note that the default <em>ensure_ascii</em> setting has much
+better performance.</p>
+</dd></dl>
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="dumps"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#dumps" CLASS="pudge-obj-link">dumps</A>(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=188&amp;l=242#188" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> to a JSON formatted <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>.
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">skipkeys</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">True</SPAN></TT> then <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT> keys that are not basic types
-(<TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">int</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">long</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">bool</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT>)
-will be skipped instead of raising a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">ensure_ascii</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the return value will be a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instance subject to normal Python <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> to <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>
-coercion rules instead of being escaped to an ASCII <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">check_circular</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the circular reference check
-for container types will be skipped and a circular reference will
-result in an <TT CLASS="docutils literal"><SPAN CLASS="pre">OverflowError</SPAN></TT> (or worse).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">allow_nan</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then it will be a <TT CLASS="docutils literal"><SPAN CLASS="pre">ValueError</SPAN></TT> to
-serialize out of range <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values (<TT CLASS="docutils literal"><SPAN CLASS="pre">nan</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">inf</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-inf</SPAN></TT>) in
-strict compliance of the JSON specification, instead of using the
-JavaScript equivalents (<TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT>).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">indent</SPAN></TT> is a non-negative integer, then JSON array elements and
-object members will be pretty-printed with that indent level. An indent
-level of 0 will only insert newlines. <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT> is the most compact
-representation.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">separators</SPAN></TT> is an <TT CLASS="docutils literal"><SPAN CLASS="pre">(item_separator,</SPAN> <SPAN CLASS="pre">dict_separator)</SPAN></TT> tuple
-then it will be used instead of the default <TT CLASS="docutils literal"><SPAN CLASS="pre">(',</SPAN> <SPAN CLASS="pre">',</SPAN> <SPAN CLASS="pre">':</SPAN> <SPAN CLASS="pre">')</SPAN></TT> separators.
-<TT CLASS="docutils literal"><SPAN CLASS="pre">(',',</SPAN> <SPAN CLASS="pre">':')</SPAN></TT> is the most compact JSON representation.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> is the character encoding for str instances, default is UTF-8.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">default(obj)</SPAN></TT> is a function that should return a serializable version
-of obj or raise TypeError. The default simply raises TypeError.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONEncoder</SPAN></TT> subclass (e.g. one that overrides the
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method to serialize additional types), specify it with
-the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT> kwarg.</P>
+</div>
+<div class="section">
+<h2 id="encoders-and-decoders">Encoders and decoders<a class="headerlink" href="#encoders-and-decoders" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="simplejson.JSONDecoder">
+<!--[simplejson.JSONDecoder]-->class <tt class="descclassname">simplejson.</tt><tt class="descname">JSONDecoder</tt><big>(</big><span class="optional">[</span><em>encoding</em><span class="optional">[</span>, <em>object_hook</em><span class="optional">[</span>, <em>parse_float</em><span class="optional">[</span>, <em>parse_int</em><span class="optional">[</span>, <em>parse_constant</em><span class="optional">[</span>, <em>strict</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#simplejson.JSONDecoder" title="Permalink to this definition">¶</a></dt>
+<dd><p>Simple JSON decoder.</p>
+<p>Performs the following translations in decoding by default:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="44%" />
+<col width="56%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">JSON</th>
+<th class="head">Python</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>object</td>
+<td>dict</td>
+</tr>
+<tr><td>array</td>
+<td>list</td>
+</tr>
+<tr><td>string</td>
+<td>unicode</td>
+</tr>
+<tr><td>number (int)</td>
+<td>int, long</td>
+</tr>
+<tr><td>number (real)</td>
+<td>float</td>
+</tr>
+<tr><td>true</td>
+<td>True</td>
+</tr>
+<tr><td>false</td>
+<td>False</td>
+</tr>
+<tr><td>null</td>
+<td>None</td>
+</tr>
+</tbody>
+</table>
+<p>It also understands <tt class="docutils literal"><span class="pre">NaN</span></tt>, <tt class="docutils literal"><span class="pre">Infinity</span></tt>, and <tt class="docutils literal"><span class="pre">-Infinity</span></tt> as their
+corresponding <tt class="docutils literal"><span class="pre">float</span></tt> values, which is outside the JSON spec.</p>
+<p><em>encoding</em> determines the encoding used to interpret any <tt class="xref docutils literal"><span class="pre">str</span></tt> objects
+decoded by this instance (<tt class="docutils literal"><span class="pre">'utf-8'</span></tt> by default). It has no effect when decoding
+<tt class="xref docutils literal"><span class="pre">unicode</span></tt> objects.</p>
+<p>Note that currently only encodings that are a superset of ASCII work, strings
+of other encodings should be passed in as <tt class="xref docutils literal"><span class="pre">unicode</span></tt>.</p>
+<p><em>object_hook</em>, if specified, will be called with the result of every JSON
+object decoded and its return value will be used in place of the given
+<tt class="xref docutils literal"><span class="pre">dict</span></tt>. This can be used to provide custom deserializations (e.g. to
+support JSON-RPC class hinting).</p>
+<p><em>parse_float</em>, if specified, will be called with the string of every JSON
+float to be decoded. By default, this is equivalent to <tt class="docutils literal"><span class="pre">float(num_str)</span></tt>.
+This can be used to use another datatype or parser for JSON floats
+(e.g. <tt class="xref docutils literal"><span class="pre">decimal.Decimal</span></tt>).</p>
+<p><em>parse_int</em>, if specified, will be called with the string of every JSON int
+to be decoded. By default, this is equivalent to <tt class="docutils literal"><span class="pre">int(num_str)</span></tt>. This can
+be used to use another datatype or parser for JSON integers
+(e.g. <tt class="xref docutils literal"><span class="pre">float</span></tt>).</p>
+<p><em>parse_constant</em>, if specified, will be called with one of the following
+strings: <tt class="docutils literal"><span class="pre">'-Infinity'</span></tt>, <tt class="docutils literal"><span class="pre">'Infinity'</span></tt>, <tt class="docutils literal"><span class="pre">'NaN'</span></tt>. This can be used to
+raise an exception if invalid JSON numbers are encountered.</p>
+<dl class="method">
+<dt id="simplejson.JSONDecoder.decode">
+<!--[simplejson.JSONDecoder.decode]--><tt class="descname">decode</tt><big>(</big><em>s</em><big>)</big><a class="headerlink" href="#simplejson.JSONDecoder.decode" title="Permalink to this definition">¶</a></dt>
+<dd>Return the Python representation of <em>s</em> (a <tt class="xref docutils literal"><span class="pre">str</span></tt> or
+<tt class="xref docutils literal"><span class="pre">unicode</span></tt> instance containing a JSON document)</dd></dl>
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="load"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#load" CLASS="pudge-obj-link">load</A>(fp, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=247&amp;l=272#247" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">.read()</SPAN></TT>-supporting file-like object containing
-a JSON document) to a Python object.
- </P>
- <P>If the contents of <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> is encoded with an ASCII based encoding other
-than utf-8 (e.g. latin-1), then an appropriate <TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> name must
-be specified. Encodings that are not ASCII based (such as UCS-2) are
-not allowed, and should be wrapped with
-<TT CLASS="docutils literal"><SPAN CLASS="pre">codecs.getreader(fp)(encoding)</SPAN></TT>, or simply decoded to a <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>
-object and passed to <TT CLASS="docutils literal"><SPAN CLASS="pre">loads()</SPAN></TT></P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> is an optional function that will be called with the
-result of any object literal decode (a <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>). The return value of
-<TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> will be used instead of the <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>. This feature
-can be used to implement custom decoders (e.g. JSON-RPC class hinting).</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONDecoder</SPAN></TT> subclass, specify it with the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT>
-kwarg.</P>
+<dl class="method">
+<dt id="simplejson.JSONDecoder.raw_decode">
+<!--[simplejson.JSONDecoder.raw_decode]--><tt class="descname">raw_decode</tt><big>(</big><em>s</em><big>)</big><a class="headerlink" href="#simplejson.JSONDecoder.raw_decode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Decode a JSON document from <em>s</em> (a <tt class="xref docutils literal"><span class="pre">str</span></tt> or <tt class="xref docutils literal"><span class="pre">unicode</span></tt>
+beginning with a JSON document) and return a 2-tuple of the Python
+representation and the index in <em>s</em> where the document ended.</p>
+<p>This can be used to decode a JSON document from a string that may have
+extraneous data at the end.</p>
+</dd></dl>
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="loads"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#loads" CLASS="pudge-obj-link">loads</A>(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=274&amp;l=323#274" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> or <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instance containing a JSON
-document) to a Python object.
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> is a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> instance and is encoded with an ASCII based encoding
-other than utf-8 (e.g. latin-1) then an appropriate <TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> name
-must be specified. Encodings that are not ASCII based (such as UCS-2)
-are not allowed and should be decoded to <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> first.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> is an optional function that will be called with the
-result of any object literal decode (a <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>). The return value of
-<TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> will be used instead of the <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>. This feature
-can be used to implement custom decoders (e.g. JSON-RPC class hinting).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_float</SPAN></TT>, if specified, will be called with the string
-of every JSON float to be decoded. By default this is equivalent to
-float(num_str). This can be used to use another datatype or parser
-for JSON floats (e.g. decimal.Decimal).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_int</SPAN></TT>, if specified, will be called with the string
-of every JSON int to be decoded. By default this is equivalent to
-int(num_str). This can be used to use another datatype or parser
-for JSON integers (e.g. float).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_constant</SPAN></TT>, if specified, will be called with one of the
-following strings: -Infinity, Infinity, NaN, null, true, false.
-This can be used to raise an exception if invalid JSON numbers
-are encountered.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONDecoder</SPAN></TT> subclass, specify it with the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT>
-kwarg.</P>
+</dd></dl>
-
- </DIV>
- </DIV>
-
-
- <A NAME="classes"></A>
- <H2>Classes</H2>
- <DIV CLASS="pudge-member class alias">
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">C</SPAN>
- <TT>
- <A HREF="class-simplejson.JSONEncoder.html" CLASS="pudge-obj-link">JSONEncoder</A>(...)</TT>
- <A HREF="simplejson/encoder.py.html?f=83&amp;l=382#83" CLASS="pudge-member-view-source" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Extensible JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> encoder for Python data structures.
- </P>
- <P>Supports the following objects and types by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="56%">
-<COL WIDTH="44%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">Python</TH>
-<TH CLASS="head">JSON</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>dict</TD>
-<TD>object</TD>
-</TR>
-<TR><TD>list, tuple</TD>
-<TD>array</TD>
-</TR>
-<TR><TD>str, unicode</TD>
-<TD>string</TD>
-</TR>
-<TR><TD>int, long, float</TD>
-<TD>number</TD>
-</TR>
-<TR><TD>True</TD>
-<TD>true</TD>
-</TR>
-<TR><TD>False</TD>
-<TD>false</TD>
-</TR>
-<TR><TD>None</TD>
-<TD>null</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>To extend this to recognize other objects, subclass and implement a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method with another method that returns a serializable
-object for <TT CLASS="docutils literal"><SPAN CLASS="pre">o</SPAN></TT> if possible, otherwise it should call the superclass
-implementation (to raise <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>).</P>
+<dl class="class">
+<dt id="simplejson.JSONEncoder">
+<!--[simplejson.JSONEncoder]-->class <tt class="descclassname">simplejson.</tt><tt class="descname">JSONEncoder</tt><big>(</big><span class="optional">[</span><em>skipkeys</em><span class="optional">[</span>, <em>ensure_ascii</em><span class="optional">[</span>, <em>check_circular</em><span class="optional">[</span>, <em>allow_nan</em><span class="optional">[</span>, <em>sort_keys</em><span class="optional">[</span>, <em>indent</em><span class="optional">[</span>, <em>separators</em><span class="optional">[</span>, <em>encoding</em><span class="optional">[</span>, <em>default</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#simplejson.JSONEncoder" title="Permalink to this definition">¶</a></dt>
+<dd><p>Extensible JSON encoder for Python data structures.</p>
+<p>Supports the following objects and types by default:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="56%" />
+<col width="44%" />
+</colgroup>
+<thead valign="bottom">
+<tr><th class="head">Python</th>
+<th class="head">JSON</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr><td>dict</td>
+<td>object</td>
+</tr>
+<tr><td>list, tuple</td>
+<td>array</td>
+</tr>
+<tr><td>str, unicode</td>
+<td>string</td>
+</tr>
+<tr><td>int, long, float</td>
+<td>number</td>
+</tr>
+<tr><td>True</td>
+<td>true</td>
+</tr>
+<tr><td>False</td>
+<td>false</td>
+</tr>
+<tr><td>None</td>
+<td>null</td>
+</tr>
+</tbody>
+</table>
+<p>To extend this to recognize other objects, subclass and implement a
+<a title="simplejson.JSONEncoder.default" class="reference" href="#simplejson.JSONEncoder.default"><tt class="xref docutils literal"><span class="pre">default()</span></tt></a> method with another method that returns a serializable object
+for <tt class="docutils literal"><span class="pre">o</span></tt> if possible, otherwise it should call the superclass implementation
+(to raise <tt class="xref docutils literal"><span class="pre">TypeError</span></tt>).</p>
+<p>If <em>skipkeys</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt> (the default), then it is a <tt class="xref docutils literal"><span class="pre">TypeError</span></tt> to
+attempt encoding of keys that are not str, int, long, float or None. If
+<em>skipkeys</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt>, such items are simply skipped.</p>
+<p>If <em>ensure_ascii</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt> (the default), the output is guaranteed to be
+<tt class="xref docutils literal"><span class="pre">str</span></tt> objects with all incoming unicode characters escaped. If
+<em>ensure_ascii</em> is <tt class="xref docutils literal"><span class="pre">False</span></tt>, the output will be a unicode object.</p>
+<p>If <em>check_circular</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt> (the default), then lists, dicts, and custom
+encoded objects will be checked for circular references during encoding to
+prevent an infinite recursion (which would cause an <tt class="xref docutils literal"><span class="pre">OverflowError</span></tt>).
+Otherwise, no such check takes place.</p>
+<p>If <em>allow_nan</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt> (the default), then <tt class="docutils literal"><span class="pre">NaN</span></tt>, <tt class="docutils literal"><span class="pre">Infinity</span></tt>, and
+<tt class="docutils literal"><span class="pre">-Infinity</span></tt> will be encoded as such. This behavior is not JSON
+specification compliant, but is consistent with most JavaScript based
+encoders and decoders. Otherwise, it will be a <tt class="xref docutils literal"><span class="pre">ValueError</span></tt> to encode
+such floats.</p>
+<p>If <em>sort_keys</em> is <tt class="xref docutils literal"><span class="pre">True</span></tt> (the default), then the output of dictionaries
+will be sorted by key; this is useful for regression tests to ensure that
+JSON serializations can be compared on a day-to-day basis.</p>
+<p>If <em>indent</em> is a non-negative integer (it is <tt class="xref docutils literal"><span class="pre">None</span></tt> by default), then JSON
+array elements and object members will be pretty-printed with that indent
+level. An indent level of 0 will only insert newlines. <tt class="xref docutils literal"><span class="pre">None</span></tt> is the most
+compact representation.</p>
+<p>If specified, <em>separators</em> should be an <tt class="docutils literal"><span class="pre">(item_separator,</span> <span class="pre">key_separator)</span></tt>
+tuple. The default is <tt class="docutils literal"><span class="pre">(',</span> <span class="pre">',</span> <span class="pre">':</span> <span class="pre">')</span></tt>. To get the most compact JSON
+representation, you should specify <tt class="docutils literal"><span class="pre">(',',</span> <span class="pre">':')</span></tt> to eliminate whitespace.</p>
+<p>If specified, <em>default</em> is a function that gets called for objects that can&#8217;t
+otherwise be serialized. It should return a JSON encodable version of the
+object or raise a <tt class="xref docutils literal"><span class="pre">TypeError</span></tt>.</p>
+<p>If <em>encoding</em> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>, then all input strings will be transformed
+into unicode using that encoding prior to JSON-encoding. The default is
+<tt class="docutils literal"><span class="pre">'utf-8'</span></tt>.</p>
+<dl class="method">
+<dt id="simplejson.JSONEncoder.default">
+<!--[simplejson.JSONEncoder.default]--><tt class="descname">default</tt><big>(</big><em>o</em><big>)</big><a class="headerlink" href="#simplejson.JSONEncoder.default" title="Permalink to this definition">¶</a></dt>
+<dd><p>Implement this method in a subclass such that it returns a serializable
+object for <em>o</em>, or calls the base implementation (to raise a
+<tt class="xref docutils literal"><span class="pre">TypeError</span></tt>).</p>
+<p>For example, to support arbitrary iterators, you could implement default
+like this:</p>
+<div class="highlight"><pre><span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">iterable</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">JSONEncoder</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">)</span>
+</pre></div>
+</dd></dl>
-
-
- <P CLASS="note">
- This class contains <A HREF="class-simplejson.JSONEncoder.html#members">
- 5 members</A>.
- </P>
- </DIV>
- </DIV><DIV CLASS="pudge-member class alias">
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">C</SPAN>
- <TT>
- <A HREF="class-simplejson.JSONDecoder.html" CLASS="pudge-obj-link">JSONDecoder</A>(...)</TT>
- <A HREF="simplejson/decoder.py.html?f=244&amp;l=340#244" CLASS="pudge-member-view-source" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Simple JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> decoder
- </P>
- <P>Performs the following translations in decoding by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="44%">
-<COL WIDTH="56%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">JSON</TH>
-<TH CLASS="head">Python</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>object</TD>
-<TD>dict</TD>
-</TR>
-<TR><TD>array</TD>
-<TD>list</TD>
-</TR>
-<TR><TD>string</TD>
-<TD>unicode</TD>
-</TR>
-<TR><TD>number (int)</TD>
-<TD>int, long</TD>
-</TR>
-<TR><TD>number (real)</TD>
-<TD>float</TD>
-</TR>
-<TR><TD>true</TD>
-<TD>True</TD>
-</TR>
-<TR><TD>false</TD>
-<TD>False</TD>
-</TR>
-<TR><TD>null</TD>
-<TD>None</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>It also understands <TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, and <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT> as
-their corresponding <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values, which is outside the JSON spec.</P>
+<dl class="method">
+<dt id="simplejson.JSONEncoder.encode">
+<!--[simplejson.JSONEncoder.encode]--><tt class="descname">encode</tt><big>(</big><em>o</em><big>)</big><a class="headerlink" href="#simplejson.JSONEncoder.encode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a JSON string representation of a Python data structure, <em>o</em>. For
+example:</p>
+<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">JSONEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">({</span><span class="s">&quot;foo&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s">&quot;bar&quot;</span><span class="p">,</span> <span class="s">&quot;baz&quot;</span><span class="p">]})</span>
+<span class="go">&#39;{&quot;foo&quot;: [&quot;bar&quot;, &quot;baz&quot;]}&#39;</span>
+</pre></div>
+</dd></dl>
-
-
- <P CLASS="note">
- This class contains <A HREF="class-simplejson.JSONDecoder.html#members">
- 4 members</A>.
- </P>
- </DIV>
- </DIV>
-
-
-
- <P>
- <SMALL>
-
-
- See
- <A HREF="simplejson/__init__.py.html" TITLE="simplejson/__init__.py:0">the source</A>
- for more information.
- </SMALL>
- </P>
+<dl class="method">
+<dt id="simplejson.JSONEncoder.iterencode">
+<!--[simplejson.JSONEncoder.iterencode]--><tt class="descname">iterencode</tt><big>(</big><em>o</em><big>)</big><a class="headerlink" href="#simplejson.JSONEncoder.iterencode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Encode the given object, <em>o</em>, and yield each string representation as
+available. For example:</p>
+<div class="highlight"><pre><span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">JSONEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">iterencode</span><span class="p">(</span><span class="n">bigobject</span><span class="p">):</span>
+ <span class="n">mysocket</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span>
+</pre></div>
+<p>Note that <a title="simplejson.JSONEncoder.encode" class="reference" href="#simplejson.JSONEncoder.encode"><tt class="xref docutils literal"><span class="pre">encode()</span></tt></a> has much better performance than
+<a title="simplejson.JSONEncoder.iterencode" class="reference" href="#simplejson.JSONEncoder.iterencode"><tt class="xref docutils literal"><span class="pre">iterencode()</span></tt></a>.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+</div>
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
- </DIV>
- </DIV>
- </BODY>
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3>Table Of Contents</h3>
+ <ul>
+<li><a class="reference" href=""><tt class="docutils literal"><span class="pre">simplejson</span></tt> &#8212; JSON encoder and decoder</a><ul>
+<li><a class="reference" href="#basic-usage">Basic Usage</a></li>
+<li><a class="reference" href="#encoders-and-decoders">Encoders and decoders</a></li>
+</ul>
+</li>
+</ul>
-</HTML> \ No newline at end of file
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/index.txt">Show Source</a></li>
+ </ul>
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" /> <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2008, Bob Ippolito.
+ Last updated on Sep 26, 2008.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/docs/layout.css b/docs/layout.css
deleted file mode 100644
index a45c58b..0000000
--- a/docs/layout.css
+++ /dev/null
@@ -1,208 +0,0 @@
-@import url("pudge.css");
-
-/* Basic Layout
----------------------------------- */
-
-body {
- margin-left: 1em;
- margin-right: 1em;
- max-width: 50em;
-}
-body {
- font-size: .80em;
- color: #111;
-}
-div#main-content {
- margin-left: 1em;
- margin-right: 1em;
- max-width: 47em;
-}
-
-/* Top Navigation
------------------------------------ */
-
-div#top-nav {
- background: #373;
- padding: .3em .3em;
- margin: 0;
- margin-bottom: 1.5em;
- font-size: 90%;
-}
-div#top-nav #doc-title {
- font-size: 140%;
- font-weight: bold;
- margin: 0;
- padding-top: .32em;
- padding-right: 1em;
- padding-left: .3em;
- color: #9c9;
- float: left;
-}
-div#top-nav a {
- color: #6a6;
- text-decoration: none;
-}
-div#top-nav .online-navigation a:hover,
-div#top-nav h1 a
-{
- color: #9c9;
-}
-
-/* Footer
------------------------------------ */
-
-div#footer {
- text-align: right;
- margin-top: 1.5em;
- border-top: 1px solid #373;
- padding-top: .5em;
- font-size: 80%;
- color: #666;
-}
-div#footer a {
- color: #373;
- text-decoration: none;
-}
-div#footer p {
- margin: .2em 1em;
-}
-
-/* Basic Style
------------------------------------ */
-h1, h2, h3, h4 {
- margin: 1em auto;
- font-family: 'Trebuchet MS', 'Verdana', Sans-serif;
- color: #555;
- font-weight: normal;
-}
-h1 { font-size: 200% }
-h2 { font-size: 170% }
-h3 { font-size: 150% }
-h4 { font-size: 120% }
-a:link { color: #060; font-weight: bold }
-a:visited { color: #060; text-decoration: none }
-hr { margin: auto 12px }
-pre { color: #036 }
-
-dl dt {
- font-style: italic;
- margin-top: .5em;
- font-weight: bold;
- color: #555;
-}
-hr {
- color: #373;
- background-color: #373;
- height: 1px;
- border: 0;
- width: 100%;
- margin: 2em 0;
-}
-
-/* Pudge Elements
---------------------------------- */
-
-h1.pudge-member-page-heading {
- font-size: 300%;
- margin-top: .4em;
- margin-bottom: .4em;
-}
-h4.pudge-member-page-subheading {
- font-size: 150%;
- font-style: italic;
- margin-top: -1.3em;
- margin-left: 2em;
- color: #999;
-}
-p.pudge-member-blurb {
- font-style: italic;
- font-weight: bold;
- font-size: 120%;
- margin-top: 0.2em;
- color: #6a6;
-}
-div.pudge-module-doc {
- max-width: 45em;
-}
-div.pudge-section {
- margin-left: 2em;
- max-width: 45em;
-}
-p.pudge-member-blurb {
- font-style: italic;
- font-weight: bold;
- font-size: 120%;
-}
-
-/* Section Navigation
------------------------------------ */
-
-div#pudge-section-nav
-{
- margin: 1em 0 1.5em 0;
- padding: 0;
- height: 20px;
-}
-
-div#pudge-section-nav ul {
- border: 0;
- margin: 0;
- padding: 0;
- list-style-type: none;
- text-align: center;
- border-right: 1px solid #aaa;
-}
-div#pudge-section-nav ul li
-{
- display: block;
- float: left;
- text-align: center;
- padding: 0;
- margin: 0;
-}
-
-div#pudge-section-nav ul li .pudge-section-link,
-div#pudge-section-nav ul li .pudge-missing-section-link
-{
- background: #aaa;
- width: 11em;
- height: 1.8em;
- border: 0;
- border-right: 3px solid #fff;
- padding: 0;
- margin: 0 0 10px 0;
- color: #ddd;
- text-decoration: none;
- display: block;
- text-align: center;
- font: normal 10px/18px "Lucida Grande", "Lucida Sans Unicode", verdana, lucida, sans-serif;
- font-weight: bold;
- cursor: hand;
-}
-
-div#pudge-section-nav ul li a:hover
-{
- color: #fff;
- background: #393;
-}
-
-div#pudge-section-nav ul li .pudge-section-link
-{
- background: #373;
- color: #9c9;
-}
-
-/* Module Lists
------------------------------------ */
-dl.pudge-module-list dt {
- font-style: normal;
- font-size: 110%;
-}
-dl.pudge-module-list dd {
- color: #555;
-}
-
-/* misc */
-pre, tt {
- font-size: 120%;
-}
diff --git a/docs/module-index.html b/docs/module-index.html
deleted file mode 100644
index 5b7b6c8..0000000
--- a/docs/module-index.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>simplejson 1.9 -- Module Reference</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1 CLASS="pudge-member-page-heading">
- simplejson 1.9
- </H1>
- <H4 CLASS="pudge-member-page-subheading">
- Module Reference
- </H4>
-
- <H2>Packages and Modules</H2>
-
- <DL CLASS="pudge-module-list">
-
- <DT><TT><A HREF="module-simplejson.html" CLASS="pudge-obj-link">
- simplejson
- </A></TT>
- </DT>
- <DD>
- A simple, fast, extensible JSON encoder and decoder
- </DD>
-
- <DT><TT><A HREF="module-simplejson.encoder.html" CLASS="pudge-obj-link">
- simplejson.encoder
- </A></TT>
- </DT>
- <DD>
- Implementation of JSONEncoder
- </DD>
-
- <DT><TT><A HREF="module-simplejson.scanner.html" CLASS="pudge-obj-link">
- simplejson.scanner
- </A></TT>
- </DT>
- <DD>
- Iterator based sre token scanner
- </DD>
-
- <DT><TT><A HREF="module-simplejson.decoder.html" CLASS="pudge-obj-link">
- simplejson.decoder
- </A></TT>
- </DT>
- <DD>
- Implementation of JSONDecoder
- </DD>
-
- <DT><TT><A HREF="module-simplejson.tests.html" CLASS="pudge-obj-link">
- simplejson.tests
- </A></TT>
- </DT>
-
-
- <DT><TT><A HREF="module-simplejson._speedups.html" CLASS="pudge-obj-link">
- simplejson._speedups
- </A></TT>
- </DT>
-
-
- </DL>
-
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
-
- </DIV>
- </DIV>
- </BODY>
-
-</HTML> \ No newline at end of file
diff --git a/docs/module-simplejson-index.html b/docs/module-simplejson-index.html
deleted file mode 100644
index bc49a85..0000000
--- a/docs/module-simplejson-index.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>Index of simplejson module</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
-
- <A HREF="module-simplejson.html">details</A>
-
- <A HREF="module-simplejson-index.html">
- tree
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1>Index of the <TT>simplejson</TT> module</H1>
-
- <UL CLASS="pudge-module-index">
- <LI CLASS="module">
- <SPAN CLASS="prefix">m</SPAN>
- <A HREF="module-simplejson.html">
- <TT>simplejson</TT>
- </A>
- <A HREF="simplejson/__init__.py.html">...</A>
- <SMALL>
- - <SPAN CLASS="rst">A simple, fast, extensible JSON encoder and decoder</SPAN>
- </SMALL>
- <UL>
-
-
-
-
-
- <LI CLASS="routine">
- <SPAN CLASS="prefix">f</SPAN>
- <A HREF="module-simplejson.html#load">
- <TT>load</TT>
- </A>
- <A HREF="simplejson/__init__.py.html?f=247&amp;l=272#247">...</A>
- <SMALL>
- - <SPAN CLASS="rst">Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">.read()</SPAN></TT>-supporting file-like object containing
-a JSON document) to a Python object.</SPAN>
- </SMALL>
-
- </LI><LI CLASS="routine">
- <SPAN CLASS="prefix">f</SPAN>
- <A HREF="module-simplejson.html#dump">
- <TT>dump</TT>
- </A>
- <A HREF="simplejson/__init__.py.html?f=126&amp;l=186#126">...</A>
- <SMALL>
- - <SPAN CLASS="rst">Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> as a JSON formatted stream to <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.write()</SPAN></TT>-supporting file-like object).</SPAN>
- </SMALL>
-
- </LI><LI CLASS="routine">
- <SPAN CLASS="prefix">f</SPAN>
- <A HREF="module-simplejson.html#dumps">
- <TT>dumps</TT>
- </A>
- <A HREF="simplejson/__init__.py.html?f=188&amp;l=242#188">...</A>
- <SMALL>
- - <SPAN CLASS="rst">Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> to a JSON formatted <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>.</SPAN>
- </SMALL>
-
- </LI><LI CLASS="routine">
- <SPAN CLASS="prefix">f</SPAN>
- <A HREF="module-simplejson.html#loads">
- <TT>loads</TT>
- </A>
- <A HREF="simplejson/__init__.py.html?f=274&amp;l=323#274">...</A>
- <SMALL>
- - <SPAN CLASS="rst">Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> or <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instance containing a JSON
-document) to a Python object.</SPAN>
- </SMALL>
-
- </LI>
-
-
-
- </UL>
- </LI>
- </UL>
-
-
-
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
-
- </DIV>
- </DIV>
- </BODY>
-
-</HTML> \ No newline at end of file
diff --git a/docs/module-simplejson.html b/docs/module-simplejson.html
deleted file mode 100644
index 907cbc7..0000000
--- a/docs/module-simplejson.html
+++ /dev/null
@@ -1,484 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-
- <HEAD><META CONTENT="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
- <TITLE>simplejson -- A simple, fast, extensible JSON encoder and decoder</TITLE>
- <LINK HREF="layout.css" TYPE="text/css" REL="stylesheet">
- </HEAD>
- <BODY>
- <DIV ID="page">
-
- <DIV ID="top-nav">
- <H1 ID="doc-title"><A HREF="index.html" REL="index">simplejson 1.9</A></H1>
- <DIV CLASS="online-navigation">
- <A HREF="index.html" REL="index">index</A>
- <SPAN ID="nav-docs">
-
- </SPAN>
-
-
-
- <BR>
-
- <A HREF="module-simplejson.html" TITLE="simplejson reference">
- simplejson
- </A>
-
-
-
- <A HREF="module-simplejson.html">details</A>
-
- <A HREF="module-simplejson-index.html">
- tree
- </A>
-
-
- </DIV>
- </DIV>
-
- <DIV ID="main-content">
-
- <H1 CLASS="pudge-member-page-heading">
- <TT>simplejson</TT>
- </H1>
- <H4 CLASS="pudge-member-page-subheading">
- A simple, fast, extensible JSON encoder and decoder
- </H4>
-
- <DIV ID="pudge-section-nav">
- <UL>
- <LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Attributes
- </SPAN>
- </LI><LI>
- <A HREF="#functions" CLASS="pudge-section-link">
- Functions (4)
- </A>
-
- </LI><LI>
- <A HREF="#classes" CLASS="pudge-section-link">
- Classes (2)
- </A>
-
- </LI><LI>
-
- <SPAN CLASS="pudge-missing-section-link">
- Modules
- </SPAN>
- </LI>
- <LI>
- <A HREF="module-simplejson-index.html" CLASS="pudge-section-link">
- Index
- </A>
- </LI>
- <LI>
- <A HREF="simplejson/__init__.py.html" CLASS="pudge-section-link">
- Source
- </A>
- </LI>
- </UL>
- </DIV>
- <DIV STYLE="clear: left"></DIV>
- <DIV CLASS="rst pudge-module-doc">
- <P>JSON (JavaScript Object Notation) &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.</P>
-<P>simplejson exposes an API familiar to uses of the standard library
-marshal and pickle modules.</P>
-<P>Encoding basic Python object hierarchies:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
-'["foo", {"bar": ["baz", null, 1.0, 2]}]'
->>> print simplejson.dumps("\"foo\bar")
-"\"foo\bar"
->>> print simplejson.dumps(u'\u1234')
-"\u1234"
->>> print simplejson.dumps('\\')
-"\\"
->>> print simplejson.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
-{"a": 0, "b": 0, "c": 0}
->>> from StringIO import StringIO
->>> io = StringIO()
->>> simplejson.dump(['streaming API'], io)
->>> io.getvalue()
-'["streaming API"]'
-</PRE>
-<P>Compact encoding:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
-'[1,2,3,{"4":5,"6":7}]'
-</PRE>
-<P>Pretty printing:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> print simplejson.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
-{
- "4": 5,
- "6": 7
-}
-</PRE>
-<P>Decoding JSON:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
-[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
->>> simplejson.loads('"\\"foo\\bar"')
-u'"foo\x08ar'
->>> from StringIO import StringIO
->>> io = StringIO('["streaming API"]')
->>> simplejson.load(io)
-[u'streaming API']
-</PRE>
-<P>Specializing JSON object decoding:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> def as_complex(dct):
-... if '__complex__' in dct:
-... return complex(dct['real'], dct['imag'])
-... return dct
-...
->>> simplejson.loads('{"__complex__": true, "real": 1, "imag": 2}',
-... object_hook=as_complex)
-(1+2j)
->>> import decimal
->>> simplejson.loads('1.1', parse_float=decimal.Decimal)
-Decimal("1.1")
-</PRE>
-<P>Extending JSONEncoder:</P>
-<PRE CLASS="literal-block">
->>> import simplejson
->>> class ComplexEncoder(simplejson.JSONEncoder):
-... def default(self, obj):
-... if isinstance(obj, complex):
-... return [obj.real, obj.imag]
-... return simplejson.JSONEncoder.default(self, obj)
-...
->>> dumps(2 + 1j, cls=ComplexEncoder)
-'[2.0, 1.0]'
->>> ComplexEncoder().encode(2 + 1j)
-'[2.0, 1.0]'
->>> list(ComplexEncoder().iterencode(2 + 1j))
-['[', '2.0', ', ', '1.0', ']']
-</PRE>
-<P>Using simplejson from the shell to validate and
-pretty-print:</P>
-<PRE CLASS="literal-block">
-$ echo '{"json":"obj"}' | python -msimplejson
-{
- "json": "obj"
-}
-$ echo '{ 1.2:3.4}' | python -msimplejson
-Expecting property name: line 1 column 2 (char 2)
-</PRE>
-<P>Note that the JSON produced by this module's default settings
-is a subset of YAML, so it may be used as a serializer for that as well.</P>
-
- </DIV>
-
- <HR>
-
-
- <A NAME="functions"></A>
- <H2>Functions</H2>
- <DIV CLASS="pudge-member routine ">
- <A NAME="dump"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#dump" CLASS="pudge-obj-link">dump</A>(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=126&amp;l=186#126" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> as a JSON formatted stream to <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.write()</SPAN></TT>-supporting file-like object).
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">skipkeys</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">True</SPAN></TT> then <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT> keys that are not basic types
-(<TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">int</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">long</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">bool</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT>)
-will be skipped instead of raising a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">ensure_ascii</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the some chunks written to <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT>
-may be <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instances, subject to normal Python <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> to
-<TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> coercion rules. Unless <TT CLASS="docutils literal"><SPAN CLASS="pre">fp.write()</SPAN></TT> explicitly
-understands <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> (as in <TT CLASS="docutils literal"><SPAN CLASS="pre">codecs.getwriter()</SPAN></TT>) this is likely
-to cause an error.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">check_circular</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the circular reference check
-for container types will be skipped and a circular reference will
-result in an <TT CLASS="docutils literal"><SPAN CLASS="pre">OverflowError</SPAN></TT> (or worse).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">allow_nan</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then it will be a <TT CLASS="docutils literal"><SPAN CLASS="pre">ValueError</SPAN></TT> to
-serialize out of range <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values (<TT CLASS="docutils literal"><SPAN CLASS="pre">nan</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">inf</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-inf</SPAN></TT>)
-in strict compliance of the JSON specification, instead of using the
-JavaScript equivalents (<TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT>).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">indent</SPAN></TT> is a non-negative integer, then JSON array elements and object
-members will be pretty-printed with that indent level. An indent level
-of 0 will only insert newlines. <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT> is the most compact representation.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">separators</SPAN></TT> is an <TT CLASS="docutils literal"><SPAN CLASS="pre">(item_separator,</SPAN> <SPAN CLASS="pre">dict_separator)</SPAN></TT> tuple
-then it will be used instead of the default <TT CLASS="docutils literal"><SPAN CLASS="pre">(',</SPAN> <SPAN CLASS="pre">',</SPAN> <SPAN CLASS="pre">':</SPAN> <SPAN CLASS="pre">')</SPAN></TT> separators.
-<TT CLASS="docutils literal"><SPAN CLASS="pre">(',',</SPAN> <SPAN CLASS="pre">':')</SPAN></TT> is the most compact JSON representation.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> is the character encoding for str instances, default is UTF-8.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">default(obj)</SPAN></TT> is a function that should return a serializable version
-of obj or raise TypeError. The default simply raises TypeError.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONEncoder</SPAN></TT> subclass (e.g. one that overrides the
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method to serialize additional types), specify it with
-the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT> kwarg.</P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="dumps"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#dumps" CLASS="pudge-obj-link">dumps</A>(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=188&amp;l=242#188" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Serialize <TT CLASS="docutils literal"><SPAN CLASS="pre">obj</SPAN></TT> to a JSON formatted <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>.
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">skipkeys</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">True</SPAN></TT> then <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT> keys that are not basic types
-(<TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">int</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">long</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">bool</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT>)
-will be skipped instead of raising a <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">ensure_ascii</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the return value will be a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instance subject to normal Python <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> to <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>
-coercion rules instead of being escaped to an ASCII <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT>.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">check_circular</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then the circular reference check
-for container types will be skipped and a circular reference will
-result in an <TT CLASS="docutils literal"><SPAN CLASS="pre">OverflowError</SPAN></TT> (or worse).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">allow_nan</SPAN></TT> is <TT CLASS="docutils literal"><SPAN CLASS="pre">False</SPAN></TT>, then it will be a <TT CLASS="docutils literal"><SPAN CLASS="pre">ValueError</SPAN></TT> to
-serialize out of range <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values (<TT CLASS="docutils literal"><SPAN CLASS="pre">nan</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">inf</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-inf</SPAN></TT>) in
-strict compliance of the JSON specification, instead of using the
-JavaScript equivalents (<TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT>).</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">indent</SPAN></TT> is a non-negative integer, then JSON array elements and
-object members will be pretty-printed with that indent level. An indent
-level of 0 will only insert newlines. <TT CLASS="docutils literal"><SPAN CLASS="pre">None</SPAN></TT> is the most compact
-representation.</P>
-<P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">separators</SPAN></TT> is an <TT CLASS="docutils literal"><SPAN CLASS="pre">(item_separator,</SPAN> <SPAN CLASS="pre">dict_separator)</SPAN></TT> tuple
-then it will be used instead of the default <TT CLASS="docutils literal"><SPAN CLASS="pre">(',</SPAN> <SPAN CLASS="pre">',</SPAN> <SPAN CLASS="pre">':</SPAN> <SPAN CLASS="pre">')</SPAN></TT> separators.
-<TT CLASS="docutils literal"><SPAN CLASS="pre">(',',</SPAN> <SPAN CLASS="pre">':')</SPAN></TT> is the most compact JSON representation.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> is the character encoding for str instances, default is UTF-8.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">default(obj)</SPAN></TT> is a function that should return a serializable version
-of obj or raise TypeError. The default simply raises TypeError.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONEncoder</SPAN></TT> subclass (e.g. one that overrides the
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method to serialize additional types), specify it with
-the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT> kwarg.</P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="load"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#load" CLASS="pudge-obj-link">load</A>(fp, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=247&amp;l=272#247" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">.read()</SPAN></TT>-supporting file-like object containing
-a JSON document) to a Python object.
- </P>
- <P>If the contents of <TT CLASS="docutils literal"><SPAN CLASS="pre">fp</SPAN></TT> is encoded with an ASCII based encoding other
-than utf-8 (e.g. latin-1), then an appropriate <TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> name must
-be specified. Encodings that are not ASCII based (such as UCS-2) are
-not allowed, and should be wrapped with
-<TT CLASS="docutils literal"><SPAN CLASS="pre">codecs.getreader(fp)(encoding)</SPAN></TT>, or simply decoded to a <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT>
-object and passed to <TT CLASS="docutils literal"><SPAN CLASS="pre">loads()</SPAN></TT></P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> is an optional function that will be called with the
-result of any object literal decode (a <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>). The return value of
-<TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> will be used instead of the <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>. This feature
-can be used to implement custom decoders (e.g. JSON-RPC class hinting).</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONDecoder</SPAN></TT> subclass, specify it with the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT>
-kwarg.</P>
-
-
- </DIV>
- </DIV><DIV CLASS="pudge-member routine ">
- <A NAME="loads"></A>
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">f</SPAN>
- <TT><A HREF="module-simplejson.html#loads" CLASS="pudge-obj-link">loads</A>(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, **kw)</TT>
- <A HREF="simplejson/__init__.py.html?f=274&amp;l=323#274" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Deserialize <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> (a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> or <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> instance containing a JSON
-document) to a Python object.
- </P>
- <P>If <TT CLASS="docutils literal"><SPAN CLASS="pre">s</SPAN></TT> is a <TT CLASS="docutils literal"><SPAN CLASS="pre">str</SPAN></TT> instance and is encoded with an ASCII based encoding
-other than utf-8 (e.g. latin-1) then an appropriate <TT CLASS="docutils literal"><SPAN CLASS="pre">encoding</SPAN></TT> name
-must be specified. Encodings that are not ASCII based (such as UCS-2)
-are not allowed and should be decoded to <TT CLASS="docutils literal"><SPAN CLASS="pre">unicode</SPAN></TT> first.</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> is an optional function that will be called with the
-result of any object literal decode (a <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>). The return value of
-<TT CLASS="docutils literal"><SPAN CLASS="pre">object_hook</SPAN></TT> will be used instead of the <TT CLASS="docutils literal"><SPAN CLASS="pre">dict</SPAN></TT>. This feature
-can be used to implement custom decoders (e.g. JSON-RPC class hinting).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_float</SPAN></TT>, if specified, will be called with the string
-of every JSON float to be decoded. By default this is equivalent to
-float(num_str). This can be used to use another datatype or parser
-for JSON floats (e.g. decimal.Decimal).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_int</SPAN></TT>, if specified, will be called with the string
-of every JSON int to be decoded. By default this is equivalent to
-int(num_str). This can be used to use another datatype or parser
-for JSON integers (e.g. float).</P>
-<P><TT CLASS="docutils literal"><SPAN CLASS="pre">parse_constant</SPAN></TT>, if specified, will be called with one of the
-following strings: -Infinity, Infinity, NaN, null, true, false.
-This can be used to raise an exception if invalid JSON numbers
-are encountered.</P>
-<P>To use a custom <TT CLASS="docutils literal"><SPAN CLASS="pre">JSONDecoder</SPAN></TT> subclass, specify it with the <TT CLASS="docutils literal"><SPAN CLASS="pre">cls</SPAN></TT>
-kwarg.</P>
-
-
- </DIV>
- </DIV>
-
-
- <A NAME="classes"></A>
- <H2>Classes</H2>
- <DIV CLASS="pudge-member class alias">
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">C</SPAN>
- <TT>
- <A HREF="class-simplejson.JSONEncoder.html" CLASS="pudge-obj-link">JSONEncoder</A>(...)</TT>
- <A HREF="simplejson/encoder.py.html?f=83&amp;l=382#83" CLASS="pudge-member-view-source" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Extensible JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> encoder for Python data structures.
- </P>
- <P>Supports the following objects and types by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="56%">
-<COL WIDTH="44%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">Python</TH>
-<TH CLASS="head">JSON</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>dict</TD>
-<TD>object</TD>
-</TR>
-<TR><TD>list, tuple</TD>
-<TD>array</TD>
-</TR>
-<TR><TD>str, unicode</TD>
-<TD>string</TD>
-</TR>
-<TR><TD>int, long, float</TD>
-<TD>number</TD>
-</TR>
-<TR><TD>True</TD>
-<TD>true</TD>
-</TR>
-<TR><TD>False</TD>
-<TD>false</TD>
-</TR>
-<TR><TD>None</TD>
-<TD>null</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>To extend this to recognize other objects, subclass and implement a
-<TT CLASS="docutils literal"><SPAN CLASS="pre">.default()</SPAN></TT> method with another method that returns a serializable
-object for <TT CLASS="docutils literal"><SPAN CLASS="pre">o</SPAN></TT> if possible, otherwise it should call the superclass
-implementation (to raise <TT CLASS="docutils literal"><SPAN CLASS="pre">TypeError</SPAN></TT>).</P>
-
-
-
- <P CLASS="note">
- This class contains <A HREF="class-simplejson.JSONEncoder.html#members">
- 5 members</A>.
- </P>
- </DIV>
- </DIV><DIV CLASS="pudge-member class alias">
- <H4 CLASS="pudge-member-name"><SPAN CLASS="prefix">C</SPAN>
- <TT>
- <A HREF="class-simplejson.JSONDecoder.html" CLASS="pudge-obj-link">JSONDecoder</A>(...)</TT>
- <A HREF="simplejson/decoder.py.html?f=244&amp;l=340#244" CLASS="pudge-member-view-source" TITLE="View Source">...</A>
- </H4>
- <DIV CLASS="pudge-section rst">
-
- <P CLASS="pudge-member-blurb">
- Simple JSON &lt;<A HREF="http://json.org" CLASS="reference">http://json.org</A>> decoder
- </P>
- <P>Performs the following translations in decoding by default:</P>
-<TABLE BORDER="1" CLASS="docutils">
-<COLGROUP>
-<COL WIDTH="44%">
-<COL WIDTH="56%">
-</COLGROUP>
-<THEAD VALIGN="bottom">
-<TR><TH CLASS="head">JSON</TH>
-<TH CLASS="head">Python</TH>
-</TR>
-</THEAD>
-<TBODY VALIGN="top">
-<TR><TD>object</TD>
-<TD>dict</TD>
-</TR>
-<TR><TD>array</TD>
-<TD>list</TD>
-</TR>
-<TR><TD>string</TD>
-<TD>unicode</TD>
-</TR>
-<TR><TD>number (int)</TD>
-<TD>int, long</TD>
-</TR>
-<TR><TD>number (real)</TD>
-<TD>float</TD>
-</TR>
-<TR><TD>true</TD>
-<TD>True</TD>
-</TR>
-<TR><TD>false</TD>
-<TD>False</TD>
-</TR>
-<TR><TD>null</TD>
-<TD>None</TD>
-</TR>
-</TBODY>
-</TABLE>
-<P>It also understands <TT CLASS="docutils literal"><SPAN CLASS="pre">NaN</SPAN></TT>, <TT CLASS="docutils literal"><SPAN CLASS="pre">Infinity</SPAN></TT>, and <TT CLASS="docutils literal"><SPAN CLASS="pre">-Infinity</SPAN></TT> as
-their corresponding <TT CLASS="docutils literal"><SPAN CLASS="pre">float</SPAN></TT> values, which is outside the JSON spec.</P>
-
-
-
- <P CLASS="note">
- This class contains <A HREF="class-simplejson.JSONDecoder.html#members">
- 4 members</A>.
- </P>
- </DIV>
- </DIV>
-
-
-
- <P>
- <SMALL>
-
-
- See
- <A HREF="simplejson/__init__.py.html" TITLE="simplejson/__init__.py:0">the source</A>
- for more information.
- </SMALL>
- </P>
-
-</DIV>
-
- <DIV ID="footer">
-
- <P ID="pudge">
- Built with
- <A HREF="http://lesscode.org/projects/pudge/">
- Pudge/0.1.3</A>
- </P>
-
-
- </DIV>
- </DIV>
- </BODY>
-
-</HTML> \ No newline at end of file
diff --git a/docs/pudge.css b/docs/pudge.css
deleted file mode 100644
index b370217..0000000
--- a/docs/pudge.css
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Layout
------------------------------------ */
-
-@import url("rst.css");
-
-/* Pudge Elements
------------------------------------ */
-.note { font-size: 90% }
-h4.pudge-member-name {
- font-size: 110%;
- margin-bottom: 0;
-}
-h4.pudge-member-name a.obj-link {
- font-weight: bold;
- text-decoration: none;
-}
-h4.pudge-member-name .prefix {
- font-style: oblique;
- padding-right: 6px;
- font-weight: bold;
- color: #c9c;
-}
-h1.pudge-member-page-heading {
- font-size: 250%;
-}
-h4.pudge-member-page-subheading {
- font-size: 150%;
- font-style: italic;
-}
-h4.pudge-member-page-subheading p {
- display: inline;
-}
-div.pudge-member {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-ul.pudge-module-index {
- margin-left: 0;
- padding-left: 0;
-}
-ul.pudge-module-index ul {
- padding-left: 1.5em;
- margin-left: 0;
-}
-ul.pudge-module-index li {
- list-style-type: none;
-}
-ul.pudge-module-index .prefix {
- font-style: oblique;
- padding-right: 6px;
- font-size: 90%;
- font-weight: bold;
- color: purple;
-}
-ul.pudge-module-index a {
- text-decoration: none;
-}
-div.pudge-section {
- margin-left: 2em;
-} \ No newline at end of file
diff --git a/docs/rst.css b/docs/rst.css
deleted file mode 100644
index f48c723..0000000
--- a/docs/rst.css
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Headings
- ------------------------------- */
-
-.rst h1 { font-size: 110% }
-.rst h2 { font-size: 100% }
-
-/*.rst-doc h1 { font-size: 200% }
-.rst-doc h2 { font-size: 140% }
-.rst-doc h3 { font-size: 110% }*/
-.rst-doc h1.title { font-size: 220% }
-.rst-doc h1 a, .rst-doc h2 a, .rst-doc h3 a {
- color: inherit ;
- font-weight: inherit;
- text-decoration: inherit;
-}
-
-/* Blockquotes
- ------------------------------- */
-
-.rst blockquote,
-.rst-doc blockquote {
- font-style: italic;
- font-family: Georgia, serif;
- max-width: 30em;
-}
-
-/* Document Info
- ------------------------------- */
-.rst-doc table.docinfo {
- margin: 2em 0
- width: 100%;
-}
-.rst-doc table.docinfo th {
- text-align: left ;
- padding-right: 2em;
- color: #555;
-}
-.rst-doc table.docinfo td {
- text-align: left
-}
-
-/* Field Lists
- ------------------------------- */
-
-.rst table.field-list,
-.rst-doc table.field-list {
- border: 0;
- margin-left: 0;
-}
-.rst table.field-list ul,
-.rst-doc table.field-list ul {
- margin-left: 0;
-}
-.rst-doc table.field-list ul {
- border: 0;
- margin-left: 2em;
- background: #fff;
- color: #119;
-}
-
-/* Tables
- ------------------------------- */
-
-.rst table.docutils,
-.rst-doc table.docutils {
- border: 0;
-}
-.rst table.docutils th,
-.rst-doc table.docutils th {
- border: 0;
- background: #777;
- color: #fff;
- padding: 3px;
-}
-.rst table.docutils td,
-.rst-doc table.docutils td {
- border: 0;
- border-bottom: 1px solid #ccc;
- padding-bottom: 2px;
-}
-
-/* Contents and Back References
- ------------------------------- */
-
-.rst-doc div.contents {
- margin: 2em inherit;
-}
-.rst-doc div.contents ul {
- margin-left: 0;
- padding-left: 2em;
- line-height: 150%;
-}
-.rst-doc div.contents ul li {
- font-weight: bold;
- list-style-type: none;
-}
-.rst-doc div.contents p.topic-title {
- font-size: 160%;
- font-weight: normal;
- color: #555;
- margin-top: .5em;
-}
-.rst-doc .contents .reference,
-.rst-doc .toc-backref {
- text-decoration: none;
-}
-
-/* Admonitions
- ------------------------------- */
-
-.rst-doc div.admonition,
-.rst-doc div.warning,
-.rst-doc div.note {
- margin: 2.5em 6em;
- padding: .6em 2.5em;
- background: #ddf;
- border: 2px solid #ccc;
- font-family: Georgia, serif;
- color: #333;
-}
-.rst-doc div.warning {
- background: #ff8;
- border-color: #fe2;
-}
-.rst-doc div .admonition-title {
- font-weight: bold;
- font-style: italic;
- color: #223;
- font-size: 110%;
- font-family: sans-serif;
-}
-
-/* Misc
- ------------------------------- */
-
-tt.literal {
- color: #333;
-}
-.footnote-reference {
- vertical-align: super;
- font-size: 20%;
-} \ No newline at end of file
diff --git a/docs/search.html b/docs/search.html
new file mode 100644
index 0000000..4d2e4f1
--- /dev/null
+++ b/docs/search.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Search &mdash; simlejson v2.0.0 documentation</title>
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '2.0.0',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html'
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/interface.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="contents" title="Global table of contents" href="contents.html" />
+ <link rel="index" title="Global index" href="genindex.html" />
+ <link rel="search" title="Search" href="" />
+ <link rel="top" title="simlejson v2.0.0 documentation" href="index.html" />
+ <script type="text/javascript" src="_static/searchtools.js"></script>
+
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <h1 id="search-documentation">Search</h1>
+ <p>
+ From here you can search these documents. Enter your search
+ words into the box below and click "search". Note that the search
+ function will automatically search for all of the words. Pages
+ containing less words won't appear in the result list.
+ </p>
+ <form action="" method="get">
+ <input type="text" name="q" value="" />
+ <input type="submit" value="search" />
+ </form>
+
+ <div id="search-results">
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">simlejson v2.0.0 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2008, Bob Ippolito.
+ Last updated on Sep 26, 2008.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/docs/searchindex.json b/docs/searchindex.json
new file mode 100644
index 0000000..7788f80
--- /dev/null
+++ b/docs/searchindex.json
@@ -0,0 +1 @@
+[["index"],["<tt class=\"docutils literal\"><span class=\"pre\">simplejson</span></tt> &#8212; JSON encoder and decoder"],{"represent":[0],"all":[0],"skip":[0],"interchang":[0],"signific":[0],"follow":[0],"compact":[0],"typeerror":[0],"tt":[0],"decim":[0],"0":[0],"spec":[0],"isinst":[0],"liter":[0],"everi":[0],"string":[0],"raw_decod":[0],"fals":[0],"jsonencod":[0],"level":[0],"list":[0],"iter":[0],"try":[0],"item":[0],"prevent":[0],"pass":[0],"compat":[0],"index":[0],"compar":[0],"neg":[0],"current":[0],"version":[0],"method":[0],"item_separ":[0],"elimin":[0],"valu":[0],"num_str":[0],"prior":[0],"implement":[0],"modul":[0],"api":[0],"coercion":[0],"select":[0],"highli":[0],"from":[0],"would":[0],"to":[0],"call":[0],"6":[0],"type":[0],"sort":[0],"must":[0],"none":[0],"bigobject":[0],"work":[0],"skipkei":[0],"wors":[0],"can":[0],"def":[0],"overrid":[0],"stream":[0],"lightweight":[0],"serial":[0],"end":[0],"newlin":[0],"anoth":[0],"1":[0],"instead":[0],"simpl":[0],"circular":[0],"fp":[0],"recogn":[0],"mai":[0],"such":[0],"data":[0],"a":[0],"attempt":[0],"correspond":[0],"or":[0],"caus":[0],"maintain":[0],"so":[0],"allow":[0],"becaus":[0],"hierarchi":[0],"write":[0],"better":[0],"yaml":[0],"then":[0],"non":[0],"return":[0],"thei":[0],"python":[0],"safe":[0],"dai":[0],"not":[0],"jsondecod":[0],"superset":[0],"name":[0],"edit":[0],"separ":[0],"getvalu":[0],"each":[0],"unicod":[0],"2j":[0],"mean":[0],"subset":[0],"chunk":[0],"ensur":[0],"expect":[0],"special":[0],"out":[0],"3rd":[0],"content":[0],"7":[0],"print":[0],"infin":[0],"standard":[0],"base":[0],"dictionari":[0],"element":[0],"org":[0],"basi":[0],"indent":[0],"g":[0],"could":[0],"place":[0],"outsid":[0],"regress":[0],"first":[0],"rang":[0],"arrai":[0],"number":[0],"echo":[0],"given":[0],"their":[0],"2":[0],"1j":[0],"shell":[0],"option":[0],"that":[0],"tool":[0],"specifi":[0],"than":[0],"b":[0],"keyword":[0],"whenev":[0],"provid":[0],"structur":[0],"charact":[0],"str":[0],"pre":[0],"ani":[0],"have":[0],"null":[0],"equival":[0],"self":[0],"note":[0],"also":[0],"without":[0],"take":[0],"which":[0],"even":[0],"begin":[0],"unless":[0],"normal":[0],"object":[0],"most":[0],"getread":[0],"class":[0],"marshal":[0],"kw":[0],"determin":[0],"serializ":[0],"speedup":[0],"syntax":[0],"onli":[0],"explicitli":[0],"parse_float":[0],"pretti":[0],"with":[0],"3":[0],"should":[0],"iterencod":[0],"dict":[0],"8":[0],"object_hook":[0],"get":[0],"familiar":[0],"fastest":[0],"key_separ":[0],"bar":[0],"baz":[0],"yield":[0],"contain":[0],"where":[0],"valid":[0],"set":[0],"dump":[0],"datatyp":[0],"result":[0],"best":[0],"subject":[0],"infinit":[0],"extend":[0],"dict_separ":[0],"written":[0],"import":[0],"latin":[0],"kei":[0],"parse_const":[0],"javascript":[0],"extens":[0],"addit":[0],"c":[0],"s":[0],"instanc":[0],"ecma":[0],"load":[0],"and":[0],"simpli":[0],"cl":[0],"8212":[0],"rpc":[0],"getwrit":[0],"__complex__":[0],"json":[0],"much":[0],"interpret":[0],"basic":[0],"valueerror":[0],"imag":[0],"argument":[0],"understand":[0],"func":[0],"input":[0],"sort_kei":[0],"x08ar":[0],"properti":[0],"will":[0],"behavior":[0],"error":[0],"advantag":[0],"is":[0],"it":[0],"kwarg":[0],"io":[0],"in":[0],"incom":[0],"ascii":[0],"if":[0],"u1234":[0],"perform":[0],"same":[0],"member":[0],"complex":[0],"decod":[0],"document":[0],"http":[0],"optim":[0],"effect":[0],"rais":[0],"user":[0],"extern":[0],"appropri":[0],"well":[0],"pickl":[0],"exampl":[0],"thi":[0],"the":[0],"mysocket":[0],"allow_nan":[0],"as_complex":[0],"parse_int":[0],"expos":[0],"hint":[0],"except":[0],"other":[0],"4":[0],"els":[0],"real":[0],"msimplejson":[0],"format":[0],"read":[0],"262":[0],"recurs":[0],"insert":[0],"like":[0],"specif":[0],"whitespac":[0],"docutil":[0],"arbitrari":[0],"integ":[0],"t":[0],"output":[0],"encount":[0],"some":[0],"check_circular":[0],"superclass":[0],"guarante":[0],"5":[0],"librari":[0],"for":[0],"subclass":[0],"when":[0],"leav":[0],"foo":[0],"refer":[0],"be":[0],"usag":[0],"dct":[0],"by":[0],"on":[0],"obj":[0],"column":[0],"of":[0],"o":[0],"constructor":[0],"produc":[0],"into":[0],"float":[0],"encod":[0],"wrap":[0],"span":[0],"complianc":[0],"support":[0],"transform":[0],"long":[0],"custom":[0],"avail":[0],"strict":[0],"compliant":[0],"overflowerror":[0],"function":[0],"simplejson":[0],"tupl":[0],"but":[0],"translat":[0],"line":[0],"ha":[0],"true":[0],"notat":[0],"utf":[0],"consist":[0],"possibl":[0],"default":[0],"us":[0],"otherwis":[0],"ensure_ascii":[0],"uc":[0],"featur":[0],"int":[0],"dure":[0],"parser":[0],"an":[0],"char":[0],"as":[0],"ar":[0],"at":[0],"file":[0],"inf":[0],"check":[0],"no":[0],"complexencod":[0],"nan":[0],"invalid":[0],"codec":[0],"bool":[0],"test":[0],"you":[0],"deseri":[0],"stringio":[0],"e":[0],"extran":[0],"rule":[0],"u":[0],"escap":[0]}] \ No newline at end of file
diff --git a/docs/simplejson/__init__.py.html b/docs/simplejson/__init__.py.html
deleted file mode 100644
index 6b0d0bc..0000000
--- a/docs/simplejson/__init__.py.html
+++ /dev/null
@@ -1,472 +0,0 @@
-<html><head><title>/Users/bob/src/simplejson/simplejson/__init__.py</title>
- <script type="text/javascript"><!--
-
-function show_line_range() {
- var href = document.location.href;
- if (href.indexOf('?') == -1) {
- return;
- }
- var qs = href.substring(href.indexOf('?')+1);
- if (qs.indexOf('#') >= 0) {
- qs = qs.substring(0, qs.indexOf('#'));
- }
- var first = qs.match(/f=(\d+)/)[1];
- var last = qs.match(/l=(\d+)/)[1];
- if (! first || ! last) {
- return;
- }
- var anchors = document.getElementsByTagName('A');
- var container = document.createElement('DIV');
- container.className = 'highlighted';
- var children = [];
- var start = null;
- var parent = null;
- var highlight = false;
- for (var i = 0; i < anchors.length; i++) {
- var el = anchors[i];
- if (el.getAttribute('name') == first) {
- start = el.previousSibling;
- parent = el.parentNode;
- highlight = true;
- }
- if (el.getAttribute('name') == last) {
- break;
- }
- if (highlight) {
- children[children.length] = el;
- el = el.nextSibling;
- while (el && el.tagName != 'A') {
- children[children.length] = el;
- el = el.nextSibling;
- }
- }
- }
- for (i=0; i<children.length; i++) {
- container.appendChild(children[i]);
- }
- if (start) {
- start.parentNode.insertBefore(container, start.nextSibling);
- } else {
- parent.insertBefore(container, parent.childNodes[0]);
- }
-}
-
- // --></script>
- <style>
- div.python {
- color: #333
- }
- div.python a.lnum {
- color: #555;
- background-color: #eee;
- border-right: 1px solid #999;
- padding-right: 2px;
- margin-right: 4px;
- }
- div.python span.comment { color: #933 }
- div.python span.keyword { color: #a3e; font-weight: bold }
- div.python span.op { color: #c96 }
- div.python span.string { color: #6a6 }
- div.python span.name { }
- div.python span.text { color: #333 }
- div.highlighted { background-color: #ff9; border: 1px solid #009 }
- </style></head><body onload="show_line_range()"><div class="python"><code><a class="lnum" href="#1" name="1">0001</a><span class="string">r"""</span><br />
-<a class="lnum" href="#2" name="2">0002</a><span class="string">A&#0160;simple,&#0160;fast,&#0160;extensible&#0160;JSON&#0160;encoder&#0160;and&#0160;decoder</span><br />
-<a class="lnum" href="#3" name="3">0003</a><span class="string"></span><br />
-<a class="lnum" href="#4" name="4">0004</a><span class="string">JSON&#0160;(JavaScript&#0160;Object&#0160;Notation)&#0160;&lt;http://json.org&gt;&#0160;is&#0160;a&#0160;subset&#0160;of</span><br />
-<a class="lnum" href="#5" name="5">0005</a><span class="string">JavaScript&#0160;syntax&#0160;(ECMA-262&#0160;3rd&#0160;edition)&#0160;used&#0160;as&#0160;a&#0160;lightweight&#0160;data</span><br />
-<a class="lnum" href="#6" name="6">0006</a><span class="string">interchange&#0160;format.</span><br />
-<a class="lnum" href="#7" name="7">0007</a><span class="string"></span><br />
-<a class="lnum" href="#8" name="8">0008</a><span class="string">simplejson&#0160;exposes&#0160;an&#0160;API&#0160;familiar&#0160;to&#0160;uses&#0160;of&#0160;the&#0160;standard&#0160;library</span><br />
-<a class="lnum" href="#9" name="9">0009</a><span class="string">marshal&#0160;and&#0160;pickle&#0160;modules.</span><br />
-<a class="lnum" href="#10" name="10">0010</a><span class="string"></span><br />
-<a class="lnum" href="#11" name="11">0011</a><span class="string">Encoding&#0160;basic&#0160;Python&#0160;object&#0160;hierarchies::</span><br />
-<a class="lnum" href="#12" name="12">0012</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#13" name="13">0013</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#14" name="14">0014</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.dumps(['foo',&#0160;{'bar':&#0160;('baz',&#0160;None,&#0160;1.0,&#0160;2)}])</span><br />
-<a class="lnum" href="#15" name="15">0015</a><span class="string">&#0160;&#0160;&#0160;&#0160;'["foo",&#0160;{"bar":&#0160;["baz",&#0160;null,&#0160;1.0,&#0160;2]}]'</span><br />
-<a class="lnum" href="#16" name="16">0016</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;print&#0160;simplejson.dumps("\"foo\bar")</span><br />
-<a class="lnum" href="#17" name="17">0017</a><span class="string">&#0160;&#0160;&#0160;&#0160;"\"foo\bar"</span><br />
-<a class="lnum" href="#18" name="18">0018</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;print&#0160;simplejson.dumps(u'\u1234')</span><br />
-<a class="lnum" href="#19" name="19">0019</a><span class="string">&#0160;&#0160;&#0160;&#0160;"\u1234"</span><br />
-<a class="lnum" href="#20" name="20">0020</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;print&#0160;simplejson.dumps('\\')</span><br />
-<a class="lnum" href="#21" name="21">0021</a><span class="string">&#0160;&#0160;&#0160;&#0160;"\\"</span><br />
-<a class="lnum" href="#22" name="22">0022</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;print&#0160;simplejson.dumps({"c":&#0160;0,&#0160;"b":&#0160;0,&#0160;"a":&#0160;0},&#0160;sort_keys=True)</span><br />
-<a class="lnum" href="#23" name="23">0023</a><span class="string">&#0160;&#0160;&#0160;&#0160;{"a":&#0160;0,&#0160;"b":&#0160;0,&#0160;"c":&#0160;0}</span><br />
-<a class="lnum" href="#24" name="24">0024</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;from&#0160;StringIO&#0160;import&#0160;StringIO</span><br />
-<a class="lnum" href="#25" name="25">0025</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;io&#0160;=&#0160;StringIO()</span><br />
-<a class="lnum" href="#26" name="26">0026</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.dump(['streaming&#0160;API'],&#0160;io)</span><br />
-<a class="lnum" href="#27" name="27">0027</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;io.getvalue()</span><br />
-<a class="lnum" href="#28" name="28">0028</a><span class="string">&#0160;&#0160;&#0160;&#0160;'["streaming&#0160;API"]'</span><br />
-<a class="lnum" href="#29" name="29">0029</a><span class="string"></span><br />
-<a class="lnum" href="#30" name="30">0030</a><span class="string">Compact&#0160;encoding::</span><br />
-<a class="lnum" href="#31" name="31">0031</a><span class="string"></span><br />
-<a class="lnum" href="#32" name="32">0032</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#33" name="33">0033</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.dumps([1,2,3,{'4':&#0160;5,&#0160;'6':&#0160;7}],&#0160;separators=(',',':'))</span><br />
-<a class="lnum" href="#34" name="34">0034</a><span class="string">&#0160;&#0160;&#0160;&#0160;'[1,2,3,{"4":5,"6":7}]'</span><br />
-<a class="lnum" href="#35" name="35">0035</a><span class="string"></span><br />
-<a class="lnum" href="#36" name="36">0036</a><span class="string">Pretty&#0160;printing::</span><br />
-<a class="lnum" href="#37" name="37">0037</a><span class="string"></span><br />
-<a class="lnum" href="#38" name="38">0038</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#39" name="39">0039</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;print&#0160;simplejson.dumps({'4':&#0160;5,&#0160;'6':&#0160;7},&#0160;sort_keys=True,&#0160;indent=4)</span><br />
-<a class="lnum" href="#40" name="40">0040</a><span class="string">&#0160;&#0160;&#0160;&#0160;{</span><br />
-<a class="lnum" href="#41" name="41">0041</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"4":&#0160;5,&#0160;</span><br />
-<a class="lnum" href="#42" name="42">0042</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"6":&#0160;7</span><br />
-<a class="lnum" href="#43" name="43">0043</a><span class="string">&#0160;&#0160;&#0160;&#0160;}</span><br />
-<a class="lnum" href="#44" name="44">0044</a><span class="string"></span><br />
-<a class="lnum" href="#45" name="45">0045</a><span class="string">Decoding&#0160;JSON::</span><br />
-<a class="lnum" href="#46" name="46">0046</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#47" name="47">0047</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#48" name="48">0048</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.loads('["foo",&#0160;{"bar":["baz",&#0160;null,&#0160;1.0,&#0160;2]}]')</span><br />
-<a class="lnum" href="#49" name="49">0049</a><span class="string">&#0160;&#0160;&#0160;&#0160;[u'foo',&#0160;{u'bar':&#0160;[u'baz',&#0160;None,&#0160;1.0,&#0160;2]}]</span><br />
-<a class="lnum" href="#50" name="50">0050</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.loads('"\\"foo\\bar"')</span><br />
-<a class="lnum" href="#51" name="51">0051</a><span class="string">&#0160;&#0160;&#0160;&#0160;u'"foo\x08ar'</span><br />
-<a class="lnum" href="#52" name="52">0052</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;from&#0160;StringIO&#0160;import&#0160;StringIO</span><br />
-<a class="lnum" href="#53" name="53">0053</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;io&#0160;=&#0160;StringIO('["streaming&#0160;API"]')</span><br />
-<a class="lnum" href="#54" name="54">0054</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.load(io)</span><br />
-<a class="lnum" href="#55" name="55">0055</a><span class="string">&#0160;&#0160;&#0160;&#0160;[u'streaming&#0160;API']</span><br />
-<a class="lnum" href="#56" name="56">0056</a><span class="string"></span><br />
-<a class="lnum" href="#57" name="57">0057</a><span class="string">Specializing&#0160;JSON&#0160;object&#0160;decoding::</span><br />
-<a class="lnum" href="#58" name="58">0058</a><span class="string"></span><br />
-<a class="lnum" href="#59" name="59">0059</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#60" name="60">0060</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;def&#0160;as_complex(dct):</span><br />
-<a class="lnum" href="#61" name="61">0061</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;if&#0160;'__complex__'&#0160;in&#0160;dct:</span><br />
-<a class="lnum" href="#62" name="62">0062</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;complex(dct['real'],&#0160;dct['imag'])</span><br />
-<a class="lnum" href="#63" name="63">0063</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;dct</span><br />
-<a class="lnum" href="#64" name="64">0064</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;</span><br />
-<a class="lnum" href="#65" name="65">0065</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.loads('{"__complex__":&#0160;true,&#0160;"real":&#0160;1,&#0160;"imag":&#0160;2}',</span><br />
-<a class="lnum" href="#66" name="66">0066</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;object_hook=as_complex)</span><br />
-<a class="lnum" href="#67" name="67">0067</a><span class="string">&#0160;&#0160;&#0160;&#0160;(1+2j)</span><br />
-<a class="lnum" href="#68" name="68">0068</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;decimal</span><br />
-<a class="lnum" href="#69" name="69">0069</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;simplejson.loads('1.1',&#0160;parse_float=decimal.Decimal)</span><br />
-<a class="lnum" href="#70" name="70">0070</a><span class="string">&#0160;&#0160;&#0160;&#0160;Decimal("1.1")</span><br />
-<a class="lnum" href="#71" name="71">0071</a><span class="string"></span><br />
-<a class="lnum" href="#72" name="72">0072</a><span class="string">Extending&#0160;JSONEncoder::</span><br />
-<a class="lnum" href="#73" name="73">0073</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#74" name="74">0074</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;import&#0160;simplejson</span><br />
-<a class="lnum" href="#75" name="75">0075</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;class&#0160;ComplexEncoder(simplejson.JSONEncoder):</span><br />
-<a class="lnum" href="#76" name="76">0076</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;def&#0160;default(self,&#0160;obj):</span><br />
-<a class="lnum" href="#77" name="77">0077</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;if&#0160;isinstance(obj,&#0160;complex):</span><br />
-<a class="lnum" href="#78" name="78">0078</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;[obj.real,&#0160;obj.imag]</span><br />
-<a class="lnum" href="#79" name="79">0079</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;simplejson.JSONEncoder.default(self,&#0160;obj)</span><br />
-<a class="lnum" href="#80" name="80">0080</a><span class="string">&#0160;&#0160;&#0160;&#0160;...&#0160;</span><br />
-<a class="lnum" href="#81" name="81">0081</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;dumps(2&#0160;+&#0160;1j,&#0160;cls=ComplexEncoder)</span><br />
-<a class="lnum" href="#82" name="82">0082</a><span class="string">&#0160;&#0160;&#0160;&#0160;'[2.0,&#0160;1.0]'</span><br />
-<a class="lnum" href="#83" name="83">0083</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;ComplexEncoder().encode(2&#0160;+&#0160;1j)</span><br />
-<a class="lnum" href="#84" name="84">0084</a><span class="string">&#0160;&#0160;&#0160;&#0160;'[2.0,&#0160;1.0]'</span><br />
-<a class="lnum" href="#85" name="85">0085</a><span class="string">&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;list(ComplexEncoder().iterencode(2&#0160;+&#0160;1j))</span><br />
-<a class="lnum" href="#86" name="86">0086</a><span class="string">&#0160;&#0160;&#0160;&#0160;['[',&#0160;'2.0',&#0160;',&#0160;',&#0160;'1.0',&#0160;']']</span><br />
-<a class="lnum" href="#87" name="87">0087</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#88" name="88">0088</a><span class="string"></span><br />
-<a class="lnum" href="#89" name="89">0089</a><span class="string">Using&#0160;simplejson&#0160;from&#0160;the&#0160;shell&#0160;to&#0160;validate&#0160;and</span><br />
-<a class="lnum" href="#90" name="90">0090</a><span class="string">pretty-print::</span><br />
-<a class="lnum" href="#91" name="91">0091</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#92" name="92">0092</a><span class="string">&#0160;&#0160;&#0160;&#0160;$&#0160;echo&#0160;'{"json":"obj"}'&#0160;|&#0160;python&#0160;-msimplejson</span><br />
-<a class="lnum" href="#93" name="93">0093</a><span class="string">&#0160;&#0160;&#0160;&#0160;{</span><br />
-<a class="lnum" href="#94" name="94">0094</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"json":&#0160;"obj"</span><br />
-<a class="lnum" href="#95" name="95">0095</a><span class="string">&#0160;&#0160;&#0160;&#0160;}</span><br />
-<a class="lnum" href="#96" name="96">0096</a><span class="string">&#0160;&#0160;&#0160;&#0160;$&#0160;echo&#0160;'{&#0160;1.2:3.4}'&#0160;|&#0160;python&#0160;-msimplejson</span><br />
-<a class="lnum" href="#97" name="97">0097</a><span class="string">&#0160;&#0160;&#0160;&#0160;Expecting&#0160;property&#0160;name:&#0160;line&#0160;1&#0160;column&#0160;2&#0160;(char&#0160;2)</span><br />
-<a class="lnum" href="#98" name="98">0098</a><span class="string"></span><br />
-<a class="lnum" href="#99" name="99">0099</a><span class="string">Note&#0160;that&#0160;the&#0160;JSON&#0160;produced&#0160;by&#0160;this&#0160;module's&#0160;default&#0160;settings</span><br />
-<a class="lnum" href="#100" name="100">0100</a><span class="string">is&#0160;a&#0160;subset&#0160;of&#0160;YAML,&#0160;so&#0160;it&#0160;may&#0160;be&#0160;used&#0160;as&#0160;a&#0160;serializer&#0160;for&#0160;that&#0160;as&#0160;well.</span><br />
-<a class="lnum" href="#101" name="101">0101</a><span class="string">"""</span><br />
-<a class="lnum" href="#102" name="102">0102</a><span class="name">__version__</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'1.9'</span><br />
-<a class="lnum" href="#103" name="103">0103</a><span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><br />
-<a class="lnum" href="#104" name="104">0104</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'dump'</span><span class="op">,</span>&#0160;<span class="string">'dumps'</span><span class="op">,</span>&#0160;<span class="string">'load'</span><span class="op">,</span>&#0160;<span class="string">'loads'</span><span class="op">,</span><br />
-<a class="lnum" href="#105" name="105">0105</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'JSONDecoder'</span><span class="op">,</span>&#0160;<span class="string">'JSONEncoder'</span><span class="op">,</span><br />
-<a class="lnum" href="#106" name="106">0106</a><span class="op">]</span><br />
-<a class="lnum" href="#107" name="107">0107</a><br />
-<a class="lnum" href="#108" name="108">0108</a><span class="keyword">if</span>&#0160;<span class="name">__name__</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'__main__'</span><span class="op">:</span><br />
-<a class="lnum" href="#109" name="109">0109</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">simplejson</span><span class="op">.</span><span class="name">decoder</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">JSONDecoder</span><br />
-<a class="lnum" href="#110" name="110">0110</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">simplejson</span><span class="op">.</span><span class="name">encoder</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">JSONEncoder</span><br />
-<a class="lnum" href="#111" name="111">0111</a><span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#112" name="112">0112</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">decoder</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">JSONDecoder</span><br />
-<a class="lnum" href="#113" name="113">0113</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">encoder</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">JSONEncoder</span><br />
-<a class="lnum" href="#114" name="114">0114</a><br />
-<a class="lnum" href="#115" name="115">0115</a><span class="name">_default_encoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONEncoder</span><span class="op">(</span><br />
-<a class="lnum" href="#116" name="116">0116</a>&#0160;&#0160;&#0160;&#0160;<span class="name">skipkeys</span><span class="op">=</span><span class="name">False</span><span class="op">,</span><br />
-<a class="lnum" href="#117" name="117">0117</a>&#0160;&#0160;&#0160;&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#118" name="118">0118</a>&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#119" name="119">0119</a>&#0160;&#0160;&#0160;&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#120" name="120">0120</a>&#0160;&#0160;&#0160;&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#121" name="121">0121</a>&#0160;&#0160;&#0160;&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#122" name="122">0122</a>&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span><span class="op">=</span><span class="string">'utf-8'</span><span class="op">,</span><br />
-<a class="lnum" href="#123" name="123">0123</a>&#0160;&#0160;&#0160;&#0160;<span class="name">default</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#124" name="124">0124</a><span class="op">)</span><br />
-<a class="lnum" href="#125" name="125">0125</a><br />
-<a class="lnum" href="#126" name="126">0126</a><span class="keyword">def</span>&#0160;<span class="name">dump</span><span class="op">(</span><span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">fp</span><span class="op">,</span>&#0160;<span class="name">skipkeys</span><span class="op">=</span><span class="name">False</span><span class="op">,</span>&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#127" name="127">0127</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">cls</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#128" name="128">0128</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span><span class="op">=</span><span class="string">'utf-8'</span><span class="op">,</span>&#0160;<span class="name">default</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#129" name="129">0129</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#130" name="130">0130</a><span class="string">&#0160;&#0160;&#0160;&#0160;Serialize&#0160;``obj``&#0160;as&#0160;a&#0160;JSON&#0160;formatted&#0160;stream&#0160;to&#0160;``fp``&#0160;(a</span><br />
-<a class="lnum" href="#131" name="131">0131</a><span class="string">&#0160;&#0160;&#0160;&#0160;``.write()``-supporting&#0160;file-like&#0160;object).</span><br />
-<a class="lnum" href="#132" name="132">0132</a><span class="string"></span><br />
-<a class="lnum" href="#133" name="133">0133</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``skipkeys``&#0160;is&#0160;``True``&#0160;then&#0160;``dict``&#0160;keys&#0160;that&#0160;are&#0160;not&#0160;basic&#0160;types</span><br />
-<a class="lnum" href="#134" name="134">0134</a><span class="string">&#0160;&#0160;&#0160;&#0160;(``str``,&#0160;``unicode``,&#0160;``int``,&#0160;``long``,&#0160;``float``,&#0160;``bool``,&#0160;``None``)&#0160;</span><br />
-<a class="lnum" href="#135" name="135">0135</a><span class="string">&#0160;&#0160;&#0160;&#0160;will&#0160;be&#0160;skipped&#0160;instead&#0160;of&#0160;raising&#0160;a&#0160;``TypeError``.</span><br />
-<a class="lnum" href="#136" name="136">0136</a><span class="string"></span><br />
-<a class="lnum" href="#137" name="137">0137</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``ensure_ascii``&#0160;is&#0160;``False``,&#0160;then&#0160;the&#0160;some&#0160;chunks&#0160;written&#0160;to&#0160;``fp``</span><br />
-<a class="lnum" href="#138" name="138">0138</a><span class="string">&#0160;&#0160;&#0160;&#0160;may&#0160;be&#0160;``unicode``&#0160;instances,&#0160;subject&#0160;to&#0160;normal&#0160;Python&#0160;``str``&#0160;to</span><br />
-<a class="lnum" href="#139" name="139">0139</a><span class="string">&#0160;&#0160;&#0160;&#0160;``unicode``&#0160;coercion&#0160;rules.&#0160;Unless&#0160;``fp.write()``&#0160;explicitly</span><br />
-<a class="lnum" href="#140" name="140">0140</a><span class="string">&#0160;&#0160;&#0160;&#0160;understands&#0160;``unicode``&#0160;(as&#0160;in&#0160;``codecs.getwriter()``)&#0160;this&#0160;is&#0160;likely</span><br />
-<a class="lnum" href="#141" name="141">0141</a><span class="string">&#0160;&#0160;&#0160;&#0160;to&#0160;cause&#0160;an&#0160;error.</span><br />
-<a class="lnum" href="#142" name="142">0142</a><span class="string"></span><br />
-<a class="lnum" href="#143" name="143">0143</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``check_circular``&#0160;is&#0160;``False``,&#0160;then&#0160;the&#0160;circular&#0160;reference&#0160;check</span><br />
-<a class="lnum" href="#144" name="144">0144</a><span class="string">&#0160;&#0160;&#0160;&#0160;for&#0160;container&#0160;types&#0160;will&#0160;be&#0160;skipped&#0160;and&#0160;a&#0160;circular&#0160;reference&#0160;will</span><br />
-<a class="lnum" href="#145" name="145">0145</a><span class="string">&#0160;&#0160;&#0160;&#0160;result&#0160;in&#0160;an&#0160;``OverflowError``&#0160;(or&#0160;worse).</span><br />
-<a class="lnum" href="#146" name="146">0146</a><span class="string"></span><br />
-<a class="lnum" href="#147" name="147">0147</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``allow_nan``&#0160;is&#0160;``False``,&#0160;then&#0160;it&#0160;will&#0160;be&#0160;a&#0160;``ValueError``&#0160;to</span><br />
-<a class="lnum" href="#148" name="148">0148</a><span class="string">&#0160;&#0160;&#0160;&#0160;serialize&#0160;out&#0160;of&#0160;range&#0160;``float``&#0160;values&#0160;(``nan``,&#0160;``inf``,&#0160;``-inf``)</span><br />
-<a class="lnum" href="#149" name="149">0149</a><span class="string">&#0160;&#0160;&#0160;&#0160;in&#0160;strict&#0160;compliance&#0160;of&#0160;the&#0160;JSON&#0160;specification,&#0160;instead&#0160;of&#0160;using&#0160;the</span><br />
-<a class="lnum" href="#150" name="150">0150</a><span class="string">&#0160;&#0160;&#0160;&#0160;JavaScript&#0160;equivalents&#0160;(``NaN``,&#0160;``Infinity``,&#0160;``-Infinity``).</span><br />
-<a class="lnum" href="#151" name="151">0151</a><span class="string"></span><br />
-<a class="lnum" href="#152" name="152">0152</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``indent``&#0160;is&#0160;a&#0160;non-negative&#0160;integer,&#0160;then&#0160;JSON&#0160;array&#0160;elements&#0160;and&#0160;object</span><br />
-<a class="lnum" href="#153" name="153">0153</a><span class="string">&#0160;&#0160;&#0160;&#0160;members&#0160;will&#0160;be&#0160;pretty-printed&#0160;with&#0160;that&#0160;indent&#0160;level.&#0160;An&#0160;indent&#0160;level</span><br />
-<a class="lnum" href="#154" name="154">0154</a><span class="string">&#0160;&#0160;&#0160;&#0160;of&#0160;0&#0160;will&#0160;only&#0160;insert&#0160;newlines.&#0160;``None``&#0160;is&#0160;the&#0160;most&#0160;compact&#0160;representation.</span><br />
-<a class="lnum" href="#155" name="155">0155</a><span class="string"></span><br />
-<a class="lnum" href="#156" name="156">0156</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``separators``&#0160;is&#0160;an&#0160;``(item_separator,&#0160;dict_separator)``&#0160;tuple</span><br />
-<a class="lnum" href="#157" name="157">0157</a><span class="string">&#0160;&#0160;&#0160;&#0160;then&#0160;it&#0160;will&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;the&#0160;default&#0160;``(',&#0160;',&#0160;':&#0160;')``&#0160;separators.</span><br />
-<a class="lnum" href="#158" name="158">0158</a><span class="string">&#0160;&#0160;&#0160;&#0160;``(',',&#0160;':')``&#0160;is&#0160;the&#0160;most&#0160;compact&#0160;JSON&#0160;representation.</span><br />
-<a class="lnum" href="#159" name="159">0159</a><span class="string"></span><br />
-<a class="lnum" href="#160" name="160">0160</a><span class="string">&#0160;&#0160;&#0160;&#0160;``encoding``&#0160;is&#0160;the&#0160;character&#0160;encoding&#0160;for&#0160;str&#0160;instances,&#0160;default&#0160;is&#0160;UTF-8.</span><br />
-<a class="lnum" href="#161" name="161">0161</a><span class="string"></span><br />
-<a class="lnum" href="#162" name="162">0162</a><span class="string">&#0160;&#0160;&#0160;&#0160;``default(obj)``&#0160;is&#0160;a&#0160;function&#0160;that&#0160;should&#0160;return&#0160;a&#0160;serializable&#0160;version</span><br />
-<a class="lnum" href="#163" name="163">0163</a><span class="string">&#0160;&#0160;&#0160;&#0160;of&#0160;obj&#0160;or&#0160;raise&#0160;TypeError.&#0160;The&#0160;default&#0160;simply&#0160;raises&#0160;TypeError.</span><br />
-<a class="lnum" href="#164" name="164">0164</a><span class="string"></span><br />
-<a class="lnum" href="#165" name="165">0165</a><span class="string">&#0160;&#0160;&#0160;&#0160;To&#0160;use&#0160;a&#0160;custom&#0160;``JSONEncoder``&#0160;subclass&#0160;(e.g.&#0160;one&#0160;that&#0160;overrides&#0160;the</span><br />
-<a class="lnum" href="#166" name="166">0166</a><span class="string">&#0160;&#0160;&#0160;&#0160;``.default()``&#0160;method&#0160;to&#0160;serialize&#0160;additional&#0160;types),&#0160;specify&#0160;it&#0160;with</span><br />
-<a class="lnum" href="#167" name="167">0167</a><span class="string">&#0160;&#0160;&#0160;&#0160;the&#0160;``cls``&#0160;kwarg.</span><br />
-<a class="lnum" href="#168" name="168">0168</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#169" name="169">0169</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;cached&#0160;encoder</span><br />
-<a class="lnum" href="#170" name="170">0170</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="op">(</span><span class="name">skipkeys</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">False</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">ensure_ascii</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#171" name="171">0171</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">allow_nan</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#172" name="172">0172</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">separators</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#173" name="173">0173</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'utf-8'</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">default</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#174" name="174">0174</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">iterable</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_default_encoder</span><span class="op">.</span><span class="name">iterencode</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#175" name="175">0175</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#176" name="176">0176</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#177" name="177">0177</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">cls</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONEncoder</span><br />
-<a class="lnum" href="#178" name="178">0178</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">iterable</span>&#0160;<span class="op">=</span>&#0160;<span class="name">cls</span><span class="op">(</span><span class="name">skipkeys</span><span class="op">=</span><span class="name">skipkeys</span><span class="op">,</span>&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">ensure_ascii</span><span class="op">,</span><br />
-<a class="lnum" href="#179" name="179">0179</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">check_circular</span><span class="op">,</span>&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">allow_nan</span><span class="op">,</span>&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">indent</span><span class="op">,</span><br />
-<a class="lnum" href="#180" name="180">0180</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">separators</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">encoding</span><span class="op">,</span><br />
-<a class="lnum" href="#181" name="181">0181</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">default</span><span class="op">=</span><span class="name">default</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">.</span><span class="name">iterencode</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#182" name="182">0182</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;could&#0160;accelerate&#0160;with&#0160;writelines&#0160;in&#0160;some&#0160;versions&#0160;of&#0160;Python,&#0160;at</span><br />
-<a class="lnum" href="#183" name="183">0183</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;a&#0160;debuggability&#0160;cost</span><br />
-<a class="lnum" href="#184" name="184">0184</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">iterable</span><span class="op">:</span><br />
-<a class="lnum" href="#185" name="185">0185</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">fp</span><span class="op">.</span><span class="name">write</span><span class="op">(</span><span class="name">chunk</span><span class="op">)</span><br />
-<a class="lnum" href="#186" name="186">0186</a><br />
-<a class="lnum" href="#187" name="187">0187</a><br />
-<a class="lnum" href="#188" name="188">0188</a><span class="keyword">def</span>&#0160;<span class="name">dumps</span><span class="op">(</span><span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">skipkeys</span><span class="op">=</span><span class="name">False</span><span class="op">,</span>&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#189" name="189">0189</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">cls</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#190" name="190">0190</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span><span class="op">=</span><span class="string">'utf-8'</span><span class="op">,</span>&#0160;<span class="name">default</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#191" name="191">0191</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#192" name="192">0192</a><span class="string">&#0160;&#0160;&#0160;&#0160;Serialize&#0160;``obj``&#0160;to&#0160;a&#0160;JSON&#0160;formatted&#0160;``str``.</span><br />
-<a class="lnum" href="#193" name="193">0193</a><span class="string"></span><br />
-<a class="lnum" href="#194" name="194">0194</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``skipkeys``&#0160;is&#0160;``True``&#0160;then&#0160;``dict``&#0160;keys&#0160;that&#0160;are&#0160;not&#0160;basic&#0160;types</span><br />
-<a class="lnum" href="#195" name="195">0195</a><span class="string">&#0160;&#0160;&#0160;&#0160;(``str``,&#0160;``unicode``,&#0160;``int``,&#0160;``long``,&#0160;``float``,&#0160;``bool``,&#0160;``None``)&#0160;</span><br />
-<a class="lnum" href="#196" name="196">0196</a><span class="string">&#0160;&#0160;&#0160;&#0160;will&#0160;be&#0160;skipped&#0160;instead&#0160;of&#0160;raising&#0160;a&#0160;``TypeError``.</span><br />
-<a class="lnum" href="#197" name="197">0197</a><span class="string"></span><br />
-<a class="lnum" href="#198" name="198">0198</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``ensure_ascii``&#0160;is&#0160;``False``,&#0160;then&#0160;the&#0160;return&#0160;value&#0160;will&#0160;be&#0160;a</span><br />
-<a class="lnum" href="#199" name="199">0199</a><span class="string">&#0160;&#0160;&#0160;&#0160;``unicode``&#0160;instance&#0160;subject&#0160;to&#0160;normal&#0160;Python&#0160;``str``&#0160;to&#0160;``unicode``</span><br />
-<a class="lnum" href="#200" name="200">0200</a><span class="string">&#0160;&#0160;&#0160;&#0160;coercion&#0160;rules&#0160;instead&#0160;of&#0160;being&#0160;escaped&#0160;to&#0160;an&#0160;ASCII&#0160;``str``.</span><br />
-<a class="lnum" href="#201" name="201">0201</a><span class="string"></span><br />
-<a class="lnum" href="#202" name="202">0202</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``check_circular``&#0160;is&#0160;``False``,&#0160;then&#0160;the&#0160;circular&#0160;reference&#0160;check</span><br />
-<a class="lnum" href="#203" name="203">0203</a><span class="string">&#0160;&#0160;&#0160;&#0160;for&#0160;container&#0160;types&#0160;will&#0160;be&#0160;skipped&#0160;and&#0160;a&#0160;circular&#0160;reference&#0160;will</span><br />
-<a class="lnum" href="#204" name="204">0204</a><span class="string">&#0160;&#0160;&#0160;&#0160;result&#0160;in&#0160;an&#0160;``OverflowError``&#0160;(or&#0160;worse).</span><br />
-<a class="lnum" href="#205" name="205">0205</a><span class="string"></span><br />
-<a class="lnum" href="#206" name="206">0206</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``allow_nan``&#0160;is&#0160;``False``,&#0160;then&#0160;it&#0160;will&#0160;be&#0160;a&#0160;``ValueError``&#0160;to</span><br />
-<a class="lnum" href="#207" name="207">0207</a><span class="string">&#0160;&#0160;&#0160;&#0160;serialize&#0160;out&#0160;of&#0160;range&#0160;``float``&#0160;values&#0160;(``nan``,&#0160;``inf``,&#0160;``-inf``)&#0160;in</span><br />
-<a class="lnum" href="#208" name="208">0208</a><span class="string">&#0160;&#0160;&#0160;&#0160;strict&#0160;compliance&#0160;of&#0160;the&#0160;JSON&#0160;specification,&#0160;instead&#0160;of&#0160;using&#0160;the</span><br />
-<a class="lnum" href="#209" name="209">0209</a><span class="string">&#0160;&#0160;&#0160;&#0160;JavaScript&#0160;equivalents&#0160;(``NaN``,&#0160;``Infinity``,&#0160;``-Infinity``).</span><br />
-<a class="lnum" href="#210" name="210">0210</a><span class="string"></span><br />
-<a class="lnum" href="#211" name="211">0211</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``indent``&#0160;is&#0160;a&#0160;non-negative&#0160;integer,&#0160;then&#0160;JSON&#0160;array&#0160;elements&#0160;and</span><br />
-<a class="lnum" href="#212" name="212">0212</a><span class="string">&#0160;&#0160;&#0160;&#0160;object&#0160;members&#0160;will&#0160;be&#0160;pretty-printed&#0160;with&#0160;that&#0160;indent&#0160;level.&#0160;An&#0160;indent</span><br />
-<a class="lnum" href="#213" name="213">0213</a><span class="string">&#0160;&#0160;&#0160;&#0160;level&#0160;of&#0160;0&#0160;will&#0160;only&#0160;insert&#0160;newlines.&#0160;``None``&#0160;is&#0160;the&#0160;most&#0160;compact</span><br />
-<a class="lnum" href="#214" name="214">0214</a><span class="string">&#0160;&#0160;&#0160;&#0160;representation.</span><br />
-<a class="lnum" href="#215" name="215">0215</a><span class="string"></span><br />
-<a class="lnum" href="#216" name="216">0216</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``separators``&#0160;is&#0160;an&#0160;``(item_separator,&#0160;dict_separator)``&#0160;tuple</span><br />
-<a class="lnum" href="#217" name="217">0217</a><span class="string">&#0160;&#0160;&#0160;&#0160;then&#0160;it&#0160;will&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;the&#0160;default&#0160;``(',&#0160;',&#0160;':&#0160;')``&#0160;separators.</span><br />
-<a class="lnum" href="#218" name="218">0218</a><span class="string">&#0160;&#0160;&#0160;&#0160;``(',',&#0160;':')``&#0160;is&#0160;the&#0160;most&#0160;compact&#0160;JSON&#0160;representation.</span><br />
-<a class="lnum" href="#219" name="219">0219</a><span class="string"></span><br />
-<a class="lnum" href="#220" name="220">0220</a><span class="string">&#0160;&#0160;&#0160;&#0160;``encoding``&#0160;is&#0160;the&#0160;character&#0160;encoding&#0160;for&#0160;str&#0160;instances,&#0160;default&#0160;is&#0160;UTF-8.</span><br />
-<a class="lnum" href="#221" name="221">0221</a><span class="string"></span><br />
-<a class="lnum" href="#222" name="222">0222</a><span class="string">&#0160;&#0160;&#0160;&#0160;``default(obj)``&#0160;is&#0160;a&#0160;function&#0160;that&#0160;should&#0160;return&#0160;a&#0160;serializable&#0160;version</span><br />
-<a class="lnum" href="#223" name="223">0223</a><span class="string">&#0160;&#0160;&#0160;&#0160;of&#0160;obj&#0160;or&#0160;raise&#0160;TypeError.&#0160;The&#0160;default&#0160;simply&#0160;raises&#0160;TypeError.</span><br />
-<a class="lnum" href="#224" name="224">0224</a><span class="string"></span><br />
-<a class="lnum" href="#225" name="225">0225</a><span class="string">&#0160;&#0160;&#0160;&#0160;To&#0160;use&#0160;a&#0160;custom&#0160;``JSONEncoder``&#0160;subclass&#0160;(e.g.&#0160;one&#0160;that&#0160;overrides&#0160;the</span><br />
-<a class="lnum" href="#226" name="226">0226</a><span class="string">&#0160;&#0160;&#0160;&#0160;``.default()``&#0160;method&#0160;to&#0160;serialize&#0160;additional&#0160;types),&#0160;specify&#0160;it&#0160;with</span><br />
-<a class="lnum" href="#227" name="227">0227</a><span class="string">&#0160;&#0160;&#0160;&#0160;the&#0160;``cls``&#0160;kwarg.</span><br />
-<a class="lnum" href="#228" name="228">0228</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#229" name="229">0229</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;cached&#0160;encoder</span><br />
-<a class="lnum" href="#230" name="230">0230</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="op">(</span><span class="name">skipkeys</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">False</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">ensure_ascii</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#231" name="231">0231</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">allow_nan</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#232" name="232">0232</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">separators</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#233" name="233">0233</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'utf-8'</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">default</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#234" name="234">0234</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">_default_encoder</span><span class="op">.</span><span class="name">encode</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#235" name="235">0235</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#236" name="236">0236</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">cls</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONEncoder</span><br />
-<a class="lnum" href="#237" name="237">0237</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">cls</span><span class="op">(</span><br />
-<a class="lnum" href="#238" name="238">0238</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">skipkeys</span><span class="op">=</span><span class="name">skipkeys</span><span class="op">,</span>&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">ensure_ascii</span><span class="op">,</span><br />
-<a class="lnum" href="#239" name="239">0239</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">check_circular</span><span class="op">,</span>&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">allow_nan</span><span class="op">,</span>&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">indent</span><span class="op">,</span><br />
-<a class="lnum" href="#240" name="240">0240</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">separators</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">encoding</span><span class="op">,</span>&#0160;<span class="name">default</span><span class="op">=</span><span class="name">default</span><span class="op">,</span><br />
-<a class="lnum" href="#241" name="241">0241</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">.</span><span class="name">encode</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#242" name="242">0242</a><br />
-<a class="lnum" href="#243" name="243">0243</a><br />
-<a class="lnum" href="#244" name="244">0244</a><span class="name">_default_decoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONDecoder</span><span class="op">(</span><span class="name">encoding</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">object_hook</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><br />
-<a class="lnum" href="#245" name="245">0245</a><br />
-<a class="lnum" href="#246" name="246">0246</a><br />
-<a class="lnum" href="#247" name="247">0247</a><span class="keyword">def</span>&#0160;<span class="name">load</span><span class="op">(</span><span class="name">fp</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">cls</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">object_hook</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_float</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#248" name="248">0248</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_int</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_constant</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#249" name="249">0249</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#250" name="250">0250</a><span class="string">&#0160;&#0160;&#0160;&#0160;Deserialize&#0160;``fp``&#0160;(a&#0160;``.read()``-supporting&#0160;file-like&#0160;object&#0160;containing</span><br />
-<a class="lnum" href="#251" name="251">0251</a><span class="string">&#0160;&#0160;&#0160;&#0160;a&#0160;JSON&#0160;document)&#0160;to&#0160;a&#0160;Python&#0160;object.</span><br />
-<a class="lnum" href="#252" name="252">0252</a><span class="string"></span><br />
-<a class="lnum" href="#253" name="253">0253</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;the&#0160;contents&#0160;of&#0160;``fp``&#0160;is&#0160;encoded&#0160;with&#0160;an&#0160;ASCII&#0160;based&#0160;encoding&#0160;other</span><br />
-<a class="lnum" href="#254" name="254">0254</a><span class="string">&#0160;&#0160;&#0160;&#0160;than&#0160;utf-8&#0160;(e.g.&#0160;latin-1),&#0160;then&#0160;an&#0160;appropriate&#0160;``encoding``&#0160;name&#0160;must</span><br />
-<a class="lnum" href="#255" name="255">0255</a><span class="string">&#0160;&#0160;&#0160;&#0160;be&#0160;specified.&#0160;Encodings&#0160;that&#0160;are&#0160;not&#0160;ASCII&#0160;based&#0160;(such&#0160;as&#0160;UCS-2)&#0160;are</span><br />
-<a class="lnum" href="#256" name="256">0256</a><span class="string">&#0160;&#0160;&#0160;&#0160;not&#0160;allowed,&#0160;and&#0160;should&#0160;be&#0160;wrapped&#0160;with</span><br />
-<a class="lnum" href="#257" name="257">0257</a><span class="string">&#0160;&#0160;&#0160;&#0160;``codecs.getreader(fp)(encoding)``,&#0160;or&#0160;simply&#0160;decoded&#0160;to&#0160;a&#0160;``unicode``</span><br />
-<a class="lnum" href="#258" name="258">0258</a><span class="string">&#0160;&#0160;&#0160;&#0160;object&#0160;and&#0160;passed&#0160;to&#0160;``loads()``</span><br />
-<a class="lnum" href="#259" name="259">0259</a><span class="string"></span><br />
-<a class="lnum" href="#260" name="260">0260</a><span class="string">&#0160;&#0160;&#0160;&#0160;``object_hook``&#0160;is&#0160;an&#0160;optional&#0160;function&#0160;that&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the</span><br />
-<a class="lnum" href="#261" name="261">0261</a><span class="string">&#0160;&#0160;&#0160;&#0160;result&#0160;of&#0160;any&#0160;object&#0160;literal&#0160;decode&#0160;(a&#0160;``dict``).&#0160;The&#0160;return&#0160;value&#0160;of</span><br />
-<a class="lnum" href="#262" name="262">0262</a><span class="string">&#0160;&#0160;&#0160;&#0160;``object_hook``&#0160;will&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;the&#0160;``dict``.&#0160;This&#0160;feature</span><br />
-<a class="lnum" href="#263" name="263">0263</a><span class="string">&#0160;&#0160;&#0160;&#0160;can&#0160;be&#0160;used&#0160;to&#0160;implement&#0160;custom&#0160;decoders&#0160;(e.g.&#0160;JSON-RPC&#0160;class&#0160;hinting).</span><br />
-<a class="lnum" href="#264" name="264">0264</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#265" name="265">0265</a><span class="string">&#0160;&#0160;&#0160;&#0160;To&#0160;use&#0160;a&#0160;custom&#0160;``JSONDecoder``&#0160;subclass,&#0160;specify&#0160;it&#0160;with&#0160;the&#0160;``cls``</span><br />
-<a class="lnum" href="#266" name="266">0266</a><span class="string">&#0160;&#0160;&#0160;&#0160;kwarg.</span><br />
-<a class="lnum" href="#267" name="267">0267</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#268" name="268">0268</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">loads</span><span class="op">(</span><span class="name">fp</span><span class="op">.</span><span class="name">read</span><span class="op">(</span><span class="op">)</span><span class="op">,</span><br />
-<a class="lnum" href="#269" name="269">0269</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">encoding</span><span class="op">,</span>&#0160;<span class="name">cls</span><span class="op">=</span><span class="name">cls</span><span class="op">,</span>&#0160;<span class="name">object_hook</span><span class="op">=</span><span class="name">object_hook</span><span class="op">,</span><br />
-<a class="lnum" href="#270" name="270">0270</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_float</span><span class="op">=</span><span class="name">parse_float</span><span class="op">,</span>&#0160;<span class="name">parse_int</span><span class="op">=</span><span class="name">parse_int</span><span class="op">,</span><br />
-<a class="lnum" href="#271" name="271">0271</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_constant</span><span class="op">=</span><span class="name">parse_constant</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><br />
-<a class="lnum" href="#272" name="272">0272</a><br />
-<a class="lnum" href="#273" name="273">0273</a><br />
-<a class="lnum" href="#274" name="274">0274</a><span class="keyword">def</span>&#0160;<span class="name">loads</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">cls</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">object_hook</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_float</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#275" name="275">0275</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_int</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_constant</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#276" name="276">0276</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#277" name="277">0277</a><span class="string">&#0160;&#0160;&#0160;&#0160;Deserialize&#0160;``s``&#0160;(a&#0160;``str``&#0160;or&#0160;``unicode``&#0160;instance&#0160;containing&#0160;a&#0160;JSON</span><br />
-<a class="lnum" href="#278" name="278">0278</a><span class="string">&#0160;&#0160;&#0160;&#0160;document)&#0160;to&#0160;a&#0160;Python&#0160;object.</span><br />
-<a class="lnum" href="#279" name="279">0279</a><span class="string"></span><br />
-<a class="lnum" href="#280" name="280">0280</a><span class="string">&#0160;&#0160;&#0160;&#0160;If&#0160;``s``&#0160;is&#0160;a&#0160;``str``&#0160;instance&#0160;and&#0160;is&#0160;encoded&#0160;with&#0160;an&#0160;ASCII&#0160;based&#0160;encoding</span><br />
-<a class="lnum" href="#281" name="281">0281</a><span class="string">&#0160;&#0160;&#0160;&#0160;other&#0160;than&#0160;utf-8&#0160;(e.g.&#0160;latin-1)&#0160;then&#0160;an&#0160;appropriate&#0160;``encoding``&#0160;name</span><br />
-<a class="lnum" href="#282" name="282">0282</a><span class="string">&#0160;&#0160;&#0160;&#0160;must&#0160;be&#0160;specified.&#0160;Encodings&#0160;that&#0160;are&#0160;not&#0160;ASCII&#0160;based&#0160;(such&#0160;as&#0160;UCS-2)</span><br />
-<a class="lnum" href="#283" name="283">0283</a><span class="string">&#0160;&#0160;&#0160;&#0160;are&#0160;not&#0160;allowed&#0160;and&#0160;should&#0160;be&#0160;decoded&#0160;to&#0160;``unicode``&#0160;first.</span><br />
-<a class="lnum" href="#284" name="284">0284</a><span class="string"></span><br />
-<a class="lnum" href="#285" name="285">0285</a><span class="string">&#0160;&#0160;&#0160;&#0160;``object_hook``&#0160;is&#0160;an&#0160;optional&#0160;function&#0160;that&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the</span><br />
-<a class="lnum" href="#286" name="286">0286</a><span class="string">&#0160;&#0160;&#0160;&#0160;result&#0160;of&#0160;any&#0160;object&#0160;literal&#0160;decode&#0160;(a&#0160;``dict``).&#0160;The&#0160;return&#0160;value&#0160;of</span><br />
-<a class="lnum" href="#287" name="287">0287</a><span class="string">&#0160;&#0160;&#0160;&#0160;``object_hook``&#0160;will&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;the&#0160;``dict``.&#0160;This&#0160;feature</span><br />
-<a class="lnum" href="#288" name="288">0288</a><span class="string">&#0160;&#0160;&#0160;&#0160;can&#0160;be&#0160;used&#0160;to&#0160;implement&#0160;custom&#0160;decoders&#0160;(e.g.&#0160;JSON-RPC&#0160;class&#0160;hinting).</span><br />
-<a class="lnum" href="#289" name="289">0289</a><span class="string"></span><br />
-<a class="lnum" href="#290" name="290">0290</a><span class="string">&#0160;&#0160;&#0160;&#0160;``parse_float``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the&#0160;string</span><br />
-<a class="lnum" href="#291" name="291">0291</a><span class="string">&#0160;&#0160;&#0160;&#0160;of&#0160;every&#0160;JSON&#0160;float&#0160;to&#0160;be&#0160;decoded.&#0160;By&#0160;default&#0160;this&#0160;is&#0160;equivalent&#0160;to</span><br />
-<a class="lnum" href="#292" name="292">0292</a><span class="string">&#0160;&#0160;&#0160;&#0160;float(num_str).&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;use&#0160;another&#0160;datatype&#0160;or&#0160;parser</span><br />
-<a class="lnum" href="#293" name="293">0293</a><span class="string">&#0160;&#0160;&#0160;&#0160;for&#0160;JSON&#0160;floats&#0160;(e.g.&#0160;decimal.Decimal).</span><br />
-<a class="lnum" href="#294" name="294">0294</a><span class="string"></span><br />
-<a class="lnum" href="#295" name="295">0295</a><span class="string">&#0160;&#0160;&#0160;&#0160;``parse_int``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the&#0160;string</span><br />
-<a class="lnum" href="#296" name="296">0296</a><span class="string">&#0160;&#0160;&#0160;&#0160;of&#0160;every&#0160;JSON&#0160;int&#0160;to&#0160;be&#0160;decoded.&#0160;By&#0160;default&#0160;this&#0160;is&#0160;equivalent&#0160;to</span><br />
-<a class="lnum" href="#297" name="297">0297</a><span class="string">&#0160;&#0160;&#0160;&#0160;int(num_str).&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;use&#0160;another&#0160;datatype&#0160;or&#0160;parser</span><br />
-<a class="lnum" href="#298" name="298">0298</a><span class="string">&#0160;&#0160;&#0160;&#0160;for&#0160;JSON&#0160;integers&#0160;(e.g.&#0160;float).</span><br />
-<a class="lnum" href="#299" name="299">0299</a><span class="string"></span><br />
-<a class="lnum" href="#300" name="300">0300</a><span class="string">&#0160;&#0160;&#0160;&#0160;``parse_constant``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;one&#0160;of&#0160;the</span><br />
-<a class="lnum" href="#301" name="301">0301</a><span class="string">&#0160;&#0160;&#0160;&#0160;following&#0160;strings:&#0160;-Infinity,&#0160;Infinity,&#0160;NaN,&#0160;null,&#0160;true,&#0160;false.</span><br />
-<a class="lnum" href="#302" name="302">0302</a><span class="string">&#0160;&#0160;&#0160;&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;raise&#0160;an&#0160;exception&#0160;if&#0160;invalid&#0160;JSON&#0160;numbers</span><br />
-<a class="lnum" href="#303" name="303">0303</a><span class="string">&#0160;&#0160;&#0160;&#0160;are&#0160;encountered.</span><br />
-<a class="lnum" href="#304" name="304">0304</a><span class="string"></span><br />
-<a class="lnum" href="#305" name="305">0305</a><span class="string">&#0160;&#0160;&#0160;&#0160;To&#0160;use&#0160;a&#0160;custom&#0160;``JSONDecoder``&#0160;subclass,&#0160;specify&#0160;it&#0160;with&#0160;the&#0160;``cls``</span><br />
-<a class="lnum" href="#306" name="306">0306</a><span class="string">&#0160;&#0160;&#0160;&#0160;kwarg.</span><br />
-<a class="lnum" href="#307" name="307">0307</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#308" name="308">0308</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="op">(</span><span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">encoding</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">object_hook</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#309" name="309">0309</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_int</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">parse_float</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span><br />
-<a class="lnum" href="#310" name="310">0310</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_constant</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#311" name="311">0311</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">_default_decoder</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#312" name="312">0312</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">cls</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#313" name="313">0313</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">cls</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONDecoder</span><br />
-<a class="lnum" href="#314" name="314">0314</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">object_hook</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#315" name="315">0315</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">kw</span><span class="op">[</span><span class="string">'object_hook'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">object_hook</span><br />
-<a class="lnum" href="#316" name="316">0316</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">parse_float</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#317" name="317">0317</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">kw</span><span class="op">[</span><span class="string">'parse_float'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_float</span><br />
-<a class="lnum" href="#318" name="318">0318</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">parse_int</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#319" name="319">0319</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">kw</span><span class="op">[</span><span class="string">'parse_int'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_int</span><br />
-<a class="lnum" href="#320" name="320">0320</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">parse_constant</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#321" name="321">0321</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">kw</span><span class="op">[</span><span class="string">'parse_constant'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_constant</span><br />
-<a class="lnum" href="#322" name="322">0322</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">cls</span><span class="op">(</span><span class="name">encoding</span><span class="op">=</span><span class="name">encoding</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#323" name="323">0323</a><br />
-<a class="lnum" href="#324" name="324">0324</a><br />
-<a class="lnum" href="#325" name="325">0325</a><span class="comment">#</span><br />
-<a class="lnum" href="#326" name="326">0326</a><span class="comment"></span><span class="comment">#&#0160;Compatibility&#0160;cruft&#0160;from&#0160;other&#0160;libraries</span><br />
-<a class="lnum" href="#327" name="327">0327</a><span class="comment"></span><span class="comment">#</span><br />
-<a class="lnum" href="#328" name="328">0328</a><span class="comment"></span><br />
-<a class="lnum" href="#329" name="329">0329</a><br />
-<a class="lnum" href="#330" name="330">0330</a><span class="keyword">def</span>&#0160;<span class="name">decode</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#331" name="331">0331</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#332" name="332">0332</a><span class="string">&#0160;&#0160;&#0160;&#0160;demjson,&#0160;python-cjson&#0160;API&#0160;compatibility&#0160;hook.&#0160;Use&#0160;loads(s)&#0160;instead.</span><br />
-<a class="lnum" href="#333" name="333">0333</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#334" name="334">0334</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">warnings</span><br />
-<a class="lnum" href="#335" name="335">0335</a>&#0160;&#0160;&#0160;&#0160;<span class="name">warnings</span><span class="op">.</span><span class="name">warn</span><span class="op">(</span><span class="string">"simplejson.loads(s)&#0160;should&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;decode(s)"</span><span class="op">,</span><br />
-<a class="lnum" href="#336" name="336">0336</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">DeprecationWarning</span><span class="op">)</span><br />
-<a class="lnum" href="#337" name="337">0337</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">loads</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#338" name="338">0338</a><br />
-<a class="lnum" href="#339" name="339">0339</a><br />
-<a class="lnum" href="#340" name="340">0340</a><span class="keyword">def</span>&#0160;<span class="name">encode</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#341" name="341">0341</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#342" name="342">0342</a><span class="string">&#0160;&#0160;&#0160;&#0160;demjson,&#0160;python-cjson&#0160;compatibility&#0160;hook.&#0160;Use&#0160;dumps(s)&#0160;instead.</span><br />
-<a class="lnum" href="#343" name="343">0343</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#344" name="344">0344</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">warnings</span><br />
-<a class="lnum" href="#345" name="345">0345</a>&#0160;&#0160;&#0160;&#0160;<span class="name">warnings</span><span class="op">.</span><span class="name">warn</span><span class="op">(</span><span class="string">"simplejson.dumps(s)&#0160;should&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;encode(s)"</span><span class="op">,</span><br />
-<a class="lnum" href="#346" name="346">0346</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">DeprecationWarning</span><span class="op">)</span><br />
-<a class="lnum" href="#347" name="347">0347</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">dumps</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#348" name="348">0348</a><br />
-<a class="lnum" href="#349" name="349">0349</a><br />
-<a class="lnum" href="#350" name="350">0350</a><span class="keyword">def</span>&#0160;<span class="name">read</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#351" name="351">0351</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#352" name="352">0352</a><span class="string">&#0160;&#0160;&#0160;&#0160;jsonlib,&#0160;JsonUtils,&#0160;python-json,&#0160;json-py&#0160;API&#0160;compatibility&#0160;hook.</span><br />
-<a class="lnum" href="#353" name="353">0353</a><span class="string">&#0160;&#0160;&#0160;&#0160;Use&#0160;loads(s)&#0160;instead.</span><br />
-<a class="lnum" href="#354" name="354">0354</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#355" name="355">0355</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">warnings</span><br />
-<a class="lnum" href="#356" name="356">0356</a>&#0160;&#0160;&#0160;&#0160;<span class="name">warnings</span><span class="op">.</span><span class="name">warn</span><span class="op">(</span><span class="string">"simplejson.loads(s)&#0160;should&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;read(s)"</span><span class="op">,</span><br />
-<a class="lnum" href="#357" name="357">0357</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">DeprecationWarning</span><span class="op">)</span><br />
-<a class="lnum" href="#358" name="358">0358</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">loads</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#359" name="359">0359</a><br />
-<a class="lnum" href="#360" name="360">0360</a><br />
-<a class="lnum" href="#361" name="361">0361</a><span class="keyword">def</span>&#0160;<span class="name">write</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#362" name="362">0362</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#363" name="363">0363</a><span class="string">&#0160;&#0160;&#0160;&#0160;jsonlib,&#0160;JsonUtils,&#0160;python-json,&#0160;json-py&#0160;API&#0160;compatibility&#0160;hook.</span><br />
-<a class="lnum" href="#364" name="364">0364</a><span class="string">&#0160;&#0160;&#0160;&#0160;Use&#0160;dumps(s)&#0160;instead.</span><br />
-<a class="lnum" href="#365" name="365">0365</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#366" name="366">0366</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">warnings</span><br />
-<a class="lnum" href="#367" name="367">0367</a>&#0160;&#0160;&#0160;&#0160;<span class="name">warnings</span><span class="op">.</span><span class="name">warn</span><span class="op">(</span><span class="string">"simplejson.dumps(s)&#0160;should&#0160;be&#0160;used&#0160;instead&#0160;of&#0160;write(s)"</span><span class="op">,</span><br />
-<a class="lnum" href="#368" name="368">0368</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">DeprecationWarning</span><span class="op">)</span><br />
-<a class="lnum" href="#369" name="369">0369</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">dumps</span><span class="op">(</span><span class="name">obj</span><span class="op">)</span><br />
-<a class="lnum" href="#370" name="370">0370</a><br />
-<a class="lnum" href="#371" name="371">0371</a><br />
-<a class="lnum" href="#372" name="372">0372</a><span class="comment">#</span><br />
-<a class="lnum" href="#373" name="373">0373</a><span class="comment"></span><span class="comment">#&#0160;Pretty&#0160;printer:</span><br />
-<a class="lnum" href="#374" name="374">0374</a><span class="comment"></span><span class="comment">#&#0160;&#0160;&#0160;&#0160;&#0160;curl&#0160;http://mochikit.com/examples/ajax_tables/domains.json&#0160;|&#0160;python&#0160;-msimplejson</span><br />
-<a class="lnum" href="#375" name="375">0375</a><span class="comment"></span><span class="comment">#</span><br />
-<a class="lnum" href="#376" name="376">0376</a><span class="comment"></span><br />
-<a class="lnum" href="#377" name="377">0377</a><br />
-<a class="lnum" href="#378" name="378">0378</a><span class="keyword">def</span>&#0160;<span class="name">main</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#379" name="379">0379</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">sys</span><br />
-<a class="lnum" href="#380" name="380">0380</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">)</span>&#0160;<span class="op">==</span>&#0160;<span class="number">1</span><span class="op">:</span><br />
-<a class="lnum" href="#381" name="381">0381</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">infile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sys</span><span class="op">.</span><span class="name">stdin</span><br />
-<a class="lnum" href="#382" name="382">0382</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">outfile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sys</span><span class="op">.</span><span class="name">stdout</span><br />
-<a class="lnum" href="#383" name="383">0383</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">)</span>&#0160;<span class="op">==</span>&#0160;<span class="number">2</span><span class="op">:</span><br />
-<a class="lnum" href="#384" name="384">0384</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">infile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">open</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">[</span><span class="number">1</span><span class="op">]</span><span class="op">,</span>&#0160;<span class="string">'rb'</span><span class="op">)</span><br />
-<a class="lnum" href="#385" name="385">0385</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">outfile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sys</span><span class="op">.</span><span class="name">stdout</span><br />
-<a class="lnum" href="#386" name="386">0386</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">)</span>&#0160;<span class="op">==</span>&#0160;<span class="number">3</span><span class="op">:</span><br />
-<a class="lnum" href="#387" name="387">0387</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">infile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">open</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">[</span><span class="number">1</span><span class="op">]</span><span class="op">,</span>&#0160;<span class="string">'rb'</span><span class="op">)</span><br />
-<a class="lnum" href="#388" name="388">0388</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">outfile</span>&#0160;<span class="op">=</span>&#0160;<span class="name">open</span><span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">[</span><span class="number">2</span><span class="op">]</span><span class="op">,</span>&#0160;<span class="string">'wb'</span><span class="op">)</span><br />
-<a class="lnum" href="#389" name="389">0389</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#390" name="390">0390</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">SystemExit</span><span class="op">(</span><span class="string">"%s&#0160;[infile&#0160;[outfile]]"</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">sys</span><span class="op">.</span><span class="name">argv</span><span class="op">[</span><span class="number">0</span><span class="op">]</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#391" name="391">0391</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#392" name="392">0392</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">obj</span>&#0160;<span class="op">=</span>&#0160;<span class="name">load</span><span class="op">(</span><span class="name">infile</span><span class="op">)</span><br />
-<a class="lnum" href="#393" name="393">0393</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">ValueError</span><span class="op">,</span>&#0160;<span class="name">e</span><span class="op">:</span><br />
-<a class="lnum" href="#394" name="394">0394</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">SystemExit</span><span class="op">(</span><span class="name">e</span><span class="op">)</span><br />
-<a class="lnum" href="#395" name="395">0395</a>&#0160;&#0160;&#0160;&#0160;<span class="name">dump</span><span class="op">(</span><span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">outfile</span><span class="op">,</span>&#0160;<span class="name">sort_keys</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">indent</span><span class="op">=</span><span class="number">4</span><span class="op">)</span><br />
-<a class="lnum" href="#396" name="396">0396</a>&#0160;&#0160;&#0160;&#0160;<span class="name">outfile</span><span class="op">.</span><span class="name">write</span><span class="op">(</span><span class="string">'\n'</span><span class="op">)</span><br />
-<a class="lnum" href="#397" name="397">0397</a><br />
-<a class="lnum" href="#398" name="398">0398</a><br />
-<a class="lnum" href="#399" name="399">0399</a><span class="keyword">if</span>&#0160;<span class="name">__name__</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'__main__'</span><span class="op">:</span><br />
-<a class="lnum" href="#400" name="400">0400</a>&#0160;&#0160;&#0160;&#0160;<span class="name">main</span><span class="op">(</span><span class="op">)</span></code></div></body></html> \ No newline at end of file
diff --git a/docs/simplejson/decoder.py.html b/docs/simplejson/decoder.py.html
deleted file mode 100644
index f9b2d3f..0000000
--- a/docs/simplejson/decoder.py.html
+++ /dev/null
@@ -1,413 +0,0 @@
-<html><head><title>/Users/bob/src/simplejson/simplejson/decoder.py</title>
- <script type="text/javascript"><!--
-
-function show_line_range() {
- var href = document.location.href;
- if (href.indexOf('?') == -1) {
- return;
- }
- var qs = href.substring(href.indexOf('?')+1);
- if (qs.indexOf('#') >= 0) {
- qs = qs.substring(0, qs.indexOf('#'));
- }
- var first = qs.match(/f=(\d+)/)[1];
- var last = qs.match(/l=(\d+)/)[1];
- if (! first || ! last) {
- return;
- }
- var anchors = document.getElementsByTagName('A');
- var container = document.createElement('DIV');
- container.className = 'highlighted';
- var children = [];
- var start = null;
- var parent = null;
- var highlight = false;
- for (var i = 0; i < anchors.length; i++) {
- var el = anchors[i];
- if (el.getAttribute('name') == first) {
- start = el.previousSibling;
- parent = el.parentNode;
- highlight = true;
- }
- if (el.getAttribute('name') == last) {
- break;
- }
- if (highlight) {
- children[children.length] = el;
- el = el.nextSibling;
- while (el && el.tagName != 'A') {
- children[children.length] = el;
- el = el.nextSibling;
- }
- }
- }
- for (i=0; i<children.length; i++) {
- container.appendChild(children[i]);
- }
- if (start) {
- start.parentNode.insertBefore(container, start.nextSibling);
- } else {
- parent.insertBefore(container, parent.childNodes[0]);
- }
-}
-
- // --></script>
- <style>
- div.python {
- color: #333
- }
- div.python a.lnum {
- color: #555;
- background-color: #eee;
- border-right: 1px solid #999;
- padding-right: 2px;
- margin-right: 4px;
- }
- div.python span.comment { color: #933 }
- div.python span.keyword { color: #a3e; font-weight: bold }
- div.python span.op { color: #c96 }
- div.python span.string { color: #6a6 }
- div.python span.name { }
- div.python span.text { color: #333 }
- div.highlighted { background-color: #ff9; border: 1px solid #009 }
- </style></head><body onload="show_line_range()"><div class="python"><code><a class="lnum" href="#1" name="1">0001</a><span class="string">"""</span><br />
-<a class="lnum" href="#2" name="2">0002</a><span class="string">Implementation&#0160;of&#0160;JSONDecoder</span><br />
-<a class="lnum" href="#3" name="3">0003</a><span class="string">"""</span><br />
-<a class="lnum" href="#4" name="4">0004</a><span class="keyword">import</span>&#0160;<span class="name">re</span><br />
-<a class="lnum" href="#5" name="5">0005</a><span class="keyword">import</span>&#0160;<span class="name">sys</span><br />
-<a class="lnum" href="#6" name="6">0006</a><br />
-<a class="lnum" href="#7" name="7">0007</a><span class="keyword">from</span>&#0160;<span class="name">simplejson</span><span class="op">.</span><span class="name">scanner</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">Scanner</span><span class="op">,</span>&#0160;<span class="name">pattern</span><br />
-<a class="lnum" href="#8" name="8">0008</a><span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#9" name="9">0009</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">simplejson</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">_speedups</span><br />
-<a class="lnum" href="#10" name="10">0010</a><span class="keyword">except</span><span class="op">:</span><br />
-<a class="lnum" href="#11" name="11">0011</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_speedups</span>&#0160;<span class="op">=</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#12" name="12">0012</a><br />
-<a class="lnum" href="#13" name="13">0013</a><span class="name">FLAGS</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">VERBOSE</span>&#0160;<span class="op">|</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">MULTILINE</span>&#0160;<span class="op">|</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">DOTALL</span><br />
-<a class="lnum" href="#14" name="14">0014</a><br />
-<a class="lnum" href="#15" name="15">0015</a><span class="keyword">def</span>&#0160;<span class="name">_floatconstants</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#16" name="16">0016</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">struct</span><br />
-<a class="lnum" href="#17" name="17">0017</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">import</span>&#0160;<span class="name">sys</span><br />
-<a class="lnum" href="#18" name="18">0018</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_BYTES</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'7FF80000000000007FF0000000000000'</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="string">'hex'</span><span class="op">)</span><br />
-<a class="lnum" href="#19" name="19">0019</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">sys</span><span class="op">.</span><span class="name">byteorder</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">'big'</span><span class="op">:</span><br />
-<a class="lnum" href="#20" name="20">0020</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_BYTES</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_BYTES</span><span class="op">[</span><span class="op">:</span><span class="number">8</span><span class="op">]</span><span class="op">[</span><span class="op">:</span><span class="op">:</span><span class="op">-</span><span class="number">1</span><span class="op">]</span>&#0160;<span class="op">+</span>&#0160;<span class="name">_BYTES</span><span class="op">[</span><span class="number">8</span><span class="op">:</span><span class="op">]</span><span class="op">[</span><span class="op">:</span><span class="op">:</span><span class="op">-</span><span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#21" name="21">0021</a>&#0160;&#0160;&#0160;&#0160;<span class="name">nan</span><span class="op">,</span>&#0160;<span class="name">inf</span>&#0160;<span class="op">=</span>&#0160;<span class="name">struct</span><span class="op">.</span><span class="name">unpack</span><span class="op">(</span><span class="string">'dd'</span><span class="op">,</span>&#0160;<span class="name">_BYTES</span><span class="op">)</span><br />
-<a class="lnum" href="#22" name="22">0022</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">nan</span><span class="op">,</span>&#0160;<span class="name">inf</span><span class="op">,</span>&#0160;<span class="op">-</span><span class="name">inf</span><br />
-<a class="lnum" href="#23" name="23">0023</a><br />
-<a class="lnum" href="#24" name="24">0024</a><span class="name">NaN</span><span class="op">,</span>&#0160;<span class="name">PosInf</span><span class="op">,</span>&#0160;<span class="name">NegInf</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_floatconstants</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#25" name="25">0025</a><br />
-<a class="lnum" href="#26" name="26">0026</a><br />
-<a class="lnum" href="#27" name="27">0027</a><span class="keyword">def</span>&#0160;<span class="name">linecol</span><span class="op">(</span><span class="name">doc</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#28" name="28">0028</a>&#0160;&#0160;&#0160;&#0160;<span class="name">lineno</span>&#0160;<span class="op">=</span>&#0160;<span class="name">doc</span><span class="op">.</span><span class="name">count</span><span class="op">(</span><span class="string">'\n'</span><span class="op">,</span>&#0160;<span class="number">0</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">)</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#29" name="29">0029</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">lineno</span>&#0160;<span class="op">==</span>&#0160;<span class="number">1</span><span class="op">:</span><br />
-<a class="lnum" href="#30" name="30">0030</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">colno</span>&#0160;<span class="op">=</span>&#0160;<span class="name">pos</span><br />
-<a class="lnum" href="#31" name="31">0031</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#32" name="32">0032</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">colno</span>&#0160;<span class="op">=</span>&#0160;<span class="name">pos</span>&#0160;<span class="op">-</span>&#0160;<span class="name">doc</span><span class="op">.</span><span class="name">rindex</span><span class="op">(</span><span class="string">'\n'</span><span class="op">,</span>&#0160;<span class="number">0</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">)</span><br />
-<a class="lnum" href="#33" name="33">0033</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">lineno</span><span class="op">,</span>&#0160;<span class="name">colno</span><br />
-<a class="lnum" href="#34" name="34">0034</a><br />
-<a class="lnum" href="#35" name="35">0035</a><br />
-<a class="lnum" href="#36" name="36">0036</a><span class="keyword">def</span>&#0160;<span class="name">errmsg</span><span class="op">(</span><span class="name">msg</span><span class="op">,</span>&#0160;<span class="name">doc</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#37" name="37">0037</a>&#0160;&#0160;&#0160;&#0160;<span class="name">lineno</span><span class="op">,</span>&#0160;<span class="name">colno</span>&#0160;<span class="op">=</span>&#0160;<span class="name">linecol</span><span class="op">(</span><span class="name">doc</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">)</span><br />
-<a class="lnum" href="#38" name="38">0038</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">end</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#39" name="39">0039</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'%s:&#0160;line&#0160;%d&#0160;column&#0160;%d&#0160;(char&#0160;%d)'</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">msg</span><span class="op">,</span>&#0160;<span class="name">lineno</span><span class="op">,</span>&#0160;<span class="name">colno</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">)</span><br />
-<a class="lnum" href="#40" name="40">0040</a>&#0160;&#0160;&#0160;&#0160;<span class="name">endlineno</span><span class="op">,</span>&#0160;<span class="name">endcolno</span>&#0160;<span class="op">=</span>&#0160;<span class="name">linecol</span><span class="op">(</span><span class="name">doc</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><br />
-<a class="lnum" href="#41" name="41">0041</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'%s:&#0160;line&#0160;%d&#0160;column&#0160;%d&#0160;-&#0160;line&#0160;%d&#0160;column&#0160;%d&#0160;(char&#0160;%d&#0160;-&#0160;%d)'</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><br />
-<a class="lnum" href="#42" name="42">0042</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">msg</span><span class="op">,</span>&#0160;<span class="name">lineno</span><span class="op">,</span>&#0160;<span class="name">colno</span><span class="op">,</span>&#0160;<span class="name">endlineno</span><span class="op">,</span>&#0160;<span class="name">endcolno</span><span class="op">,</span>&#0160;<span class="name">pos</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><br />
-<a class="lnum" href="#43" name="43">0043</a><br />
-<a class="lnum" href="#44" name="44">0044</a><br />
-<a class="lnum" href="#45" name="45">0045</a><span class="name">_CONSTANTS</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><br />
-<a class="lnum" href="#46" name="46">0046</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'-Infinity'</span><span class="op">:</span>&#0160;<span class="name">NegInf</span><span class="op">,</span><br />
-<a class="lnum" href="#47" name="47">0047</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'Infinity'</span><span class="op">:</span>&#0160;<span class="name">PosInf</span><span class="op">,</span><br />
-<a class="lnum" href="#48" name="48">0048</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'NaN'</span><span class="op">:</span>&#0160;<span class="name">NaN</span><span class="op">,</span><br />
-<a class="lnum" href="#49" name="49">0049</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'true'</span><span class="op">:</span>&#0160;<span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#50" name="50">0050</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'false'</span><span class="op">:</span>&#0160;<span class="name">False</span><span class="op">,</span><br />
-<a class="lnum" href="#51" name="51">0051</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'null'</span><span class="op">:</span>&#0160;<span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#52" name="52">0052</a><span class="op">}</span><br />
-<a class="lnum" href="#53" name="53">0053</a><br />
-<a class="lnum" href="#54" name="54">0054</a><span class="keyword">def</span>&#0160;<span class="name">JSONConstant</span><span class="op">(</span><span class="name">match</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">,</span>&#0160;<span class="name">c</span><span class="op">=</span><span class="name">_CONSTANTS</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#55" name="55">0055</a>&#0160;&#0160;&#0160;&#0160;<span class="name">s</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">group</span><span class="op">(</span><span class="number">0</span><span class="op">)</span><br />
-<a class="lnum" href="#56" name="56">0056</a>&#0160;&#0160;&#0160;&#0160;<span class="name">fn</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'parse_constant'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span><br />
-<a class="lnum" href="#57" name="57">0057</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">fn</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#58" name="58">0058</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">rval</span>&#0160;<span class="op">=</span>&#0160;<span class="name">c</span><span class="op">[</span><span class="name">s</span><span class="op">]</span><br />
-<a class="lnum" href="#59" name="59">0059</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#60" name="60">0060</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">rval</span>&#0160;<span class="op">=</span>&#0160;<span class="name">fn</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#61" name="61">0061</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">rval</span><span class="op">,</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#62" name="62">0062</a><span class="name">pattern</span><span class="op">(</span><span class="string">'(-?Infinity|NaN|true|false|null)'</span><span class="op">)</span><span class="op">(</span><span class="name">JSONConstant</span><span class="op">)</span><br />
-<a class="lnum" href="#63" name="63">0063</a><br />
-<a class="lnum" href="#64" name="64">0064</a><br />
-<a class="lnum" href="#65" name="65">0065</a><span class="keyword">def</span>&#0160;<span class="name">JSONNumber</span><span class="op">(</span><span class="name">match</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#66" name="66">0066</a>&#0160;&#0160;&#0160;&#0160;<span class="name">match</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONNumber</span><span class="op">.</span><span class="name">regex</span><span class="op">.</span><span class="name">match</span><span class="op">(</span><span class="name">match</span><span class="op">.</span><span class="name">string</span><span class="op">,</span>&#0160;<span class="op">*</span><span class="name">match</span><span class="op">.</span><span class="name">span</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#67" name="67">0067</a>&#0160;&#0160;&#0160;&#0160;<span class="name">integer</span><span class="op">,</span>&#0160;<span class="name">frac</span><span class="op">,</span>&#0160;<span class="name">exp</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">groups</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#68" name="68">0068</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">frac</span>&#0160;<span class="keyword">or</span>&#0160;<span class="name">exp</span><span class="op">:</span><br />
-<a class="lnum" href="#69" name="69">0069</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">fn</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'parse_float'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span>&#0160;<span class="keyword">or</span>&#0160;<span class="name">float</span><br />
-<a class="lnum" href="#70" name="70">0070</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">res</span>&#0160;<span class="op">=</span>&#0160;<span class="name">fn</span><span class="op">(</span><span class="name">integer</span>&#0160;<span class="op">+</span>&#0160;<span class="op">(</span><span class="name">frac</span>&#0160;<span class="keyword">or</span>&#0160;<span class="string">''</span><span class="op">)</span>&#0160;<span class="op">+</span>&#0160;<span class="op">(</span><span class="name">exp</span>&#0160;<span class="keyword">or</span>&#0160;<span class="string">''</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#71" name="71">0071</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#72" name="72">0072</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">fn</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'parse_int'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span>&#0160;<span class="keyword">or</span>&#0160;<span class="name">int</span><br />
-<a class="lnum" href="#73" name="73">0073</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">res</span>&#0160;<span class="op">=</span>&#0160;<span class="name">fn</span><span class="op">(</span><span class="name">integer</span><span class="op">)</span><br />
-<a class="lnum" href="#74" name="74">0074</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">res</span><span class="op">,</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#75" name="75">0075</a><span class="name">pattern</span><span class="op">(</span><span class="string">r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?'</span><span class="op">)</span><span class="op">(</span><span class="name">JSONNumber</span><span class="op">)</span><br />
-<a class="lnum" href="#76" name="76">0076</a><br />
-<a class="lnum" href="#77" name="77">0077</a><br />
-<a class="lnum" href="#78" name="78">0078</a><span class="name">STRINGCHUNK</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="string">r'(.*?)(["\\\x00-\x1f])'</span><span class="op">,</span>&#0160;<span class="name">FLAGS</span><span class="op">)</span><br />
-<a class="lnum" href="#79" name="79">0079</a><span class="name">BACKSLASH</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><br />
-<a class="lnum" href="#80" name="80">0080</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'"'</span><span class="op">:</span>&#0160;<span class="string">u'"'</span><span class="op">,</span>&#0160;<span class="string">'\\'</span><span class="op">:</span>&#0160;<span class="string">u'\\'</span><span class="op">,</span>&#0160;<span class="string">'/'</span><span class="op">:</span>&#0160;<span class="string">u'/'</span><span class="op">,</span><br />
-<a class="lnum" href="#81" name="81">0081</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'b'</span><span class="op">:</span>&#0160;<span class="string">u'\b'</span><span class="op">,</span>&#0160;<span class="string">'f'</span><span class="op">:</span>&#0160;<span class="string">u'\f'</span><span class="op">,</span>&#0160;<span class="string">'n'</span><span class="op">:</span>&#0160;<span class="string">u'\n'</span><span class="op">,</span>&#0160;<span class="string">'r'</span><span class="op">:</span>&#0160;<span class="string">u'\r'</span><span class="op">,</span>&#0160;<span class="string">'t'</span><span class="op">:</span>&#0160;<span class="string">u'\t'</span><span class="op">,</span><br />
-<a class="lnum" href="#82" name="82">0082</a><span class="op">}</span><br />
-<a class="lnum" href="#83" name="83">0083</a><br />
-<a class="lnum" href="#84" name="84">0084</a><span class="name">DEFAULT_ENCODING</span>&#0160;<span class="op">=</span>&#0160;<span class="string">"utf-8"</span><br />
-<a class="lnum" href="#85" name="85">0085</a><br />
-<a class="lnum" href="#86" name="86">0086</a><span class="keyword">def</span>&#0160;<span class="name">scanstring</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">strict</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">_b</span><span class="op">=</span><span class="name">BACKSLASH</span><span class="op">,</span>&#0160;<span class="name">_m</span><span class="op">=</span><span class="name">STRINGCHUNK</span><span class="op">.</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#87" name="87">0087</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">encoding</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#88" name="88">0088</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">DEFAULT_ENCODING</span><br />
-<a class="lnum" href="#89" name="89">0089</a>&#0160;&#0160;&#0160;&#0160;<span class="name">chunks</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="op">]</span><br />
-<a class="lnum" href="#90" name="90">0090</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_append</span>&#0160;<span class="op">=</span>&#0160;<span class="name">chunks</span><span class="op">.</span><span class="name">append</span><br />
-<a class="lnum" href="#91" name="91">0091</a>&#0160;&#0160;&#0160;&#0160;<span class="name">begin</span>&#0160;<span class="op">=</span>&#0160;<span class="name">end</span>&#0160;<span class="op">-</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#92" name="92">0092</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">while</span>&#0160;<span class="number">1</span><span class="op">:</span><br />
-<a class="lnum" href="#93" name="93">0093</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">chunk</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_m</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><br />
-<a class="lnum" href="#94" name="94">0094</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#95" name="95">0095</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><br />
-<a class="lnum" href="#96" name="96">0096</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">errmsg</span><span class="op">(</span><span class="string">"Unterminated&#0160;string&#0160;starting&#0160;at"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">begin</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#97" name="97">0097</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">chunk</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#98" name="98">0098</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">content</span><span class="op">,</span>&#0160;<span class="name">terminator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">chunk</span><span class="op">.</span><span class="name">groups</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#99" name="99">0099</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">content</span><span class="op">:</span><br />
-<a class="lnum" href="#100" name="100">0100</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">content</span><span class="op">,</span>&#0160;<span class="name">unicode</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#101" name="101">0101</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">content</span>&#0160;<span class="op">=</span>&#0160;<span class="name">unicode</span><span class="op">(</span><span class="name">content</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">)</span><br />
-<a class="lnum" href="#102" name="102">0102</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_append</span><span class="op">(</span><span class="name">content</span><span class="op">)</span><br />
-<a class="lnum" href="#103" name="103">0103</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">terminator</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'"'</span><span class="op">:</span><br />
-<a class="lnum" href="#104" name="104">0104</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">break</span><br />
-<a class="lnum" href="#105" name="105">0105</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">terminator</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">'\\'</span><span class="op">:</span><br />
-<a class="lnum" href="#106" name="106">0106</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">strict</span><span class="op">:</span><br />
-<a class="lnum" href="#107" name="107">0107</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Invalid&#0160;control&#0160;character&#0160;%r&#0160;at"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#108" name="108">0108</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#109" name="109">0109</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_append</span><span class="op">(</span><span class="name">terminator</span><span class="op">)</span><br />
-<a class="lnum" href="#110" name="110">0110</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">continue</span><br />
-<a class="lnum" href="#111" name="111">0111</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#112" name="112">0112</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">esc</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">]</span><br />
-<a class="lnum" href="#113" name="113">0113</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">IndexError</span><span class="op">:</span><br />
-<a class="lnum" href="#114" name="114">0114</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><br />
-<a class="lnum" href="#115" name="115">0115</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">errmsg</span><span class="op">(</span><span class="string">"Unterminated&#0160;string&#0160;starting&#0160;at"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">begin</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#116" name="116">0116</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">esc</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">'u'</span><span class="op">:</span><br />
-<a class="lnum" href="#117" name="117">0117</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#118" name="118">0118</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">m</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_b</span><span class="op">[</span><span class="name">esc</span><span class="op">]</span><br />
-<a class="lnum" href="#119" name="119">0119</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">KeyError</span><span class="op">:</span><br />
-<a class="lnum" href="#120" name="120">0120</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><br />
-<a class="lnum" href="#121" name="121">0121</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">errmsg</span><span class="op">(</span><span class="string">"Invalid&#0160;\\escape:&#0160;%r"</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">esc</span><span class="op">,</span><span class="op">)</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#122" name="122">0122</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#123" name="123">0123</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#124" name="124">0124</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">esc</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">5</span><span class="op">]</span><br />
-<a class="lnum" href="#125" name="125">0125</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">next_end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">5</span><br />
-<a class="lnum" href="#126" name="126">0126</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">msg</span>&#0160;<span class="op">=</span>&#0160;<span class="string">"Invalid&#0160;\\uXXXX&#0160;escape"</span><br />
-<a class="lnum" href="#127" name="127">0127</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#128" name="128">0128</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">esc</span><span class="op">)</span>&#0160;<span class="op">!=</span>&#0160;<span class="number">4</span><span class="op">:</span><br />
-<a class="lnum" href="#129" name="129">0129</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><br />
-<a class="lnum" href="#130" name="130">0130</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">uni</span>&#0160;<span class="op">=</span>&#0160;<span class="name">int</span><span class="op">(</span><span class="name">esc</span><span class="op">,</span>&#0160;<span class="number">16</span><span class="op">)</span><br />
-<a class="lnum" href="#131" name="131">0131</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="number">0xd800</span>&#0160;<span class="op">&lt;=</span>&#0160;<span class="name">uni</span>&#0160;<span class="op">&lt;=</span>&#0160;<span class="number">0xdbff</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">sys</span><span class="op">.</span><span class="name">maxunicode</span>&#0160;<span class="op">&gt;</span>&#0160;<span class="number">65535</span><span class="op">:</span><br />
-<a class="lnum" href="#132" name="132">0132</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">msg</span>&#0160;<span class="op">=</span>&#0160;<span class="string">"Invalid&#0160;\\uXXXX\\uXXXX&#0160;surrogate&#0160;pair"</span><br />
-<a class="lnum" href="#133" name="133">0133</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">5</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">7</span><span class="op">]</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'\\u'</span><span class="op">:</span><br />
-<a class="lnum" href="#134" name="134">0134</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><br />
-<a class="lnum" href="#135" name="135">0135</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">esc2</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">7</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">11</span><span class="op">]</span><br />
-<a class="lnum" href="#136" name="136">0136</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">esc2</span><span class="op">)</span>&#0160;<span class="op">!=</span>&#0160;<span class="number">4</span><span class="op">:</span><br />
-<a class="lnum" href="#137" name="137">0137</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><br />
-<a class="lnum" href="#138" name="138">0138</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">uni2</span>&#0160;<span class="op">=</span>&#0160;<span class="name">int</span><span class="op">(</span><span class="name">esc2</span><span class="op">,</span>&#0160;<span class="number">16</span><span class="op">)</span><br />
-<a class="lnum" href="#139" name="139">0139</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">uni</span>&#0160;<span class="op">=</span>&#0160;<span class="number">0x10000</span>&#0160;<span class="op">+</span>&#0160;<span class="op">(</span><span class="op">(</span><span class="op">(</span><span class="name">uni</span>&#0160;<span class="op">-</span>&#0160;<span class="number">0xd800</span><span class="op">)</span>&#0160;<span class="op">&lt;&lt;</span>&#0160;<span class="number">10</span><span class="op">)</span>&#0160;<span class="op">|</span>&#0160;<span class="op">(</span><span class="name">uni2</span>&#0160;<span class="op">-</span>&#0160;<span class="number">0xdc00</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#140" name="140">0140</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">next_end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">6</span><br />
-<a class="lnum" href="#141" name="141">0141</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">m</span>&#0160;<span class="op">=</span>&#0160;<span class="name">unichr</span><span class="op">(</span><span class="name">uni</span><span class="op">)</span><br />
-<a class="lnum" href="#142" name="142">0142</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">ValueError</span><span class="op">:</span><br />
-<a class="lnum" href="#143" name="143">0143</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="name">msg</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#144" name="144">0144</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">next_end</span><br />
-<a class="lnum" href="#145" name="145">0145</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_append</span><span class="op">(</span><span class="name">m</span><span class="op">)</span><br />
-<a class="lnum" href="#146" name="146">0146</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">u''</span><span class="op">.</span><span class="name">join</span><span class="op">(</span><span class="name">chunks</span><span class="op">)</span><span class="op">,</span>&#0160;<span class="name">end</span><br />
-<a class="lnum" href="#147" name="147">0147</a><br />
-<a class="lnum" href="#148" name="148">0148</a><br />
-<a class="lnum" href="#149" name="149">0149</a><span class="comment">#&#0160;Use&#0160;speedup</span><br />
-<a class="lnum" href="#150" name="150">0150</a><span class="comment"></span><span class="keyword">if</span>&#0160;<span class="name">_speedups</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#151" name="151">0151</a>&#0160;&#0160;&#0160;&#0160;<span class="name">scanstring</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_speedups</span><span class="op">.</span><span class="name">scanstring</span><br />
-<a class="lnum" href="#152" name="152">0152</a><br />
-<a class="lnum" href="#153" name="153">0153</a><span class="keyword">def</span>&#0160;<span class="name">JSONString</span><span class="op">(</span><span class="name">match</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#154" name="154">0154</a>&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'encoding'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span><br />
-<a class="lnum" href="#155" name="155">0155</a>&#0160;&#0160;&#0160;&#0160;<span class="name">strict</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'strict'</span><span class="op">,</span>&#0160;<span class="name">True</span><span class="op">)</span><br />
-<a class="lnum" href="#156" name="156">0156</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">scanstring</span><span class="op">(</span><span class="name">match</span><span class="op">.</span><span class="name">string</span><span class="op">,</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">,</span>&#0160;<span class="name">strict</span><span class="op">)</span><br />
-<a class="lnum" href="#157" name="157">0157</a><span class="name">pattern</span><span class="op">(</span><span class="string">r'"'</span><span class="op">)</span><span class="op">(</span><span class="name">JSONString</span><span class="op">)</span><br />
-<a class="lnum" href="#158" name="158">0158</a><br />
-<a class="lnum" href="#159" name="159">0159</a><br />
-<a class="lnum" href="#160" name="160">0160</a><span class="name">WHITESPACE</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="string">r'\s*'</span><span class="op">,</span>&#0160;<span class="name">FLAGS</span><span class="op">)</span><br />
-<a class="lnum" href="#161" name="161">0161</a><br />
-<a class="lnum" href="#162" name="162">0162</a><span class="keyword">def</span>&#0160;<span class="name">JSONObject</span><span class="op">(</span><span class="name">match</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">,</span>&#0160;<span class="name">_w</span><span class="op">=</span><span class="name">WHITESPACE</span><span class="op">.</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#163" name="163">0163</a>&#0160;&#0160;&#0160;&#0160;<span class="name">pairs</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><span class="op">}</span><br />
-<a class="lnum" href="#164" name="164">0164</a>&#0160;&#0160;&#0160;&#0160;<span class="name">s</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">string</span><br />
-<a class="lnum" href="#165" name="165">0165</a>&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#166" name="166">0166</a>&#0160;&#0160;&#0160;&#0160;<span class="name">nextchar</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#167" name="167">0167</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Trivial&#0160;empty&#0160;object</span><br />
-<a class="lnum" href="#168" name="168">0168</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'}'</span><span class="op">:</span><br />
-<a class="lnum" href="#169" name="169">0169</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">pairs</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#170" name="170">0170</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">'"'</span><span class="op">:</span><br />
-<a class="lnum" href="#171" name="171">0171</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;property&#0160;name"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#172" name="172">0172</a>&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#173" name="173">0173</a>&#0160;&#0160;&#0160;&#0160;<span class="name">encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'encoding'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span><br />
-<a class="lnum" href="#174" name="174">0174</a>&#0160;&#0160;&#0160;&#0160;<span class="name">strict</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'strict'</span><span class="op">,</span>&#0160;<span class="name">True</span><span class="op">)</span><br />
-<a class="lnum" href="#175" name="175">0175</a>&#0160;&#0160;&#0160;&#0160;<span class="name">iterscan</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONScanner</span><span class="op">.</span><span class="name">iterscan</span><br />
-<a class="lnum" href="#176" name="176">0176</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">while</span>&#0160;<span class="name">True</span><span class="op">:</span><br />
-<a class="lnum" href="#177" name="177">0177</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">scanstring</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">,</span>&#0160;<span class="name">strict</span><span class="op">)</span><br />
-<a class="lnum" href="#178" name="178">0178</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#179" name="179">0179</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">':'</span><span class="op">:</span><br />
-<a class="lnum" href="#180" name="180">0180</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;:&#0160;delimiter"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#181" name="181">0181</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#182" name="182">0182</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#183" name="183">0183</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">value</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">iterscan</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">idx</span><span class="op">=</span><span class="name">end</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">=</span><span class="name">context</span><span class="op">)</span><span class="op">.</span><span class="name">next</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#184" name="184">0184</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">StopIteration</span><span class="op">:</span><br />
-<a class="lnum" href="#185" name="185">0185</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;object"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#186" name="186">0186</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">pairs</span><span class="op">[</span><span class="name">key</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">value</span><br />
-<a class="lnum" href="#187" name="187">0187</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#188" name="188">0188</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">nextchar</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#189" name="189">0189</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#190" name="190">0190</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'}'</span><span class="op">:</span><br />
-<a class="lnum" href="#191" name="191">0191</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">break</span><br />
-<a class="lnum" href="#192" name="192">0192</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">','</span><span class="op">:</span><br />
-<a class="lnum" href="#193" name="193">0193</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;,&#0160;delimiter"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">-</span>&#0160;<span class="number">1</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#194" name="194">0194</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#195" name="195">0195</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">nextchar</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#196" name="196">0196</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#197" name="197">0197</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">'"'</span><span class="op">:</span><br />
-<a class="lnum" href="#198" name="198">0198</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;property&#0160;name"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">-</span>&#0160;<span class="number">1</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#199" name="199">0199</a>&#0160;&#0160;&#0160;&#0160;<span class="name">object_hook</span>&#0160;<span class="op">=</span>&#0160;<span class="name">getattr</span><span class="op">(</span><span class="name">context</span><span class="op">,</span>&#0160;<span class="string">'object_hook'</span><span class="op">,</span>&#0160;<span class="name">None</span><span class="op">)</span><br />
-<a class="lnum" href="#200" name="200">0200</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">object_hook</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#201" name="201">0201</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">pairs</span>&#0160;<span class="op">=</span>&#0160;<span class="name">object_hook</span><span class="op">(</span><span class="name">pairs</span><span class="op">)</span><br />
-<a class="lnum" href="#202" name="202">0202</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">pairs</span><span class="op">,</span>&#0160;<span class="name">end</span><br />
-<a class="lnum" href="#203" name="203">0203</a><span class="name">pattern</span><span class="op">(</span><span class="string">r'{'</span><span class="op">)</span><span class="op">(</span><span class="name">JSONObject</span><span class="op">)</span><br />
-<a class="lnum" href="#204" name="204">0204</a><br />
-<a class="lnum" href="#205" name="205">0205</a><br />
-<a class="lnum" href="#206" name="206">0206</a><span class="keyword">def</span>&#0160;<span class="name">JSONArray</span><span class="op">(</span><span class="name">match</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">,</span>&#0160;<span class="name">_w</span><span class="op">=</span><span class="name">WHITESPACE</span><span class="op">.</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#207" name="207">0207</a>&#0160;&#0160;&#0160;&#0160;<span class="name">values</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="op">]</span><br />
-<a class="lnum" href="#208" name="208">0208</a>&#0160;&#0160;&#0160;&#0160;<span class="name">s</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">string</span><br />
-<a class="lnum" href="#209" name="209">0209</a>&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#210" name="210">0210</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Look-ahead&#0160;for&#0160;trivial&#0160;empty&#0160;array</span><br />
-<a class="lnum" href="#211" name="211">0211</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="name">nextchar</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#212" name="212">0212</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">==</span>&#0160;<span class="string">']'</span><span class="op">:</span><br />
-<a class="lnum" href="#213" name="213">0213</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">values</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#214" name="214">0214</a>&#0160;&#0160;&#0160;&#0160;<span class="name">iterscan</span>&#0160;<span class="op">=</span>&#0160;<span class="name">JSONScanner</span><span class="op">.</span><span class="name">iterscan</span><br />
-<a class="lnum" href="#215" name="215">0215</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">while</span>&#0160;<span class="name">True</span><span class="op">:</span><br />
-<a class="lnum" href="#216" name="216">0216</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#217" name="217">0217</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">value</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">iterscan</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">idx</span><span class="op">=</span><span class="name">end</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">=</span><span class="name">context</span><span class="op">)</span><span class="op">.</span><span class="name">next</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#218" name="218">0218</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">StopIteration</span><span class="op">:</span><br />
-<a class="lnum" href="#219" name="219">0219</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;object"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#220" name="220">0220</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">values</span><span class="op">.</span><span class="name">append</span><span class="op">(</span><span class="name">value</span><span class="op">)</span><br />
-<a class="lnum" href="#221" name="221">0221</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#222" name="222">0222</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">nextchar</span>&#0160;<span class="op">=</span>&#0160;<span class="name">s</span><span class="op">[</span><span class="name">end</span><span class="op">:</span><span class="name">end</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">]</span><br />
-<a class="lnum" href="#223" name="223">0223</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#224" name="224">0224</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">==</span>&#0160;<span class="string">']'</span><span class="op">:</span><br />
-<a class="lnum" href="#225" name="225">0225</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">break</span><br />
-<a class="lnum" href="#226" name="226">0226</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">nextchar</span>&#0160;<span class="op">!=</span>&#0160;<span class="string">','</span><span class="op">:</span><br />
-<a class="lnum" href="#227" name="227">0227</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Expecting&#0160;,&#0160;delimiter"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#228" name="228">0228</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#229" name="229">0229</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">values</span><span class="op">,</span>&#0160;<span class="name">end</span><br />
-<a class="lnum" href="#230" name="230">0230</a><span class="name">pattern</span><span class="op">(</span><span class="string">r'\['</span><span class="op">)</span><span class="op">(</span><span class="name">JSONArray</span><span class="op">)</span><br />
-<a class="lnum" href="#231" name="231">0231</a><br />
-<a class="lnum" href="#232" name="232">0232</a><br />
-<a class="lnum" href="#233" name="233">0233</a><span class="name">ANYTHING</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><br />
-<a class="lnum" href="#234" name="234">0234</a>&#0160;&#0160;&#0160;&#0160;<span class="name">JSONObject</span><span class="op">,</span><br />
-<a class="lnum" href="#235" name="235">0235</a>&#0160;&#0160;&#0160;&#0160;<span class="name">JSONArray</span><span class="op">,</span><br />
-<a class="lnum" href="#236" name="236">0236</a>&#0160;&#0160;&#0160;&#0160;<span class="name">JSONString</span><span class="op">,</span><br />
-<a class="lnum" href="#237" name="237">0237</a>&#0160;&#0160;&#0160;&#0160;<span class="name">JSONConstant</span><span class="op">,</span><br />
-<a class="lnum" href="#238" name="238">0238</a>&#0160;&#0160;&#0160;&#0160;<span class="name">JSONNumber</span><span class="op">,</span><br />
-<a class="lnum" href="#239" name="239">0239</a><span class="op">]</span><br />
-<a class="lnum" href="#240" name="240">0240</a><br />
-<a class="lnum" href="#241" name="241">0241</a><span class="name">JSONScanner</span>&#0160;<span class="op">=</span>&#0160;<span class="name">Scanner</span><span class="op">(</span><span class="name">ANYTHING</span><span class="op">)</span><br />
-<a class="lnum" href="#242" name="242">0242</a><br />
-<a class="lnum" href="#243" name="243">0243</a><br />
-<a class="lnum" href="#244" name="244">0244</a><span class="keyword">class</span>&#0160;<span class="name">JSONDecoder</span><span class="op">(</span><span class="name">object</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#245" name="245">0245</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#246" name="246">0246</a><span class="string">&#0160;&#0160;&#0160;&#0160;Simple&#0160;JSON&#0160;&lt;http://json.org&gt;&#0160;decoder</span><br />
-<a class="lnum" href="#247" name="247">0247</a><span class="string"></span><br />
-<a class="lnum" href="#248" name="248">0248</a><span class="string">&#0160;&#0160;&#0160;&#0160;Performs&#0160;the&#0160;following&#0160;translations&#0160;in&#0160;decoding&#0160;by&#0160;default:</span><br />
-<a class="lnum" href="#249" name="249">0249</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#250" name="250">0250</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#251" name="251">0251</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;JSON&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;Python&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#252" name="252">0252</a><span class="string">&#0160;&#0160;&#0160;&#0160;+===============+===================+</span><br />
-<a class="lnum" href="#253" name="253">0253</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;object&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;dict&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#254" name="254">0254</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#255" name="255">0255</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;array&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;list&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#256" name="256">0256</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#257" name="257">0257</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;string&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;unicode&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#258" name="258">0258</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#259" name="259">0259</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;number&#0160;(int)&#0160;&#0160;|&#0160;int,&#0160;long&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#260" name="260">0260</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#261" name="261">0261</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;number&#0160;(real)&#0160;|&#0160;float&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#262" name="262">0262</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#263" name="263">0263</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;true&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;True&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#264" name="264">0264</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#265" name="265">0265</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;false&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;False&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#266" name="266">0266</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#267" name="267">0267</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;null&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;None&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#268" name="268">0268</a><span class="string">&#0160;&#0160;&#0160;&#0160;+---------------+-------------------+</span><br />
-<a class="lnum" href="#269" name="269">0269</a><span class="string"></span><br />
-<a class="lnum" href="#270" name="270">0270</a><span class="string">&#0160;&#0160;&#0160;&#0160;It&#0160;also&#0160;understands&#0160;``NaN``,&#0160;``Infinity``,&#0160;and&#0160;``-Infinity``&#0160;as</span><br />
-<a class="lnum" href="#271" name="271">0271</a><span class="string">&#0160;&#0160;&#0160;&#0160;their&#0160;corresponding&#0160;``float``&#0160;values,&#0160;which&#0160;is&#0160;outside&#0160;the&#0160;JSON&#0160;spec.</span><br />
-<a class="lnum" href="#272" name="272">0272</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#273" name="273">0273</a><br />
-<a class="lnum" href="#274" name="274">0274</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_scanner</span>&#0160;<span class="op">=</span>&#0160;<span class="name">Scanner</span><span class="op">(</span><span class="name">ANYTHING</span><span class="op">)</span><br />
-<a class="lnum" href="#275" name="275">0275</a>&#0160;&#0160;&#0160;&#0160;<span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="string">'__init__'</span><span class="op">,</span>&#0160;<span class="string">'decode'</span><span class="op">,</span>&#0160;<span class="string">'raw_decode'</span><span class="op">]</span><br />
-<a class="lnum" href="#276" name="276">0276</a><br />
-<a class="lnum" href="#277" name="277">0277</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">__init__</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">object_hook</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_float</span><span class="op">=</span><span class="name">None</span><span class="op">,</span><br />
-<a class="lnum" href="#278" name="278">0278</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">parse_int</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">parse_constant</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">strict</span><span class="op">=</span><span class="name">True</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#279" name="279">0279</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#280" name="280">0280</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;``encoding``&#0160;determines&#0160;the&#0160;encoding&#0160;used&#0160;to&#0160;interpret&#0160;any&#0160;``str``</span><br />
-<a class="lnum" href="#281" name="281">0281</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;objects&#0160;decoded&#0160;by&#0160;this&#0160;instance&#0160;(utf-8&#0160;by&#0160;default).&#0160;&#0160;It&#0160;has&#0160;no</span><br />
-<a class="lnum" href="#282" name="282">0282</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;effect&#0160;when&#0160;decoding&#0160;``unicode``&#0160;objects.</span><br />
-<a class="lnum" href="#283" name="283">0283</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#284" name="284">0284</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Note&#0160;that&#0160;currently&#0160;only&#0160;encodings&#0160;that&#0160;are&#0160;a&#0160;superset&#0160;of&#0160;ASCII&#0160;work,</span><br />
-<a class="lnum" href="#285" name="285">0285</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;strings&#0160;of&#0160;other&#0160;encodings&#0160;should&#0160;be&#0160;passed&#0160;in&#0160;as&#0160;``unicode``.</span><br />
-<a class="lnum" href="#286" name="286">0286</a><span class="string"></span><br />
-<a class="lnum" href="#287" name="287">0287</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;``object_hook``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the&#0160;result</span><br />
-<a class="lnum" href="#288" name="288">0288</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;of&#0160;every&#0160;JSON&#0160;object&#0160;decoded&#0160;and&#0160;its&#0160;return&#0160;value&#0160;will&#0160;be&#0160;used&#0160;in</span><br />
-<a class="lnum" href="#289" name="289">0289</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;place&#0160;of&#0160;the&#0160;given&#0160;``dict``.&#0160;&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;provide&#0160;custom</span><br />
-<a class="lnum" href="#290" name="290">0290</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;deserializations&#0160;(e.g.&#0160;to&#0160;support&#0160;JSON-RPC&#0160;class&#0160;hinting).</span><br />
-<a class="lnum" href="#291" name="291">0291</a><span class="string"></span><br />
-<a class="lnum" href="#292" name="292">0292</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;``parse_float``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the&#0160;string</span><br />
-<a class="lnum" href="#293" name="293">0293</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;of&#0160;every&#0160;JSON&#0160;float&#0160;to&#0160;be&#0160;decoded.&#0160;By&#0160;default&#0160;this&#0160;is&#0160;equivalent&#0160;to</span><br />
-<a class="lnum" href="#294" name="294">0294</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;float(num_str).&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;use&#0160;another&#0160;datatype&#0160;or&#0160;parser</span><br />
-<a class="lnum" href="#295" name="295">0295</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;for&#0160;JSON&#0160;floats&#0160;(e.g.&#0160;decimal.Decimal).</span><br />
-<a class="lnum" href="#296" name="296">0296</a><span class="string"></span><br />
-<a class="lnum" href="#297" name="297">0297</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;``parse_int``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;the&#0160;string</span><br />
-<a class="lnum" href="#298" name="298">0298</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;of&#0160;every&#0160;JSON&#0160;int&#0160;to&#0160;be&#0160;decoded.&#0160;By&#0160;default&#0160;this&#0160;is&#0160;equivalent&#0160;to</span><br />
-<a class="lnum" href="#299" name="299">0299</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;int(num_str).&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;use&#0160;another&#0160;datatype&#0160;or&#0160;parser</span><br />
-<a class="lnum" href="#300" name="300">0300</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;for&#0160;JSON&#0160;integers&#0160;(e.g.&#0160;float).</span><br />
-<a class="lnum" href="#301" name="301">0301</a><span class="string"></span><br />
-<a class="lnum" href="#302" name="302">0302</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;``parse_constant``,&#0160;if&#0160;specified,&#0160;will&#0160;be&#0160;called&#0160;with&#0160;one&#0160;of&#0160;the</span><br />
-<a class="lnum" href="#303" name="303">0303</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;following&#0160;strings:&#0160;-Infinity,&#0160;Infinity,&#0160;NaN,&#0160;null,&#0160;true,&#0160;false.</span><br />
-<a class="lnum" href="#304" name="304">0304</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;raise&#0160;an&#0160;exception&#0160;if&#0160;invalid&#0160;JSON&#0160;numbers</span><br />
-<a class="lnum" href="#305" name="305">0305</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;are&#0160;encountered.</span><br />
-<a class="lnum" href="#306" name="306">0306</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#307" name="307">0307</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encoding</span><br />
-<a class="lnum" href="#308" name="308">0308</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">object_hook</span>&#0160;<span class="op">=</span>&#0160;<span class="name">object_hook</span><br />
-<a class="lnum" href="#309" name="309">0309</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">parse_float</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_float</span><br />
-<a class="lnum" href="#310" name="310">0310</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">parse_int</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_int</span><br />
-<a class="lnum" href="#311" name="311">0311</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">parse_constant</span>&#0160;<span class="op">=</span>&#0160;<span class="name">parse_constant</span><br />
-<a class="lnum" href="#312" name="312">0312</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">strict</span>&#0160;<span class="op">=</span>&#0160;<span class="name">strict</span><br />
-<a class="lnum" href="#313" name="313">0313</a><br />
-<a class="lnum" href="#314" name="314">0314</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">decode</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">_w</span><span class="op">=</span><span class="name">WHITESPACE</span><span class="op">.</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#315" name="315">0315</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#316" name="316">0316</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Return&#0160;the&#0160;Python&#0160;representation&#0160;of&#0160;``s``&#0160;(a&#0160;``str``&#0160;or&#0160;``unicode``</span><br />
-<a class="lnum" href="#317" name="317">0317</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;instance&#0160;containing&#0160;a&#0160;JSON&#0160;document)</span><br />
-<a class="lnum" href="#318" name="318">0318</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#319" name="319">0319</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">raw_decode</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">idx</span><span class="op">=</span><span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="number">0</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#320" name="320">0320</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_w</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">)</span><span class="op">.</span><span class="name">end</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#321" name="321">0321</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">end</span>&#0160;<span class="op">!=</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#322" name="322">0322</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="name">errmsg</span><span class="op">(</span><span class="string">"Extra&#0160;data"</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="name">end</span><span class="op">,</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#323" name="323">0323</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">obj</span><br />
-<a class="lnum" href="#324" name="324">0324</a><br />
-<a class="lnum" href="#325" name="325">0325</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">raw_decode</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#326" name="326">0326</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#327" name="327">0327</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Decode&#0160;a&#0160;JSON&#0160;document&#0160;from&#0160;``s``&#0160;(a&#0160;``str``&#0160;or&#0160;``unicode``&#0160;beginning</span><br />
-<a class="lnum" href="#328" name="328">0328</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;with&#0160;a&#0160;JSON&#0160;document)&#0160;and&#0160;return&#0160;a&#0160;2-tuple&#0160;of&#0160;the&#0160;Python</span><br />
-<a class="lnum" href="#329" name="329">0329</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;representation&#0160;and&#0160;the&#0160;index&#0160;in&#0160;``s``&#0160;where&#0160;the&#0160;document&#0160;ended.</span><br />
-<a class="lnum" href="#330" name="330">0330</a><span class="string"></span><br />
-<a class="lnum" href="#331" name="331">0331</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;This&#0160;can&#0160;be&#0160;used&#0160;to&#0160;decode&#0160;a&#0160;JSON&#0160;document&#0160;from&#0160;a&#0160;string&#0160;that&#0160;may</span><br />
-<a class="lnum" href="#332" name="332">0332</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;have&#0160;extraneous&#0160;data&#0160;at&#0160;the&#0160;end.</span><br />
-<a class="lnum" href="#333" name="333">0333</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#334" name="334">0334</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">kw</span><span class="op">.</span><span class="name">setdefault</span><span class="op">(</span><span class="string">'context'</span><span class="op">,</span>&#0160;<span class="name">self</span><span class="op">)</span><br />
-<a class="lnum" href="#335" name="335">0335</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#336" name="336">0336</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_scanner</span><span class="op">.</span><span class="name">iterscan</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">.</span><span class="name">next</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#337" name="337">0337</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">StopIteration</span><span class="op">:</span><br />
-<a class="lnum" href="#338" name="338">0338</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="string">"No&#0160;JSON&#0160;object&#0160;could&#0160;be&#0160;decoded"</span><span class="op">)</span><br />
-<a class="lnum" href="#339" name="339">0339</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">obj</span><span class="op">,</span>&#0160;<span class="name">end</span><br />
-<a class="lnum" href="#340" name="340">0340</a><br />
-<a class="lnum" href="#341" name="341">0341</a><span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="string">'JSONDecoder'</span><span class="op">]</span></code></div></body></html> \ No newline at end of file
diff --git a/docs/simplejson/encoder.py.html b/docs/simplejson/encoder.py.html
deleted file mode 100644
index a61cedd..0000000
--- a/docs/simplejson/encoder.py.html
+++ /dev/null
@@ -1,455 +0,0 @@
-<html><head><title>/Users/bob/src/simplejson/simplejson/encoder.py</title>
- <script type="text/javascript"><!--
-
-function show_line_range() {
- var href = document.location.href;
- if (href.indexOf('?') == -1) {
- return;
- }
- var qs = href.substring(href.indexOf('?')+1);
- if (qs.indexOf('#') >= 0) {
- qs = qs.substring(0, qs.indexOf('#'));
- }
- var first = qs.match(/f=(\d+)/)[1];
- var last = qs.match(/l=(\d+)/)[1];
- if (! first || ! last) {
- return;
- }
- var anchors = document.getElementsByTagName('A');
- var container = document.createElement('DIV');
- container.className = 'highlighted';
- var children = [];
- var start = null;
- var parent = null;
- var highlight = false;
- for (var i = 0; i < anchors.length; i++) {
- var el = anchors[i];
- if (el.getAttribute('name') == first) {
- start = el.previousSibling;
- parent = el.parentNode;
- highlight = true;
- }
- if (el.getAttribute('name') == last) {
- break;
- }
- if (highlight) {
- children[children.length] = el;
- el = el.nextSibling;
- while (el && el.tagName != 'A') {
- children[children.length] = el;
- el = el.nextSibling;
- }
- }
- }
- for (i=0; i<children.length; i++) {
- container.appendChild(children[i]);
- }
- if (start) {
- start.parentNode.insertBefore(container, start.nextSibling);
- } else {
- parent.insertBefore(container, parent.childNodes[0]);
- }
-}
-
- // --></script>
- <style>
- div.python {
- color: #333
- }
- div.python a.lnum {
- color: #555;
- background-color: #eee;
- border-right: 1px solid #999;
- padding-right: 2px;
- margin-right: 4px;
- }
- div.python span.comment { color: #933 }
- div.python span.keyword { color: #a3e; font-weight: bold }
- div.python span.op { color: #c96 }
- div.python span.string { color: #6a6 }
- div.python span.name { }
- div.python span.text { color: #333 }
- div.highlighted { background-color: #ff9; border: 1px solid #009 }
- </style></head><body onload="show_line_range()"><div class="python"><code><a class="lnum" href="#1" name="1">0001</a><span class="string">"""</span><br />
-<a class="lnum" href="#2" name="2">0002</a><span class="string">Implementation&#0160;of&#0160;JSONEncoder</span><br />
-<a class="lnum" href="#3" name="3">0003</a><span class="string">"""</span><br />
-<a class="lnum" href="#4" name="4">0004</a><span class="keyword">import</span>&#0160;<span class="name">re</span><br />
-<a class="lnum" href="#5" name="5">0005</a><br />
-<a class="lnum" href="#6" name="6">0006</a><span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#7" name="7">0007</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">from</span>&#0160;<span class="name">simplejson</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">_speedups</span><br />
-<a class="lnum" href="#8" name="8">0008</a><span class="keyword">except</span>&#0160;<span class="name">ImportError</span><span class="op">:</span><br />
-<a class="lnum" href="#9" name="9">0009</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_speedups</span>&#0160;<span class="op">=</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#10" name="10">0010</a><br />
-<a class="lnum" href="#11" name="11">0011</a><span class="name">ESCAPE</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="string">r'[\x00-\x1f\\"\b\f\n\r\t]'</span><span class="op">)</span><br />
-<a class="lnum" href="#12" name="12">0012</a><span class="name">ESCAPE_ASCII</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="string">r'([\\"/]|[^\&#0160;-~])'</span><span class="op">)</span><br />
-<a class="lnum" href="#13" name="13">0013</a><span class="name">ESCAPE_DCT</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><br />
-<a class="lnum" href="#14" name="14">0014</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\\'</span><span class="op">:</span>&#0160;<span class="string">'\\\\'</span><span class="op">,</span><br />
-<a class="lnum" href="#15" name="15">0015</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'"'</span><span class="op">:</span>&#0160;<span class="string">'\\"'</span><span class="op">,</span><br />
-<a class="lnum" href="#16" name="16">0016</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\b'</span><span class="op">:</span>&#0160;<span class="string">'\\b'</span><span class="op">,</span><br />
-<a class="lnum" href="#17" name="17">0017</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\f'</span><span class="op">:</span>&#0160;<span class="string">'\\f'</span><span class="op">,</span><br />
-<a class="lnum" href="#18" name="18">0018</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\n'</span><span class="op">:</span>&#0160;<span class="string">'\\n'</span><span class="op">,</span><br />
-<a class="lnum" href="#19" name="19">0019</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\r'</span><span class="op">:</span>&#0160;<span class="string">'\\r'</span><span class="op">,</span><br />
-<a class="lnum" href="#20" name="20">0020</a>&#0160;&#0160;&#0160;&#0160;<span class="string">'\t'</span><span class="op">:</span>&#0160;<span class="string">'\\t'</span><span class="op">,</span><br />
-<a class="lnum" href="#21" name="21">0021</a><span class="op">}</span><br />
-<a class="lnum" href="#22" name="22">0022</a><span class="keyword">for</span>&#0160;<span class="name">i</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">range</span><span class="op">(</span><span class="number">0x20</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#23" name="23">0023</a>&#0160;&#0160;&#0160;&#0160;<span class="name">ESCAPE_DCT</span><span class="op">.</span><span class="name">setdefault</span><span class="op">(</span><span class="name">chr</span><span class="op">(</span><span class="name">i</span><span class="op">)</span><span class="op">,</span>&#0160;<span class="string">'\\u%04x'</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">i</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#24" name="24">0024</a><br />
-<a class="lnum" href="#25" name="25">0025</a><span class="comment">#&#0160;Assume&#0160;this&#0160;produces&#0160;an&#0160;infinity&#0160;on&#0160;all&#0160;machines&#0160;(probably&#0160;not&#0160;guaranteed)</span><br />
-<a class="lnum" href="#26" name="26">0026</a><span class="comment"></span><span class="name">INFINITY</span>&#0160;<span class="op">=</span>&#0160;<span class="name">float</span><span class="op">(</span><span class="string">'1e66666'</span><span class="op">)</span><br />
-<a class="lnum" href="#27" name="27">0027</a><span class="name">FLOAT_REPR</span>&#0160;<span class="op">=</span>&#0160;<span class="name">repr</span><br />
-<a class="lnum" href="#28" name="28">0028</a><br />
-<a class="lnum" href="#29" name="29">0029</a><span class="keyword">def</span>&#0160;<span class="name">floatstr</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">True</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#30" name="30">0030</a>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Check&#0160;for&#0160;specials.&#0160;&#0160;Note&#0160;that&#0160;this&#0160;type&#0160;of&#0160;test&#0160;is&#0160;processor-&#0160;and/or</span><br />
-<a class="lnum" href="#31" name="31">0031</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;platform-specific,&#0160;so&#0160;do&#0160;tests&#0160;which&#0160;don't&#0160;depend&#0160;on&#0160;the&#0160;internals.</span><br />
-<a class="lnum" href="#32" name="32">0032</a><span class="comment"></span><br />
-<a class="lnum" href="#33" name="33">0033</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">o</span>&#0160;<span class="op">!=</span>&#0160;<span class="name">o</span><span class="op">:</span><br />
-<a class="lnum" href="#34" name="34">0034</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">text</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'NaN'</span><br />
-<a class="lnum" href="#35" name="35">0035</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">o</span>&#0160;<span class="op">==</span>&#0160;<span class="name">INFINITY</span><span class="op">:</span><br />
-<a class="lnum" href="#36" name="36">0036</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">text</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'Infinity'</span><br />
-<a class="lnum" href="#37" name="37">0037</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">o</span>&#0160;<span class="op">==</span>&#0160;<span class="op">-</span><span class="name">INFINITY</span><span class="op">:</span><br />
-<a class="lnum" href="#38" name="38">0038</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">text</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'-Infinity'</span><br />
-<a class="lnum" href="#39" name="39">0039</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#40" name="40">0040</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">FLOAT_REPR</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#41" name="41">0041</a><br />
-<a class="lnum" href="#42" name="42">0042</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">allow_nan</span><span class="op">:</span><br />
-<a class="lnum" href="#43" name="43">0043</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="string">"Out&#0160;of&#0160;range&#0160;float&#0160;values&#0160;are&#0160;not&#0160;JSON&#0160;compliant:&#0160;%r"</span><br />
-<a class="lnum" href="#44" name="44">0044</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">o</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#45" name="45">0045</a><br />
-<a class="lnum" href="#46" name="46">0046</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">text</span><br />
-<a class="lnum" href="#47" name="47">0047</a><br />
-<a class="lnum" href="#48" name="48">0048</a><br />
-<a class="lnum" href="#49" name="49">0049</a><span class="keyword">def</span>&#0160;<span class="name">encode_basestring</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#50" name="50">0050</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#51" name="51">0051</a><span class="string">&#0160;&#0160;&#0160;&#0160;Return&#0160;a&#0160;JSON&#0160;representation&#0160;of&#0160;a&#0160;Python&#0160;string</span><br />
-<a class="lnum" href="#52" name="52">0052</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#53" name="53">0053</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">replace</span><span class="op">(</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#54" name="54">0054</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">ESCAPE_DCT</span><span class="op">[</span><span class="name">match</span><span class="op">.</span><span class="name">group</span><span class="op">(</span><span class="number">0</span><span class="op">)</span><span class="op">]</span><br />
-<a class="lnum" href="#55" name="55">0055</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'"'</span>&#0160;<span class="op">+</span>&#0160;<span class="name">ESCAPE</span><span class="op">.</span><span class="name">sub</span><span class="op">(</span><span class="name">replace</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">)</span>&#0160;<span class="op">+</span>&#0160;<span class="string">'"'</span><br />
-<a class="lnum" href="#56" name="56">0056</a><br />
-<a class="lnum" href="#57" name="57">0057</a><br />
-<a class="lnum" href="#58" name="58">0058</a><span class="keyword">def</span>&#0160;<span class="name">encode_basestring_ascii</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#59" name="59">0059</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">replace</span><span class="op">(</span><span class="name">match</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#60" name="60">0060</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">.</span><span class="name">group</span><span class="op">(</span><span class="number">0</span><span class="op">)</span><br />
-<a class="lnum" href="#61" name="61">0061</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#62" name="62">0062</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">ESCAPE_DCT</span><span class="op">[</span><span class="name">s</span><span class="op">]</span><br />
-<a class="lnum" href="#63" name="63">0063</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">KeyError</span><span class="op">:</span><br />
-<a class="lnum" href="#64" name="64">0064</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">n</span>&#0160;<span class="op">=</span>&#0160;<span class="name">ord</span><span class="op">(</span><span class="name">s</span><span class="op">)</span><br />
-<a class="lnum" href="#65" name="65">0065</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">n</span>&#0160;<span class="op">&lt;</span>&#0160;<span class="number">0x10000</span><span class="op">:</span><br />
-<a class="lnum" href="#66" name="66">0066</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'\\u%04x'</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">n</span><span class="op">,</span><span class="op">)</span><br />
-<a class="lnum" href="#67" name="67">0067</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#68" name="68">0068</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;surrogate&#0160;pair</span><br />
-<a class="lnum" href="#69" name="69">0069</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">n</span>&#0160;<span class="op">-=</span>&#0160;<span class="number">0x10000</span><br />
-<a class="lnum" href="#70" name="70">0070</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s1</span>&#0160;<span class="op">=</span>&#0160;<span class="number">0xd800</span>&#0160;<span class="op">|</span>&#0160;<span class="op">(</span><span class="op">(</span><span class="name">n</span>&#0160;<span class="op">&gt;&gt;</span>&#0160;<span class="number">10</span><span class="op">)</span>&#0160;<span class="op">&amp;</span>&#0160;<span class="number">0x3ff</span><span class="op">)</span><br />
-<a class="lnum" href="#71" name="71">0071</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s2</span>&#0160;<span class="op">=</span>&#0160;<span class="number">0xdc00</span>&#0160;<span class="op">|</span>&#0160;<span class="op">(</span><span class="name">n</span>&#0160;<span class="op">&amp;</span>&#0160;<span class="number">0x3ff</span><span class="op">)</span><br />
-<a class="lnum" href="#72" name="72">0072</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'\\u%04x\\u%04x'</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">s1</span><span class="op">,</span>&#0160;<span class="name">s2</span><span class="op">)</span><br />
-<a class="lnum" href="#73" name="73">0073</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'"'</span>&#0160;<span class="op">+</span>&#0160;<span class="name">str</span><span class="op">(</span><span class="name">ESCAPE_ASCII</span><span class="op">.</span><span class="name">sub</span><span class="op">(</span><span class="name">replace</span><span class="op">,</span>&#0160;<span class="name">s</span><span class="op">)</span><span class="op">)</span>&#0160;<span class="op">+</span>&#0160;<span class="string">'"'</span><br />
-<a class="lnum" href="#74" name="74">0074</a><br />
-<a class="lnum" href="#75" name="75">0075</a><br />
-<a class="lnum" href="#76" name="76">0076</a><span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#77" name="77">0077</a>&#0160;&#0160;&#0160;&#0160;<span class="name">encode_basestring_ascii</span>&#0160;<span class="op">=</span>&#0160;<span class="name">_speedups</span><span class="op">.</span><span class="name">encode_basestring_ascii</span><br />
-<a class="lnum" href="#78" name="78">0078</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_need_utf8</span>&#0160;<span class="op">=</span>&#0160;<span class="name">True</span><br />
-<a class="lnum" href="#79" name="79">0079</a><span class="keyword">except</span>&#0160;<span class="name">AttributeError</span><span class="op">:</span><br />
-<a class="lnum" href="#80" name="80">0080</a>&#0160;&#0160;&#0160;&#0160;<span class="name">_need_utf8</span>&#0160;<span class="op">=</span>&#0160;<span class="name">False</span><br />
-<a class="lnum" href="#81" name="81">0081</a><br />
-<a class="lnum" href="#82" name="82">0082</a><br />
-<a class="lnum" href="#83" name="83">0083</a><span class="keyword">class</span>&#0160;<span class="name">JSONEncoder</span><span class="op">(</span><span class="name">object</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#84" name="84">0084</a>&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#85" name="85">0085</a><span class="string">&#0160;&#0160;&#0160;&#0160;Extensible&#0160;JSON&#0160;&lt;http://json.org&gt;&#0160;encoder&#0160;for&#0160;Python&#0160;data&#0160;structures.</span><br />
-<a class="lnum" href="#86" name="86">0086</a><span class="string"></span><br />
-<a class="lnum" href="#87" name="87">0087</a><span class="string">&#0160;&#0160;&#0160;&#0160;Supports&#0160;the&#0160;following&#0160;objects&#0160;and&#0160;types&#0160;by&#0160;default:</span><br />
-<a class="lnum" href="#88" name="88">0088</a><span class="string">&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#89" name="89">0089</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#90" name="90">0090</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;Python&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;JSON&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#91" name="91">0091</a><span class="string">&#0160;&#0160;&#0160;&#0160;+===================+===============+</span><br />
-<a class="lnum" href="#92" name="92">0092</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;dict&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;object&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#93" name="93">0093</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#94" name="94">0094</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;list,&#0160;tuple&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;array&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#95" name="95">0095</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#96" name="96">0096</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;str,&#0160;unicode&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;string&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#97" name="97">0097</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#98" name="98">0098</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;int,&#0160;long,&#0160;float&#0160;&#0160;|&#0160;number&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#99" name="99">0099</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#100" name="100">0100</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;True&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;true&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#101" name="101">0101</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#102" name="102">0102</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;False&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;false&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#103" name="103">0103</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#104" name="104">0104</a><span class="string">&#0160;&#0160;&#0160;&#0160;|&#0160;None&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|&#0160;null&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;|</span><br />
-<a class="lnum" href="#105" name="105">0105</a><span class="string">&#0160;&#0160;&#0160;&#0160;+-------------------+---------------+</span><br />
-<a class="lnum" href="#106" name="106">0106</a><span class="string"></span><br />
-<a class="lnum" href="#107" name="107">0107</a><span class="string">&#0160;&#0160;&#0160;&#0160;To&#0160;extend&#0160;this&#0160;to&#0160;recognize&#0160;other&#0160;objects,&#0160;subclass&#0160;and&#0160;implement&#0160;a</span><br />
-<a class="lnum" href="#108" name="108">0108</a><span class="string">&#0160;&#0160;&#0160;&#0160;``.default()``&#0160;method&#0160;with&#0160;another&#0160;method&#0160;that&#0160;returns&#0160;a&#0160;serializable</span><br />
-<a class="lnum" href="#109" name="109">0109</a><span class="string">&#0160;&#0160;&#0160;&#0160;object&#0160;for&#0160;``o``&#0160;if&#0160;possible,&#0160;otherwise&#0160;it&#0160;should&#0160;call&#0160;the&#0160;superclass</span><br />
-<a class="lnum" href="#110" name="110">0110</a><span class="string">&#0160;&#0160;&#0160;&#0160;implementation&#0160;(to&#0160;raise&#0160;``TypeError``).</span><br />
-<a class="lnum" href="#111" name="111">0111</a><span class="string">&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#112" name="112">0112</a>&#0160;&#0160;&#0160;&#0160;<span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="string">'__init__'</span><span class="op">,</span>&#0160;<span class="string">'default'</span><span class="op">,</span>&#0160;<span class="string">'encode'</span><span class="op">,</span>&#0160;<span class="string">'iterencode'</span><span class="op">]</span><br />
-<a class="lnum" href="#113" name="113">0113</a>&#0160;&#0160;&#0160;&#0160;<span class="name">item_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="string">',&#0160;'</span><br />
-<a class="lnum" href="#114" name="114">0114</a>&#0160;&#0160;&#0160;&#0160;<span class="name">key_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="string">':&#0160;'</span><br />
-<a class="lnum" href="#115" name="115">0115</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">__init__</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">skipkeys</span><span class="op">=</span><span class="name">False</span><span class="op">,</span>&#0160;<span class="name">ensure_ascii</span><span class="op">=</span><span class="name">True</span><span class="op">,</span><br />
-<a class="lnum" href="#116" name="116">0116</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">check_circular</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">allow_nan</span><span class="op">=</span><span class="name">True</span><span class="op">,</span>&#0160;<span class="name">sort_keys</span><span class="op">=</span><span class="name">False</span><span class="op">,</span><br />
-<a class="lnum" href="#117" name="117">0117</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">indent</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">separators</span><span class="op">=</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">encoding</span><span class="op">=</span><span class="string">'utf-8'</span><span class="op">,</span>&#0160;<span class="name">default</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#118" name="118">0118</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#119" name="119">0119</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Constructor&#0160;for&#0160;JSONEncoder,&#0160;with&#0160;sensible&#0160;defaults.</span><br />
-<a class="lnum" href="#120" name="120">0120</a><span class="string"></span><br />
-<a class="lnum" href="#121" name="121">0121</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;skipkeys&#0160;is&#0160;False,&#0160;then&#0160;it&#0160;is&#0160;a&#0160;TypeError&#0160;to&#0160;attempt</span><br />
-<a class="lnum" href="#122" name="122">0122</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;encoding&#0160;of&#0160;keys&#0160;that&#0160;are&#0160;not&#0160;str,&#0160;int,&#0160;long,&#0160;float&#0160;or&#0160;None.&#0160;&#0160;If</span><br />
-<a class="lnum" href="#123" name="123">0123</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;skipkeys&#0160;is&#0160;True,&#0160;such&#0160;items&#0160;are&#0160;simply&#0160;skipped.</span><br />
-<a class="lnum" href="#124" name="124">0124</a><span class="string"></span><br />
-<a class="lnum" href="#125" name="125">0125</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;ensure_ascii&#0160;is&#0160;True,&#0160;the&#0160;output&#0160;is&#0160;guaranteed&#0160;to&#0160;be&#0160;str</span><br />
-<a class="lnum" href="#126" name="126">0126</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;objects&#0160;with&#0160;all&#0160;incoming&#0160;unicode&#0160;characters&#0160;escaped.&#0160;&#0160;If</span><br />
-<a class="lnum" href="#127" name="127">0127</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;ensure_ascii&#0160;is&#0160;false,&#0160;the&#0160;output&#0160;will&#0160;be&#0160;unicode&#0160;object.</span><br />
-<a class="lnum" href="#128" name="128">0128</a><span class="string"></span><br />
-<a class="lnum" href="#129" name="129">0129</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;check_circular&#0160;is&#0160;True,&#0160;then&#0160;lists,&#0160;dicts,&#0160;and&#0160;custom&#0160;encoded</span><br />
-<a class="lnum" href="#130" name="130">0130</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;objects&#0160;will&#0160;be&#0160;checked&#0160;for&#0160;circular&#0160;references&#0160;during&#0160;encoding&#0160;to</span><br />
-<a class="lnum" href="#131" name="131">0131</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;prevent&#0160;an&#0160;infinite&#0160;recursion&#0160;(which&#0160;would&#0160;cause&#0160;an&#0160;OverflowError).</span><br />
-<a class="lnum" href="#132" name="132">0132</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Otherwise,&#0160;no&#0160;such&#0160;check&#0160;takes&#0160;place.</span><br />
-<a class="lnum" href="#133" name="133">0133</a><span class="string"></span><br />
-<a class="lnum" href="#134" name="134">0134</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;allow_nan&#0160;is&#0160;True,&#0160;then&#0160;NaN,&#0160;Infinity,&#0160;and&#0160;-Infinity&#0160;will&#0160;be</span><br />
-<a class="lnum" href="#135" name="135">0135</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;encoded&#0160;as&#0160;such.&#0160;&#0160;This&#0160;behavior&#0160;is&#0160;not&#0160;JSON&#0160;specification&#0160;compliant,</span><br />
-<a class="lnum" href="#136" name="136">0136</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;but&#0160;is&#0160;consistent&#0160;with&#0160;most&#0160;JavaScript&#0160;based&#0160;encoders&#0160;and&#0160;decoders.</span><br />
-<a class="lnum" href="#137" name="137">0137</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Otherwise,&#0160;it&#0160;will&#0160;be&#0160;a&#0160;ValueError&#0160;to&#0160;encode&#0160;such&#0160;floats.</span><br />
-<a class="lnum" href="#138" name="138">0138</a><span class="string"></span><br />
-<a class="lnum" href="#139" name="139">0139</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;sort_keys&#0160;is&#0160;True,&#0160;then&#0160;the&#0160;output&#0160;of&#0160;dictionaries&#0160;will&#0160;be</span><br />
-<a class="lnum" href="#140" name="140">0140</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;sorted&#0160;by&#0160;key;&#0160;this&#0160;is&#0160;useful&#0160;for&#0160;regression&#0160;tests&#0160;to&#0160;ensure</span><br />
-<a class="lnum" href="#141" name="141">0141</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;that&#0160;JSON&#0160;serializations&#0160;can&#0160;be&#0160;compared&#0160;on&#0160;a&#0160;day-to-day&#0160;basis.</span><br />
-<a class="lnum" href="#142" name="142">0142</a><span class="string"></span><br />
-<a class="lnum" href="#143" name="143">0143</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;indent&#0160;is&#0160;a&#0160;non-negative&#0160;integer,&#0160;then&#0160;JSON&#0160;array</span><br />
-<a class="lnum" href="#144" name="144">0144</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;elements&#0160;and&#0160;object&#0160;members&#0160;will&#0160;be&#0160;pretty-printed&#0160;with&#0160;that</span><br />
-<a class="lnum" href="#145" name="145">0145</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;indent&#0160;level.&#0160;&#0160;An&#0160;indent&#0160;level&#0160;of&#0160;0&#0160;will&#0160;only&#0160;insert&#0160;newlines.</span><br />
-<a class="lnum" href="#146" name="146">0146</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;None&#0160;is&#0160;the&#0160;most&#0160;compact&#0160;representation.</span><br />
-<a class="lnum" href="#147" name="147">0147</a><span class="string"></span><br />
-<a class="lnum" href="#148" name="148">0148</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;specified,&#0160;separators&#0160;should&#0160;be&#0160;a&#0160;(item_separator,&#0160;key_separator)</span><br />
-<a class="lnum" href="#149" name="149">0149</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;tuple.&#0160;&#0160;The&#0160;default&#0160;is&#0160;(',&#0160;',&#0160;':&#0160;').&#0160;&#0160;To&#0160;get&#0160;the&#0160;most&#0160;compact&#0160;JSON</span><br />
-<a class="lnum" href="#150" name="150">0150</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;representation&#0160;you&#0160;should&#0160;specify&#0160;(',',&#0160;':')&#0160;to&#0160;eliminate&#0160;whitespace.</span><br />
-<a class="lnum" href="#151" name="151">0151</a><span class="string"></span><br />
-<a class="lnum" href="#152" name="152">0152</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;specified,&#0160;default&#0160;is&#0160;a&#0160;function&#0160;that&#0160;gets&#0160;called&#0160;for&#0160;objects</span><br />
-<a class="lnum" href="#153" name="153">0153</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;that&#0160;can't&#0160;otherwise&#0160;be&#0160;serialized.&#0160;&#0160;It&#0160;should&#0160;return&#0160;a&#0160;JSON&#0160;encodable</span><br />
-<a class="lnum" href="#154" name="154">0154</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;version&#0160;of&#0160;the&#0160;object&#0160;or&#0160;raise&#0160;a&#0160;``TypeError``.</span><br />
-<a class="lnum" href="#155" name="155">0155</a><span class="string"></span><br />
-<a class="lnum" href="#156" name="156">0156</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;If&#0160;encoding&#0160;is&#0160;not&#0160;None,&#0160;then&#0160;all&#0160;input&#0160;strings&#0160;will&#0160;be</span><br />
-<a class="lnum" href="#157" name="157">0157</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;transformed&#0160;into&#0160;unicode&#0160;using&#0160;that&#0160;encoding&#0160;prior&#0160;to&#0160;JSON-encoding.</span><br />
-<a class="lnum" href="#158" name="158">0158</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;The&#0160;default&#0160;is&#0160;UTF-8.</span><br />
-<a class="lnum" href="#159" name="159">0159</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#160" name="160">0160</a><br />
-<a class="lnum" href="#161" name="161">0161</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">skipkeys</span>&#0160;<span class="op">=</span>&#0160;<span class="name">skipkeys</span><br />
-<a class="lnum" href="#162" name="162">0162</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">ensure_ascii</span>&#0160;<span class="op">=</span>&#0160;<span class="name">ensure_ascii</span><br />
-<a class="lnum" href="#163" name="163">0163</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">check_circular</span>&#0160;<span class="op">=</span>&#0160;<span class="name">check_circular</span><br />
-<a class="lnum" href="#164" name="164">0164</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">allow_nan</span>&#0160;<span class="op">=</span>&#0160;<span class="name">allow_nan</span><br />
-<a class="lnum" href="#165" name="165">0165</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">sort_keys</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sort_keys</span><br />
-<a class="lnum" href="#166" name="166">0166</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">indent</span>&#0160;<span class="op">=</span>&#0160;<span class="name">indent</span><br />
-<a class="lnum" href="#167" name="167">0167</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span>&#0160;<span class="op">=</span>&#0160;<span class="number">0</span><br />
-<a class="lnum" href="#168" name="168">0168</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">separators</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#169" name="169">0169</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">item_separator</span><span class="op">,</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">key_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">separators</span><br />
-<a class="lnum" href="#170" name="170">0170</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">default</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#171" name="171">0171</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">default</span>&#0160;<span class="op">=</span>&#0160;<span class="name">default</span><br />
-<a class="lnum" href="#172" name="172">0172</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encoding</span><br />
-<a class="lnum" href="#173" name="173">0173</a><br />
-<a class="lnum" href="#174" name="174">0174</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">_newline_indent</span><span class="op">(</span><span class="name">self</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#175" name="175">0175</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">'\n'</span>&#0160;<span class="op">+</span>&#0160;<span class="op">(</span><span class="string">'&#0160;'</span>&#0160;<span class="op">*</span>&#0160;<span class="op">(</span><span class="name">self</span><span class="op">.</span><span class="name">indent</span>&#0160;<span class="op">*</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#176" name="176">0176</a><br />
-<a class="lnum" href="#177" name="177">0177</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">_iterencode_list</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">lst</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#178" name="178">0178</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">lst</span><span class="op">:</span><br />
-<a class="lnum" href="#179" name="179">0179</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'[]'</span><br />
-<a class="lnum" href="#180" name="180">0180</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span><br />
-<a class="lnum" href="#181" name="181">0181</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#182" name="182">0182</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markerid</span>&#0160;<span class="op">=</span>&#0160;<span class="name">id</span><span class="op">(</span><span class="name">lst</span><span class="op">)</span><br />
-<a class="lnum" href="#183" name="183">0183</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markerid</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">markers</span><span class="op">:</span><br />
-<a class="lnum" href="#184" name="184">0184</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="string">"Circular&#0160;reference&#0160;detected"</span><span class="op">)</span><br />
-<a class="lnum" href="#185" name="185">0185</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">lst</span><br />
-<a class="lnum" href="#186" name="186">0186</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'['</span><br />
-<a class="lnum" href="#187" name="187">0187</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#188" name="188">0188</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#189" name="189">0189</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">newline_indent</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_newline_indent</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#190" name="190">0190</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">item_separator</span>&#0160;<span class="op">+</span>&#0160;<span class="name">newline_indent</span><br />
-<a class="lnum" href="#191" name="191">0191</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">newline_indent</span><br />
-<a class="lnum" href="#192" name="192">0192</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#193" name="193">0193</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">newline_indent</span>&#0160;<span class="op">=</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#194" name="194">0194</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">item_separator</span><br />
-<a class="lnum" href="#195" name="195">0195</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">first</span>&#0160;<span class="op">=</span>&#0160;<span class="name">True</span><br />
-<a class="lnum" href="#196" name="196">0196</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">value</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">lst</span><span class="op">:</span><br />
-<a class="lnum" href="#197" name="197">0197</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">first</span><span class="op">:</span><br />
-<a class="lnum" href="#198" name="198">0198</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">first</span>&#0160;<span class="op">=</span>&#0160;<span class="name">False</span><br />
-<a class="lnum" href="#199" name="199">0199</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#200" name="200">0200</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">separator</span><br />
-<a class="lnum" href="#201" name="201">0201</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode</span><span class="op">(</span><span class="name">value</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#202" name="202">0202</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">chunk</span><br />
-<a class="lnum" href="#203" name="203">0203</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">newline_indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#204" name="204">0204</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span>&#0160;<span class="op">-=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#205" name="205">0205</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_newline_indent</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#206" name="206">0206</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">']'</span><br />
-<a class="lnum" href="#207" name="207">0207</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#208" name="208">0208</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">del</span>&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span><br />
-<a class="lnum" href="#209" name="209">0209</a><br />
-<a class="lnum" href="#210" name="210">0210</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">_iterencode_dict</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">dct</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#211" name="211">0211</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">dct</span><span class="op">:</span><br />
-<a class="lnum" href="#212" name="212">0212</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'{}'</span><br />
-<a class="lnum" href="#213" name="213">0213</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span><br />
-<a class="lnum" href="#214" name="214">0214</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#215" name="215">0215</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markerid</span>&#0160;<span class="op">=</span>&#0160;<span class="name">id</span><span class="op">(</span><span class="name">dct</span><span class="op">)</span><br />
-<a class="lnum" href="#216" name="216">0216</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markerid</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">markers</span><span class="op">:</span><br />
-<a class="lnum" href="#217" name="217">0217</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="string">"Circular&#0160;reference&#0160;detected"</span><span class="op">)</span><br />
-<a class="lnum" href="#218" name="218">0218</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">dct</span><br />
-<a class="lnum" href="#219" name="219">0219</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'{'</span><br />
-<a class="lnum" href="#220" name="220">0220</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">key_separator</span><br />
-<a class="lnum" href="#221" name="221">0221</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#222" name="222">0222</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span>&#0160;<span class="op">+=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#223" name="223">0223</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">newline_indent</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_newline_indent</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#224" name="224">0224</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">item_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">item_separator</span>&#0160;<span class="op">+</span>&#0160;<span class="name">newline_indent</span><br />
-<a class="lnum" href="#225" name="225">0225</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">newline_indent</span><br />
-<a class="lnum" href="#226" name="226">0226</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#227" name="227">0227</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">newline_indent</span>&#0160;<span class="op">=</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#228" name="228">0228</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">item_separator</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">item_separator</span><br />
-<a class="lnum" href="#229" name="229">0229</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">first</span>&#0160;<span class="op">=</span>&#0160;<span class="name">True</span><br />
-<a class="lnum" href="#230" name="230">0230</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">ensure_ascii</span><span class="op">:</span><br />
-<a class="lnum" href="#231" name="231">0231</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encode_basestring_ascii</span><br />
-<a class="lnum" href="#232" name="232">0232</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#233" name="233">0233</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encode_basestring</span><br />
-<a class="lnum" href="#234" name="234">0234</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">allow_nan</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">allow_nan</span><br />
-<a class="lnum" href="#235" name="235">0235</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">sort_keys</span><span class="op">:</span><br />
-<a class="lnum" href="#236" name="236">0236</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">keys</span>&#0160;<span class="op">=</span>&#0160;<span class="name">dct</span><span class="op">.</span><span class="name">keys</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#237" name="237">0237</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">keys</span><span class="op">.</span><span class="name">sort</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#238" name="238">0238</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">items</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="op">(</span><span class="name">k</span><span class="op">,</span>&#0160;<span class="name">dct</span><span class="op">[</span><span class="name">k</span><span class="op">]</span><span class="op">)</span>&#0160;<span class="keyword">for</span>&#0160;<span class="name">k</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">keys</span><span class="op">]</span><br />
-<a class="lnum" href="#239" name="239">0239</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#240" name="240">0240</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">items</span>&#0160;<span class="op">=</span>&#0160;<span class="name">dct</span><span class="op">.</span><span class="name">iteritems</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#241" name="241">0241</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">encoding</span><br />
-<a class="lnum" href="#242" name="242">0242</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_do_decode</span>&#0160;<span class="op">=</span>&#0160;<span class="op">(</span><span class="name">_encoding</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#243" name="243">0243</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="op">(</span><span class="name">_need_utf8</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">_encoding</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'utf-8'</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#244" name="244">0244</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">key</span><span class="op">,</span>&#0160;<span class="name">value</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">items</span><span class="op">:</span><br />
-<a class="lnum" href="#245" name="245">0245</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">key</span><span class="op">,</span>&#0160;<span class="name">str</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#246" name="246">0246</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">_do_decode</span><span class="op">:</span><br />
-<a class="lnum" href="#247" name="247">0247</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="name">key</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="name">_encoding</span><span class="op">)</span><br />
-<a class="lnum" href="#248" name="248">0248</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">key</span><span class="op">,</span>&#0160;<span class="name">basestring</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#249" name="249">0249</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">pass</span><br />
-<a class="lnum" href="#250" name="250">0250</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;JavaScript&#0160;is&#0160;weakly&#0160;typed&#0160;for&#0160;these,&#0160;so&#0160;it&#0160;makes&#0160;sense&#0160;to</span><br />
-<a class="lnum" href="#251" name="251">0251</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;also&#0160;allow&#0160;them.&#0160;&#0160;Many&#0160;encoders&#0160;seem&#0160;to&#0160;do&#0160;something&#0160;like&#0160;this.</span><br />
-<a class="lnum" href="#252" name="252">0252</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">key</span><span class="op">,</span>&#0160;<span class="name">float</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#253" name="253">0253</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="name">floatstr</span><span class="op">(</span><span class="name">key</span><span class="op">,</span>&#0160;<span class="name">allow_nan</span><span class="op">)</span><br />
-<a class="lnum" href="#254" name="254">0254</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">key</span><span class="op">,</span>&#0160;<span class="op">(</span><span class="name">int</span><span class="op">,</span>&#0160;<span class="name">long</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#255" name="255">0255</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="name">str</span><span class="op">(</span><span class="name">key</span><span class="op">)</span><br />
-<a class="lnum" href="#256" name="256">0256</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">key</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span><span class="op">:</span><br />
-<a class="lnum" href="#257" name="257">0257</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'true'</span><br />
-<a class="lnum" href="#258" name="258">0258</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">key</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">False</span><span class="op">:</span><br />
-<a class="lnum" href="#259" name="259">0259</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'false'</span><br />
-<a class="lnum" href="#260" name="260">0260</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">key</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#261" name="261">0261</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">key</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'null'</span><br />
-<a class="lnum" href="#262" name="262">0262</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">skipkeys</span><span class="op">:</span><br />
-<a class="lnum" href="#263" name="263">0263</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">continue</span><br />
-<a class="lnum" href="#264" name="264">0264</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#265" name="265">0265</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">TypeError</span><span class="op">(</span><span class="string">"key&#0160;%r&#0160;is&#0160;not&#0160;a&#0160;string"</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">key</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#266" name="266">0266</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">first</span><span class="op">:</span><br />
-<a class="lnum" href="#267" name="267">0267</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">first</span>&#0160;<span class="op">=</span>&#0160;<span class="name">False</span><br />
-<a class="lnum" href="#268" name="268">0268</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#269" name="269">0269</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">item_separator</span><br />
-<a class="lnum" href="#270" name="270">0270</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">encoder</span><span class="op">(</span><span class="name">key</span><span class="op">)</span><br />
-<a class="lnum" href="#271" name="271">0271</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">key_separator</span><br />
-<a class="lnum" href="#272" name="272">0272</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode</span><span class="op">(</span><span class="name">value</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#273" name="273">0273</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">chunk</span><br />
-<a class="lnum" href="#274" name="274">0274</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">newline_indent</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#275" name="275">0275</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">current_indent_level</span>&#0160;<span class="op">-=</span>&#0160;<span class="number">1</span><br />
-<a class="lnum" href="#276" name="276">0276</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_newline_indent</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#277" name="277">0277</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'}'</span><br />
-<a class="lnum" href="#278" name="278">0278</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#279" name="279">0279</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">del</span>&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span><br />
-<a class="lnum" href="#280" name="280">0280</a><br />
-<a class="lnum" href="#281" name="281">0281</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">_iterencode</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#282" name="282">0282</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">basestring</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#283" name="283">0283</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">ensure_ascii</span><span class="op">:</span><br />
-<a class="lnum" href="#284" name="284">0284</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encode_basestring_ascii</span><br />
-<a class="lnum" href="#285" name="285">0285</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#286" name="286">0286</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">encoder</span>&#0160;<span class="op">=</span>&#0160;<span class="name">encode_basestring</span><br />
-<a class="lnum" href="#287" name="287">0287</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">encoding</span><br />
-<a class="lnum" href="#288" name="288">0288</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="op">(</span><span class="name">_encoding</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">str</span><span class="op">)</span><br />
-<a class="lnum" href="#289" name="289">0289</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="op">(</span><span class="name">_need_utf8</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">_encoding</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'utf-8'</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#290" name="290">0290</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">o</span>&#0160;<span class="op">=</span>&#0160;<span class="name">o</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="name">_encoding</span><span class="op">)</span><br />
-<a class="lnum" href="#291" name="291">0291</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">encoder</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#292" name="292">0292</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">o</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#293" name="293">0293</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'null'</span><br />
-<a class="lnum" href="#294" name="294">0294</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">o</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">True</span><span class="op">:</span><br />
-<a class="lnum" href="#295" name="295">0295</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'true'</span><br />
-<a class="lnum" href="#296" name="296">0296</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">o</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">False</span><span class="op">:</span><br />
-<a class="lnum" href="#297" name="297">0297</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="string">'false'</span><br />
-<a class="lnum" href="#298" name="298">0298</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="op">(</span><span class="name">int</span><span class="op">,</span>&#0160;<span class="name">long</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#299" name="299">0299</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">str</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#300" name="300">0300</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">float</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#301" name="301">0301</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">floatstr</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">allow_nan</span><span class="op">)</span><br />
-<a class="lnum" href="#302" name="302">0302</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="op">(</span><span class="name">list</span><span class="op">,</span>&#0160;<span class="name">tuple</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#303" name="303">0303</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode_list</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#304" name="304">0304</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">chunk</span><br />
-<a class="lnum" href="#305" name="305">0305</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">dict</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#306" name="306">0306</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode_dict</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#307" name="307">0307</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">chunk</span><br />
-<a class="lnum" href="#308" name="308">0308</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#309" name="309">0309</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#310" name="310">0310</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markerid</span>&#0160;<span class="op">=</span>&#0160;<span class="name">id</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#311" name="311">0311</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markerid</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">markers</span><span class="op">:</span><br />
-<a class="lnum" href="#312" name="312">0312</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">ValueError</span><span class="op">(</span><span class="string">"Circular&#0160;reference&#0160;detected"</span><span class="op">)</span><br />
-<a class="lnum" href="#313" name="313">0313</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">o</span><br />
-<a class="lnum" href="#314" name="314">0314</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">chunk</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode_default</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#315" name="315">0315</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">chunk</span><br />
-<a class="lnum" href="#316" name="316">0316</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">markers</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#317" name="317">0317</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">del</span>&#0160;<span class="name">markers</span><span class="op">[</span><span class="name">markerid</span><span class="op">]</span><br />
-<a class="lnum" href="#318" name="318">0318</a><br />
-<a class="lnum" href="#319" name="319">0319</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">_iterencode_default</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#320" name="320">0320</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">newobj</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">default</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#321" name="321">0321</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode</span><span class="op">(</span><span class="name">newobj</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><br />
-<a class="lnum" href="#322" name="322">0322</a><br />
-<a class="lnum" href="#323" name="323">0323</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">default</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">o</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#324" name="324">0324</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#325" name="325">0325</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Implement&#0160;this&#0160;method&#0160;in&#0160;a&#0160;subclass&#0160;such&#0160;that&#0160;it&#0160;returns</span><br />
-<a class="lnum" href="#326" name="326">0326</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;a&#0160;serializable&#0160;object&#0160;for&#0160;``o``,&#0160;or&#0160;calls&#0160;the&#0160;base&#0160;implementation</span><br />
-<a class="lnum" href="#327" name="327">0327</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;(to&#0160;raise&#0160;a&#0160;``TypeError``).</span><br />
-<a class="lnum" href="#328" name="328">0328</a><span class="string"></span><br />
-<a class="lnum" href="#329" name="329">0329</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;For&#0160;example,&#0160;to&#0160;support&#0160;arbitrary&#0160;iterators,&#0160;you&#0160;could</span><br />
-<a class="lnum" href="#330" name="330">0330</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;implement&#0160;default&#0160;like&#0160;this::</span><br />
-<a class="lnum" href="#331" name="331">0331</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#332" name="332">0332</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;def&#0160;default(self,&#0160;o):</span><br />
-<a class="lnum" href="#333" name="333">0333</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;try:</span><br />
-<a class="lnum" href="#334" name="334">0334</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;iterable&#0160;=&#0160;iter(o)</span><br />
-<a class="lnum" href="#335" name="335">0335</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;except&#0160;TypeError:</span><br />
-<a class="lnum" href="#336" name="336">0336</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;pass</span><br />
-<a class="lnum" href="#337" name="337">0337</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;else:</span><br />
-<a class="lnum" href="#338" name="338">0338</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;list(iterable)</span><br />
-<a class="lnum" href="#339" name="339">0339</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;return&#0160;JSONEncoder.default(self,&#0160;o)</span><br />
-<a class="lnum" href="#340" name="340">0340</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#341" name="341">0341</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span>&#0160;<span class="name">TypeError</span><span class="op">(</span><span class="string">"%r&#0160;is&#0160;not&#0160;JSON&#0160;serializable"</span>&#0160;<span class="op">%</span>&#0160;<span class="op">(</span><span class="name">o</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#342" name="342">0342</a><br />
-<a class="lnum" href="#343" name="343">0343</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">encode</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">o</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#344" name="344">0344</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#345" name="345">0345</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Return&#0160;a&#0160;JSON&#0160;string&#0160;representation&#0160;of&#0160;a&#0160;Python&#0160;data&#0160;structure.</span><br />
-<a class="lnum" href="#346" name="346">0346</a><span class="string"></span><br />
-<a class="lnum" href="#347" name="347">0347</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&gt;&gt;&gt;&#0160;JSONEncoder().encode({"foo":&#0160;["bar",&#0160;"baz"]})</span><br />
-<a class="lnum" href="#348" name="348">0348</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;'{"foo":&#0160;["bar",&#0160;"baz"]}'</span><br />
-<a class="lnum" href="#349" name="349">0349</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#350" name="350">0350</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;This&#0160;is&#0160;for&#0160;extremely&#0160;simple&#0160;cases&#0160;and&#0160;benchmarks.</span><br />
-<a class="lnum" href="#351" name="351">0351</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">basestring</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#352" name="352">0352</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">isinstance</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">str</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#353" name="353">0353</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">_encoding</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">encoding</span><br />
-<a class="lnum" href="#354" name="354">0354</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="op">(</span><span class="name">_encoding</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#355" name="355">0355</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">and</span>&#0160;<span class="keyword">not</span>&#0160;<span class="op">(</span><span class="name">_encoding</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'utf-8'</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">_need_utf8</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#356" name="356">0356</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">o</span>&#0160;<span class="op">=</span>&#0160;<span class="name">o</span><span class="op">.</span><span class="name">decode</span><span class="op">(</span><span class="name">_encoding</span><span class="op">)</span><br />
-<a class="lnum" href="#357" name="357">0357</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">ensure_ascii</span><span class="op">:</span><br />
-<a class="lnum" href="#358" name="358">0358</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">encode_basestring_ascii</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#359" name="359">0359</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#360" name="360">0360</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">encode_basestring</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><br />
-<a class="lnum" href="#361" name="361">0361</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;This&#0160;doesn't&#0160;pass&#0160;the&#0160;iterator&#0160;directly&#0160;to&#0160;''.join()&#0160;because&#0160;the</span><br />
-<a class="lnum" href="#362" name="362">0362</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;exceptions&#0160;aren't&#0160;as&#0160;detailed.&#0160;&#0160;The&#0160;list&#0160;call&#0160;should&#0160;be&#0160;roughly</span><br />
-<a class="lnum" href="#363" name="363">0363</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;equivalent&#0160;to&#0160;the&#0160;PySequence_Fast&#0160;that&#0160;''.join()&#0160;would&#0160;do.</span><br />
-<a class="lnum" href="#364" name="364">0364</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">chunks</span>&#0160;<span class="op">=</span>&#0160;<span class="name">list</span><span class="op">(</span><span class="name">self</span><span class="op">.</span><span class="name">iterencode</span><span class="op">(</span><span class="name">o</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#365" name="365">0365</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="string">''</span><span class="op">.</span><span class="name">join</span><span class="op">(</span><span class="name">chunks</span><span class="op">)</span><br />
-<a class="lnum" href="#366" name="366">0366</a><br />
-<a class="lnum" href="#367" name="367">0367</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">iterencode</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">o</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#368" name="368">0368</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#369" name="369">0369</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Encode&#0160;the&#0160;given&#0160;object&#0160;and&#0160;yield&#0160;each&#0160;string</span><br />
-<a class="lnum" href="#370" name="370">0370</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;representation&#0160;as&#0160;available.</span><br />
-<a class="lnum" href="#371" name="371">0371</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#372" name="372">0372</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;For&#0160;example::</span><br />
-<a class="lnum" href="#373" name="373">0373</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;</span><br />
-<a class="lnum" href="#374" name="374">0374</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;for&#0160;chunk&#0160;in&#0160;JSONEncoder().iterencode(bigobject):</span><br />
-<a class="lnum" href="#375" name="375">0375</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;mysocket.write(chunk)</span><br />
-<a class="lnum" href="#376" name="376">0376</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#377" name="377">0377</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">check_circular</span><span class="op">:</span><br />
-<a class="lnum" href="#378" name="378">0378</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markers</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><span class="op">}</span><br />
-<a class="lnum" href="#379" name="379">0379</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#380" name="380">0380</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">markers</span>&#0160;<span class="op">=</span>&#0160;<span class="name">None</span><br />
-<a class="lnum" href="#381" name="381">0381</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">_iterencode</span><span class="op">(</span><span class="name">o</span><span class="op">,</span>&#0160;<span class="name">markers</span><span class="op">)</span><br />
-<a class="lnum" href="#382" name="382">0382</a><br />
-<a class="lnum" href="#383" name="383">0383</a><span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="string">'JSONEncoder'</span><span class="op">]</span></code></div></body></html> \ No newline at end of file
diff --git a/docs/simplejson/jsonfilter.py.html b/docs/simplejson/jsonfilter.py.html
deleted file mode 100644
index 874290b..0000000
--- a/docs/simplejson/jsonfilter.py.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<html><head><title>/Users/bob/src/simplejson/simplejson/jsonfilter.py</title>
- <script type="text/javascript"><!--
-
-function show_line_range() {
- var href = document.location.href;
- if (href.indexOf('?') == -1) {
- return;
- }
- var qs = href.substring(href.indexOf('?')+1);
- if (qs.indexOf('#') >= 0) {
- qs = qs.substring(0, qs.indexOf('#'));
- }
- var first = qs.match(/f=(\d+)/)[1];
- var last = qs.match(/l=(\d+)/)[1];
- if (! first || ! last) {
- return;
- }
- var anchors = document.getElementsByTagName('A');
- var container = document.createElement('DIV');
- container.className = 'highlighted';
- var children = [];
- var start = null;
- var parent = null;
- var highlight = false;
- for (var i = 0; i < anchors.length; i++) {
- var el = anchors[i];
- if (el.getAttribute('name') == first) {
- start = el.previousSibling;
- parent = el.parentNode;
- highlight = true;
- }
- if (el.getAttribute('name') == last) {
- break;
- }
- if (highlight) {
- children[children.length] = el;
- el = el.nextSibling;
- while (el && el.tagName != 'A') {
- children[children.length] = el;
- el = el.nextSibling;
- }
- }
- }
- for (i=0; i<children.length; i++) {
- container.appendChild(children[i]);
- }
- if (start) {
- start.parentNode.insertBefore(container, start.nextSibling);
- } else {
- parent.insertBefore(container, parent.childNodes[0]);
- }
-}
-
- // --></script>
- <style>
- div.python {
- color: #333
- }
- div.python a.lnum {
- color: #555;
- background-color: #eee;
- border-right: 1px solid #999;
- padding-right: 2px;
- margin-right: 4px;
- }
- div.python span.comment { color: #933 }
- div.python span.keyword { color: #a3e; font-weight: bold }
- div.python span.op { color: #c96 }
- div.python span.string { color: #6a6 }
- div.python span.name { }
- div.python span.text { color: #333 }
- div.highlighted { background-color: #ff9; border: 1px solid #009 }
- </style></head><body onload="show_line_range()"><div class="python"><code><a class="lnum" href="#1" name="1">0001</a><span class="keyword">import</span>&#0160;<span class="name">simplejson</span><br />
-<a class="lnum" href="#2" name="2">0002</a><span class="keyword">import</span>&#0160;<span class="name">cgi</span><br />
-<a class="lnum" href="#3" name="3">0003</a><br />
-<a class="lnum" href="#4" name="4">0004</a><span class="keyword">class</span>&#0160;<span class="name">JSONFilter</span><span class="op">(</span><span class="name">object</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#5" name="5">0005</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">__init__</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">app</span><span class="op">,</span>&#0160;<span class="name">mime_type</span><span class="op">=</span><span class="string">'text/x-json'</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#6" name="6">0006</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">app</span>&#0160;<span class="op">=</span>&#0160;<span class="name">app</span><br />
-<a class="lnum" href="#7" name="7">0007</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">mime_type</span>&#0160;<span class="op">=</span>&#0160;<span class="name">mime_type</span><br />
-<a class="lnum" href="#8" name="8">0008</a><br />
-<a class="lnum" href="#9" name="9">0009</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">__call__</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">environ</span><span class="op">,</span>&#0160;<span class="name">start_response</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#10" name="10">0010</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Read&#0160;JSON&#0160;POST&#0160;input&#0160;to&#0160;jsonfilter.json&#0160;if&#0160;matching&#0160;mime&#0160;type</span><br />
-<a class="lnum" href="#11" name="11">0011</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">response</span>&#0160;<span class="op">=</span>&#0160;<span class="op">{</span><span class="string">'status'</span><span class="op">:</span>&#0160;<span class="string">'200&#0160;OK'</span><span class="op">,</span>&#0160;<span class="string">'headers'</span><span class="op">:</span>&#0160;<span class="op">[</span><span class="op">]</span><span class="op">}</span><br />
-<a class="lnum" href="#12" name="12">0012</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">json_start_response</span><span class="op">(</span><span class="name">status</span><span class="op">,</span>&#0160;<span class="name">headers</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#13" name="13">0013</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">response</span><span class="op">[</span><span class="string">'status'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">status</span><br />
-<a class="lnum" href="#14" name="14">0014</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">response</span><span class="op">[</span><span class="string">'headers'</span><span class="op">]</span><span class="op">.</span><span class="name">extend</span><span class="op">(</span><span class="name">headers</span><span class="op">)</span><br />
-<a class="lnum" href="#15" name="15">0015</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">environ</span><span class="op">[</span><span class="string">'jsonfilter.mime_type'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">mime_type</span><br />
-<a class="lnum" href="#16" name="16">0016</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">environ</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'REQUEST_METHOD'</span><span class="op">,</span>&#0160;<span class="string">''</span><span class="op">)</span>&#0160;<span class="op">==</span>&#0160;<span class="string">'POST'</span><span class="op">:</span><br />
-<a class="lnum" href="#17" name="17">0017</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">environ</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'CONTENT_TYPE'</span><span class="op">,</span>&#0160;<span class="string">''</span><span class="op">)</span>&#0160;<span class="op">==</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">mime_type</span><span class="op">:</span><br />
-<a class="lnum" href="#18" name="18">0018</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">args</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="name">_</span>&#0160;<span class="keyword">for</span>&#0160;<span class="name">_</span>&#0160;<span class="keyword">in</span>&#0160;<span class="op">[</span><span class="name">environ</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'CONTENT_LENGTH'</span><span class="op">)</span><span class="op">]</span>&#0160;<span class="keyword">if</span>&#0160;<span class="name">_</span><span class="op">]</span><br />
-<a class="lnum" href="#19" name="19">0019</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">data</span>&#0160;<span class="op">=</span>&#0160;<span class="name">environ</span><span class="op">[</span><span class="string">'wsgi.input'</span><span class="op">]</span><span class="op">.</span><span class="name">read</span><span class="op">(</span><span class="op">*</span><span class="name">map</span><span class="op">(</span><span class="name">int</span><span class="op">,</span>&#0160;<span class="name">args</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#20" name="20">0020</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">environ</span><span class="op">[</span><span class="string">'jsonfilter.json'</span><span class="op">]</span>&#0160;<span class="op">=</span>&#0160;<span class="name">simplejson</span><span class="op">.</span><span class="name">loads</span><span class="op">(</span><span class="name">data</span><span class="op">)</span><br />
-<a class="lnum" href="#21" name="21">0021</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">res</span>&#0160;<span class="op">=</span>&#0160;<span class="name">simplejson</span><span class="op">.</span><span class="name">dumps</span><span class="op">(</span><span class="name">self</span><span class="op">.</span><span class="name">app</span><span class="op">(</span><span class="name">environ</span><span class="op">,</span>&#0160;<span class="name">json_start_response</span><span class="op">)</span><span class="op">)</span><br />
-<a class="lnum" href="#22" name="22">0022</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">jsonp</span>&#0160;<span class="op">=</span>&#0160;<span class="name">cgi</span><span class="op">.</span><span class="name">parse_qs</span><span class="op">(</span><span class="name">environ</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'QUERY_STRING'</span><span class="op">,</span>&#0160;<span class="string">''</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'jsonp'</span><span class="op">)</span><br />
-<a class="lnum" href="#23" name="23">0023</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">jsonp</span><span class="op">:</span><br />
-<a class="lnum" href="#24" name="24">0024</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">content_type</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'text/javascript'</span><br />
-<a class="lnum" href="#25" name="25">0025</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">res</span>&#0160;<span class="op">=</span>&#0160;<span class="string">''</span><span class="op">.</span><span class="name">join</span><span class="op">(</span><span class="name">jsonp</span>&#0160;<span class="op">+</span>&#0160;<span class="op">[</span><span class="string">'('</span><span class="op">,</span>&#0160;<span class="name">res</span><span class="op">,</span>&#0160;<span class="string">')'</span><span class="op">]</span><span class="op">)</span><br />
-<a class="lnum" href="#26" name="26">0026</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">elif</span>&#0160;<span class="string">'Opera'</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">environ</span><span class="op">.</span><span class="name">get</span><span class="op">(</span><span class="string">'HTTP_USER_AGENT'</span><span class="op">,</span>&#0160;<span class="string">''</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#27" name="27">0027</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Opera&#0160;has&#0160;bunk&#0160;XMLHttpRequest&#0160;support&#0160;for&#0160;most&#0160;mime&#0160;types</span><br />
-<a class="lnum" href="#28" name="28">0028</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">content_type</span>&#0160;<span class="op">=</span>&#0160;<span class="string">'text/plain'</span><br />
-<a class="lnum" href="#29" name="29">0029</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">else</span><span class="op">:</span><br />
-<a class="lnum" href="#30" name="30">0030</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">content_type</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">mime_type</span><br />
-<a class="lnum" href="#31" name="31">0031</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">headers</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><br />
-<a class="lnum" href="#32" name="32">0032</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">(</span><span class="string">'Content-type'</span><span class="op">,</span>&#0160;<span class="name">content_type</span><span class="op">)</span><span class="op">,</span><br />
-<a class="lnum" href="#33" name="33">0033</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">(</span><span class="string">'Content-length'</span><span class="op">,</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">res</span><span class="op">)</span><span class="op">)</span><span class="op">,</span><br />
-<a class="lnum" href="#34" name="34">0034</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">]</span><br />
-<a class="lnum" href="#35" name="35">0035</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">headers</span><span class="op">.</span><span class="name">extend</span><span class="op">(</span><span class="name">response</span><span class="op">[</span><span class="string">'headers'</span><span class="op">]</span><span class="op">)</span><br />
-<a class="lnum" href="#36" name="36">0036</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">start_response</span><span class="op">(</span><span class="name">response</span><span class="op">[</span><span class="string">'status'</span><span class="op">]</span><span class="op">,</span>&#0160;<span class="name">headers</span><span class="op">)</span><br />
-<a class="lnum" href="#37" name="37">0037</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="op">[</span><span class="name">res</span><span class="op">]</span><br />
-<a class="lnum" href="#38" name="38">0038</a><br />
-<a class="lnum" href="#39" name="39">0039</a><span class="keyword">def</span>&#0160;<span class="name">factory</span><span class="op">(</span><span class="name">app</span><span class="op">,</span>&#0160;<span class="name">global_conf</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#40" name="40">0040</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">JSONFilter</span><span class="op">(</span><span class="name">app</span><span class="op">,</span>&#0160;<span class="op">**</span><span class="name">kw</span><span class="op">)</span></code></div></body></html> \ No newline at end of file
diff --git a/docs/simplejson/scanner.py.html b/docs/simplejson/scanner.py.html
deleted file mode 100644
index 0445a10..0000000
--- a/docs/simplejson/scanner.py.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<html><head><title>/Users/bob/src/simplejson/simplejson/scanner.py</title>
- <script type="text/javascript"><!--
-
-function show_line_range() {
- var href = document.location.href;
- if (href.indexOf('?') == -1) {
- return;
- }
- var qs = href.substring(href.indexOf('?')+1);
- if (qs.indexOf('#') >= 0) {
- qs = qs.substring(0, qs.indexOf('#'));
- }
- var first = qs.match(/f=(\d+)/)[1];
- var last = qs.match(/l=(\d+)/)[1];
- if (! first || ! last) {
- return;
- }
- var anchors = document.getElementsByTagName('A');
- var container = document.createElement('DIV');
- container.className = 'highlighted';
- var children = [];
- var start = null;
- var parent = null;
- var highlight = false;
- for (var i = 0; i < anchors.length; i++) {
- var el = anchors[i];
- if (el.getAttribute('name') == first) {
- start = el.previousSibling;
- parent = el.parentNode;
- highlight = true;
- }
- if (el.getAttribute('name') == last) {
- break;
- }
- if (highlight) {
- children[children.length] = el;
- el = el.nextSibling;
- while (el && el.tagName != 'A') {
- children[children.length] = el;
- el = el.nextSibling;
- }
- }
- }
- for (i=0; i<children.length; i++) {
- container.appendChild(children[i]);
- }
- if (start) {
- start.parentNode.insertBefore(container, start.nextSibling);
- } else {
- parent.insertBefore(container, parent.childNodes[0]);
- }
-}
-
- // --></script>
- <style>
- div.python {
- color: #333
- }
- div.python a.lnum {
- color: #555;
- background-color: #eee;
- border-right: 1px solid #999;
- padding-right: 2px;
- margin-right: 4px;
- }
- div.python span.comment { color: #933 }
- div.python span.keyword { color: #a3e; font-weight: bold }
- div.python span.op { color: #c96 }
- div.python span.string { color: #6a6 }
- div.python span.name { }
- div.python span.text { color: #333 }
- div.highlighted { background-color: #ff9; border: 1px solid #009 }
- </style></head><body onload="show_line_range()"><div class="python"><code><a class="lnum" href="#1" name="1">0001</a><span class="string">"""</span><br />
-<a class="lnum" href="#2" name="2">0002</a><span class="string">Iterator&#0160;based&#0160;sre&#0160;token&#0160;scanner</span><br />
-<a class="lnum" href="#3" name="3">0003</a><span class="string">"""</span><br />
-<a class="lnum" href="#4" name="4">0004</a><span class="keyword">import</span>&#0160;<span class="name">re</span><br />
-<a class="lnum" href="#5" name="5">0005</a><span class="keyword">from</span>&#0160;<span class="name">re</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">VERBOSE</span><span class="op">,</span>&#0160;<span class="name">MULTILINE</span><span class="op">,</span>&#0160;<span class="name">DOTALL</span><br />
-<a class="lnum" href="#6" name="6">0006</a><span class="keyword">import</span>&#0160;<span class="name">sre_parse</span><br />
-<a class="lnum" href="#7" name="7">0007</a><span class="keyword">import</span>&#0160;<span class="name">sre_compile</span><br />
-<a class="lnum" href="#8" name="8">0008</a><span class="keyword">import</span>&#0160;<span class="name">sre_constants</span><br />
-<a class="lnum" href="#9" name="9">0009</a><span class="keyword">from</span>&#0160;<span class="name">sre_constants</span>&#0160;<span class="keyword">import</span>&#0160;<span class="name">BRANCH</span><span class="op">,</span>&#0160;<span class="name">SUBPATTERN</span><br />
-<a class="lnum" href="#10" name="10">0010</a><br />
-<a class="lnum" href="#11" name="11">0011</a><span class="name">__all__</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="string">'Scanner'</span><span class="op">,</span>&#0160;<span class="string">'pattern'</span><span class="op">]</span><br />
-<a class="lnum" href="#12" name="12">0012</a><br />
-<a class="lnum" href="#13" name="13">0013</a><span class="name">FLAGS</span>&#0160;<span class="op">=</span>&#0160;<span class="op">(</span><span class="name">VERBOSE</span>&#0160;<span class="op">|</span>&#0160;<span class="name">MULTILINE</span>&#0160;<span class="op">|</span>&#0160;<span class="name">DOTALL</span><span class="op">)</span><br />
-<a class="lnum" href="#14" name="14">0014</a><br />
-<a class="lnum" href="#15" name="15">0015</a><span class="keyword">class</span>&#0160;<span class="name">Scanner</span><span class="op">(</span><span class="name">object</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#16" name="16">0016</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">__init__</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">lexicon</span><span class="op">,</span>&#0160;<span class="name">flags</span><span class="op">=</span><span class="name">FLAGS</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#17" name="17">0017</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">actions</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="name">None</span><span class="op">]</span><br />
-<a class="lnum" href="#18" name="18">0018</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;Combine&#0160;phrases&#0160;into&#0160;a&#0160;compound&#0160;pattern</span><br />
-<a class="lnum" href="#19" name="19">0019</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sre_parse</span><span class="op">.</span><span class="name">Pattern</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#20" name="20">0020</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s</span><span class="op">.</span><span class="name">flags</span>&#0160;<span class="op">=</span>&#0160;<span class="name">flags</span><br />
-<a class="lnum" href="#21" name="21">0021</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">p</span>&#0160;<span class="op">=</span>&#0160;<span class="op">[</span><span class="op">]</span><br />
-<a class="lnum" href="#22" name="22">0022</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">for</span>&#0160;<span class="name">idx</span><span class="op">,</span>&#0160;<span class="name">token</span>&#0160;<span class="keyword">in</span>&#0160;<span class="name">enumerate</span><span class="op">(</span><span class="name">lexicon</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#23" name="23">0023</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">phrase</span>&#0160;<span class="op">=</span>&#0160;<span class="name">token</span><span class="op">.</span><span class="name">pattern</span><br />
-<a class="lnum" href="#24" name="24">0024</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">try</span><span class="op">:</span><br />
-<a class="lnum" href="#25" name="25">0025</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">subpattern</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sre_parse</span><span class="op">.</span><span class="name">SubPattern</span><span class="op">(</span><span class="name">s</span><span class="op">,</span><br />
-<a class="lnum" href="#26" name="26">0026</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="op">[</span><span class="op">(</span><span class="name">SUBPATTERN</span><span class="op">,</span>&#0160;<span class="op">(</span><span class="name">idx</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span><span class="op">,</span>&#0160;<span class="name">sre_parse</span><span class="op">.</span><span class="name">parse</span><span class="op">(</span><span class="name">phrase</span><span class="op">,</span>&#0160;<span class="name">flags</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">]</span><span class="op">)</span><br />
-<a class="lnum" href="#27" name="27">0027</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">except</span>&#0160;<span class="name">sre_constants</span><span class="op">.</span><span class="name">error</span><span class="op">:</span><br />
-<a class="lnum" href="#28" name="28">0028</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">raise</span><br />
-<a class="lnum" href="#29" name="29">0029</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">p</span><span class="op">.</span><span class="name">append</span><span class="op">(</span><span class="name">subpattern</span><span class="op">)</span><br />
-<a class="lnum" href="#30" name="30">0030</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">actions</span><span class="op">.</span><span class="name">append</span><span class="op">(</span><span class="name">token</span><span class="op">)</span><br />
-<a class="lnum" href="#31" name="31">0031</a><br />
-<a class="lnum" href="#32" name="32">0032</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">s</span><span class="op">.</span><span class="name">groups</span>&#0160;<span class="op">=</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">p</span><span class="op">)</span>&#0160;<span class="op">+</span>&#0160;<span class="number">1</span>&#0160;<span class="comment">#&#0160;NOTE(guido):&#0160;Added&#0160;to&#0160;make&#0160;SRE&#0160;validation&#0160;work</span><br />
-<a class="lnum" href="#33" name="33">0033</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">p</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sre_parse</span><span class="op">.</span><span class="name">SubPattern</span><span class="op">(</span><span class="name">s</span><span class="op">,</span>&#0160;<span class="op">[</span><span class="op">(</span><span class="name">BRANCH</span><span class="op">,</span>&#0160;<span class="op">(</span><span class="name">None</span><span class="op">,</span>&#0160;<span class="name">p</span><span class="op">)</span><span class="op">)</span><span class="op">]</span><span class="op">)</span><br />
-<a class="lnum" href="#34" name="34">0034</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">self</span><span class="op">.</span><span class="name">scanner</span>&#0160;<span class="op">=</span>&#0160;<span class="name">sre_compile</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="name">p</span><span class="op">)</span><br />
-<a class="lnum" href="#35" name="35">0035</a><br />
-<a class="lnum" href="#36" name="36">0036</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">iterscan</span><span class="op">(</span><span class="name">self</span><span class="op">,</span>&#0160;<span class="name">string</span><span class="op">,</span>&#0160;<span class="name">idx</span><span class="op">=</span><span class="number">0</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">=</span><span class="name">None</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#37" name="37">0037</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="string">"""</span><br />
-<a class="lnum" href="#38" name="38">0038</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;Yield&#0160;match,&#0160;end_idx&#0160;for&#0160;each&#0160;match</span><br />
-<a class="lnum" href="#39" name="39">0039</a><span class="string">&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;"""</span><br />
-<a class="lnum" href="#40" name="40">0040</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">match</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">scanner</span><span class="op">.</span><span class="name">scanner</span><span class="op">(</span><span class="name">string</span><span class="op">,</span>&#0160;<span class="name">idx</span><span class="op">)</span><span class="op">.</span><span class="name">match</span><br />
-<a class="lnum" href="#41" name="41">0041</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">actions</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">actions</span><br />
-<a class="lnum" href="#42" name="42">0042</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">lastend</span>&#0160;<span class="op">=</span>&#0160;<span class="name">idx</span><br />
-<a class="lnum" href="#43" name="43">0043</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">end</span>&#0160;<span class="op">=</span>&#0160;<span class="name">len</span><span class="op">(</span><span class="name">string</span><span class="op">)</span><br />
-<a class="lnum" href="#44" name="44">0044</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">while</span>&#0160;<span class="name">True</span><span class="op">:</span><br />
-<a class="lnum" href="#45" name="45">0045</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">m</span>&#0160;<span class="op">=</span>&#0160;<span class="name">match</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#46" name="46">0046</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">m</span>&#0160;<span class="keyword">is</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#47" name="47">0047</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">break</span><br />
-<a class="lnum" href="#48" name="48">0048</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">matchbegin</span><span class="op">,</span>&#0160;<span class="name">matchend</span>&#0160;<span class="op">=</span>&#0160;<span class="name">m</span><span class="op">.</span><span class="name">span</span><span class="op">(</span><span class="op">)</span><br />
-<a class="lnum" href="#49" name="49">0049</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">lastend</span>&#0160;<span class="op">==</span>&#0160;<span class="name">matchend</span><span class="op">:</span><br />
-<a class="lnum" href="#50" name="50">0050</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">break</span><br />
-<a class="lnum" href="#51" name="51">0051</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">action</span>&#0160;<span class="op">=</span>&#0160;<span class="name">actions</span><span class="op">[</span><span class="name">m</span><span class="op">.</span><span class="name">lastindex</span><span class="op">]</span><br />
-<a class="lnum" href="#52" name="52">0052</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">action</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span><span class="op">:</span><br />
-<a class="lnum" href="#53" name="53">0053</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">rval</span><span class="op">,</span>&#0160;<span class="name">next_pos</span>&#0160;<span class="op">=</span>&#0160;<span class="name">action</span><span class="op">(</span><span class="name">m</span><span class="op">,</span>&#0160;<span class="name">context</span><span class="op">)</span><br />
-<a class="lnum" href="#54" name="54">0054</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">if</span>&#0160;<span class="name">next_pos</span>&#0160;<span class="keyword">is</span>&#0160;<span class="keyword">not</span>&#0160;<span class="name">None</span>&#0160;<span class="keyword">and</span>&#0160;<span class="name">next_pos</span>&#0160;<span class="op">!=</span>&#0160;<span class="name">matchend</span><span class="op">:</span><br />
-<a class="lnum" href="#55" name="55">0055</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="comment">#&#0160;"fast&#0160;forward"&#0160;the&#0160;scanner</span><br />
-<a class="lnum" href="#56" name="56">0056</a><span class="comment"></span>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">matchend</span>&#0160;<span class="op">=</span>&#0160;<span class="name">next_pos</span><br />
-<a class="lnum" href="#57" name="57">0057</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">match</span>&#0160;<span class="op">=</span>&#0160;<span class="name">self</span><span class="op">.</span><span class="name">scanner</span><span class="op">.</span><span class="name">scanner</span><span class="op">(</span><span class="name">string</span><span class="op">,</span>&#0160;<span class="name">matchend</span><span class="op">)</span><span class="op">.</span><span class="name">match</span><br />
-<a class="lnum" href="#58" name="58">0058</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">yield</span>&#0160;<span class="name">rval</span><span class="op">,</span>&#0160;<span class="name">matchend</span><br />
-<a class="lnum" href="#59" name="59">0059</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">lastend</span>&#0160;<span class="op">=</span>&#0160;<span class="name">matchend</span><br />
-<a class="lnum" href="#60" name="60">0060</a><br />
-<a class="lnum" href="#61" name="61">0061</a><br />
-<a class="lnum" href="#62" name="62">0062</a><span class="keyword">def</span>&#0160;<span class="name">pattern</span><span class="op">(</span><span class="name">pattern</span><span class="op">,</span>&#0160;<span class="name">flags</span><span class="op">=</span><span class="name">FLAGS</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#63" name="63">0063</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">def</span>&#0160;<span class="name">decorator</span><span class="op">(</span><span class="name">fn</span><span class="op">)</span><span class="op">:</span><br />
-<a class="lnum" href="#64" name="64">0064</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">fn</span><span class="op">.</span><span class="name">pattern</span>&#0160;<span class="op">=</span>&#0160;<span class="name">pattern</span><br />
-<a class="lnum" href="#65" name="65">0065</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="name">fn</span><span class="op">.</span><span class="name">regex</span>&#0160;<span class="op">=</span>&#0160;<span class="name">re</span><span class="op">.</span><span class="name">compile</span><span class="op">(</span><span class="name">pattern</span><span class="op">,</span>&#0160;<span class="name">flags</span><span class="op">)</span><br />
-<a class="lnum" href="#66" name="66">0066</a>&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">fn</span><br />
-<a class="lnum" href="#67" name="67">0067</a>&#0160;&#0160;&#0160;&#0160;<span class="keyword">return</span>&#0160;<span class="name">decorator</span></code></div></body></html> \ No newline at end of file