Anthony Tuininga avatar Anthony Tuininga committed 797a248

Added cx_Oracle web site and script for synchronizing.

Comments (0)

Files changed (40)

cx_Oracle/BUILD.txt

+Linux Build Hints
+-----------------
+(Tested on RedHat 4.x, Gentoo 2008.0, Ubuntu 8.x, and Debian 4.x)
+These hints are based on using Oracle's instantclient_11_1.  It is necessary
+to download both 'instantclient-linux-basic' and 'instantclient-sdk-linux' from
+oracle.com in order to successfully compile.  
+
+http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
+
+Each compressed tarball needs to be extracted to the exact same location.
+Uncompress and untar each file from the same location in order to achieve this
+result. If placing into a system area such as /opt or /usr/local, make sure to
+have the correct permissions for writing to these filesystems and/or
+directories. It is advisable to use the same account from start to finish while
+installing cx_Oracle in order not to clobber the pre-set environment variables
+set below.
+
+It is necessary to set environment variables ORACLE_HOME and LD_LIBRARY_PATH
+inside $HOME/.profile in order for cx_Oracle to import properly after
+installation and in order to build correctly. Using a text editor add the
+settings below to $HOME/.profile making sure to change the location of your 
+actual installation path.
+
+   Example ($HOME/.profile):
+   -------------------------
+   export ORACLE_HOME=[your installation path]/instantclient_11_1
+   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
+
+To put these variables into the working shell env, either source .profile
+(. $HOME/.profile) or execute each export statement above from a shell
+individually to set these variables. If these are not added to $HOME/.profile
+they will need to be manually set each time cx_Oracle is loaded into Python.
+
+After both packages are untarred to there installation location a link needs
+to be made inside the instantclient_11_1 directory. If you are using a
+different version of the instant client simply adjust the link per the version
+of libclntsh.so.
+
+   Steps:
+   ------
+   cd $ORACLE_HOME
+   ln -s libclntsh.so.x.x libclntsh.so
+
+Continue to step: Building and Compilation.
+
+
+OS X Build Hints
+----------------
+(Tested on Leopard 10.5.x)
+The procedures for OS X are almost idential to Linux except for the package
+names and a few environmental caveats. For OS X it is necessary to download
+both 'instantclient-basic-macosx' and 'instantclient-sdk-macosx'. Download and
+extract each file per the build hints for Linux.
+
+For OS X it is necessary to set environment variables ORACLE_HOME,
+LD_LIBRARY_PATH and DYLD_LIBRARY_PATH inside $HOME/.profile and start a new
+shell before testing cx_Oracle. If .profile does not exist, simply create one
+with a text editor and add the necessary path info to these variables.
+
+   Example ($HOME/.profile):
+   -------------------------
+   export ORACLE_HOME=[your installation path]/instantclient_11_1
+   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
+   export DYLD_LIBRARY_PATH=$ORACLE_HOME
+
+The variables placed inside $HOME/.profile need to be set prior to building.
+Therefore, source .profile (. $HOME/.profile) or execute each export statement
+above from a shell individually to set these variables.  Not having
+DYLD_LIBRARY_PATH set inside $HOME/.profile prior to building will cause a
+compilation error regardless of being set in the current shell's env.
+
+After both packages are untarred a link needs to be made inside the
+instantclient_11_1 directory.  If you are using a different version of the
+instant client simply adjust the link per the version of libclntsh.dylib.
+
+   Steps:
+   ------
+   cd $ORACLE_HOME
+   ln -s libclntsh.dylib.x.x libclntsh.dylib
+
+Continue to step: Building and Compilation.
+
+
+Building and Compilation
+------------------------
+Use the provided setup.py to build and install the module which makes use of 
+the distutils module. Note that on Windows, I have used mingw32 
+(http://www.mingw.org) and the module will not build with MSVC without 
+modification. The commands required to build and install the module are as 
+follows:
+
+	python setup.py build
+	python setup.py install
+
+
+Testing (Post Installation Quick Test)
+--------------------------------------
+A very quick installation test can be performed from the command line using
+the Python interpreter. Below is an example of how this done. After importing
+cx_Oracle there should be a line containing only '>>>' which indicates the
+library successfully loaded.
+
+    $ python
+    Python 2.5.2 (r252:60911, Oct 25 2008, 19:37:28)
+    [GCC 4.1.2 (Gentoo 4.1.2 p1.1)] on linux2
+    Type "help", "copyright", "credits" or "license" for more information.
+    >>> import cx_Oracle
+    >>>
+

cx_Oracle/HISTORY.txt

+Changes from 5.1.1 to 5.1.2
+ 1) Added support for LONG_UNICODE which is a type used to handle long unicode
+    strings. These are not explicitly supported in Oracle but can be used to
+    bind to NCLOB, for example, without getting the error "unimplemented or
+    unreasonable conversion requested".
+ 2) Set the row number in a cursor when executing PL/SQL blocks as requested
+    by Robert Ritchie.
+ 3) Added support for setting the module, action and client_info attributes
+    during connection so that logon triggers will see the supplied values, as
+    requested by Rodney Barnett.
+
+Changes from 5.1 to 5.1.1
+ 1) Simplify management of threads for callbacks performed by database change
+    notification and eliminate a crash that occurred under high load in
+    certain situations. Thanks to Calvin S. for noting the issue and suggesting
+    a solution and testing the patch.
+ 2) Force server detach on close so that the connection is completely closed
+    and not just the session as before.
+ 3) Force use of OCI_UTF16ID for NCLOBs as using the default character set
+    would result in ORA-03127 with Oracle 11.2.0.2 and UTF8 character set.
+ 4) Avoid attempting to clear temporary LOBs a second time when destroying the
+    variable as in certain situations this results in spurious errors.
+ 5) Added additional parameter service_name to makedsn() which can be used to
+    use the service_name rather than the SID in the DSN string that is
+    generated.
+ 6) Fix cursor description in test suite to take into account the number of
+    bytes per character.
+ 7) Added tests for NCLOBS to the test suite.
+ 8) Removed redundant code in setup.py for calculating the library path.
+
+Changes from 5.0.4 to 5.1
+ 1) Remove support for UNICODE mode and permit Unicode to be passed through in
+    everywhere a string may be passed in. This means that strings will be
+    passed through to Oracle using the value of the NLS_LANG environment
+    variable in Python 3.x as well. Doing this eliminated a bunch of problems
+    that were discovered by using UNICODE mode and also removed an unnecessary
+    restriction in Python 2.x that Unicode could not be used in connect strings
+    or SQL statements, for example.
+ 2) Added support for creating an empty object variable via a named type, the
+    first step to adding full object support.
+ 3) Added support for Python 3.2.
+ 4) Account for lib64 used on x86_64 systems. Thanks to Alex Wood for supplying
+    the patch.
+ 5) Clear up potential problems when calling cursor.close() ahead of the
+    cursor being freed by going out of scope.
+ 6) Avoid compilation difficulties on AIX5 as OCIPing does not appear to be
+    available on that platform under Oracle 10g Release 2. Thanks to
+    Pierre-Yves Fontaniere for the patch.
+ 7) Free temporary LOBs prior to each fetch in order to avoid leaking them.
+    Thanks to Uwe Hoffmann for the initial patch.
+
+Changes from 5.0.3 to 5.0.4
+ 1) Added support for Python 2.7.
+ 2) Added support for new parameter (port) for subscription() call which allows
+    the client to specify the listening port for callback notifications from
+    the database server. Thanks to Geoffrey Weber for the initial patch.
+ 3) Fixed compilation under Oracle 9i.
+ 4) Fixed a few error messages.
+
+Changes from 5.0.2 to 5.0.3
+ 1) Added support for 64-bit Windows.
+ 2) Added support for Python 3.1 and dropped support for Python 3.0.
+ 3) Added support for keyword arguments in cursor.callproc() and
+    cursor.callfunc().
+ 4) Added documentation for the UNICODE and FIXED_UNICODE variable types.
+ 5) Added extra link arguments required for Mac OS X as suggested by Jason
+    Woodward.
+ 6) Added additional error codes to the list of error codes that raise
+    OperationalError rather than DatabaseError.
+ 7) Fixed calculation of display size for strings with national database
+    character sets that are not the default AL16UTF16.
+ 8) Moved the resetting of the setinputsizes flag before the binding takes
+    place so that if an error takes place and a new statement is prepared
+    subsequently, spurious errors will not occur.
+ 9) Fixed compilation with Oracle 10g Release 1.
+10) Tweaked documentation based on feedback from a number of people.
+11) Added support for running the test suite using "python setup.py test"
+12) Added support for setting the CLIENT_IDENTIFIER value in the v$session
+    table for connections.
+13) Added exception when attempting to call executemany() with arrays which is
+    not supported by the OCI.
+14) Fixed bug when converting from decimal would result in OCI-22062 because
+    the locale decimal point was not a period. Thanks to Amaury Forgeot d'Arc
+    for the solution to this problem.
+
+Changes from 5.0.1 to 5.0.2
+ 1) Fix creation of temporary NCLOB values and the writing of NCLOB values in
+    non Unicode mode.
+ 2) Re-enabled parsing of non select statements as requested by Roy Terrill.
+ 3) Implemented a parse error offset as requested by Catherine Devlin.
+ 4) Removed lib subdirectory when forcing RPATH now that the library directory
+    is being calculated exactly in setup.py.
+ 5) Added an additional cast in order to support compiling by Microsoft
+    Visual C++ 2008 as requested by Marco de Paoli.
+ 6) Added additional include directory to setup.py in order to support
+    compiling by Microsoft Visual Studio was requested by Jason Coombs.
+ 7) Fixed a few documentation issues.
+
+Changes from 5.0 to 5.0.1
+ 1) Added support for database change notification available in Oracle 10g
+    Release 2 and higher.
+ 2) Fix bug where NCLOB data would be corrupted upon retrieval (non Unicode
+    mode) or would generate exception ORA-24806 (LOB form mismatch). Oracle
+    insists upon differentiating between CLOB and NCLOB no matter which
+    character set is being used for retrieval.
+ 3) Add new attributes size, bufferSize and numElements to variable objects,
+    deprecating allocelems (replaced by numElements) and maxlength (replaced
+    by bufferSize)
+ 4) Avoid increasing memory allocation for strings when using variable width
+    character sets and increasing the number of elements in a variable during
+    executemany().
+ 5) Tweaked code in order to ensure that cx_Oracle can compile with Python
+    3.0.1.
+
+Changes from 4.4.1 to 5.0
+ 1) Added support for Python 3.0 with much help from Amaury Forgeot d'Arc.
+ 2) Removed support for Python 2.3 and Oracle 8i.
+ 3) Added support for full unicode mode in Python 2.x where all strings are
+    passed in and returned as unicode (module must be built in this mode)
+    rather than encoded strings
+ 4) nchar and nvarchar columns now return unicode instead of encoded strings
+ 5) Added support for an output type handler and/or an input type handler to be
+    specified at the connection and cursor levels.
+ 6) Added support for specifying both input and output converters for variables
+ 7) Added support for specifying the array size of variables that are created
+    using the cursor.var() method
+ 8) Added support for events mode and database resident connection pooling
+    (DRCP) in Oracle 11g.
+ 9) Added support for changing the password during construction of a new
+    connection object as well as after the connection object has been created
+10) Added support for the interval day to second data type in Oracle,
+    represented as datetime.timedelta objects in Python.
+11) Added support for getting and setting the current_schema attribute for a
+    session
+12) Added support for proxy authentication in session pools as requested by
+    Michael Wegrzynek (and thanks for the initial patch as well).
+13) Modified connection.prepare() to return a boolean indicating if a
+    transaction was actually prepared in order to avoid the error ORA-24756
+    (transaction does not exist).
+14) Raise a cx_Oracle.Error instance rather than a string for column
+    truncation errors as requested by Helge Tesdal.
+15) Fixed handling of environment handles in session pools in order to allow
+    session pools to fetch objects without exceptions taking place.
+
+Changes from 4.4 to 4.4.1
+ 1) Make the bind variables and fetch variables accessible although they need
+    to be treated carefully since they are used internally; support added for
+    forward compatibility with version 5.x.
+ 2) Include the "cannot insert null value" in the list of errors that are
+    treated as integrity errors as requested by Matt Boersma.
+ 3) Use a cx_Oracle.Error instance rather than a string to hold the error when
+    truncation (ORA-1406) takes place as requested by Helge Tesdal.
+ 4) Added support for fixed char, old style varchar and timestamp attribute
+    values in objects.
+ 5) Tweaked setup.py to check for the Oracle version up front rather than
+    during the build in order to produce more meaningful errors and simplify
+    the code.
+ 6) In setup.py added proper detection for the instant client on Mac OS X as
+    recommended by Martijn Pieters.
+ 7) In setup.py, avoided resetting the extraLinkArgs on Mac OS X as doing so
+    prevents simple modification where desired as expressed by Christian
+    Zagrodnick.
+ 8) Added documentation on exception handling as requested by Andreas Mock, who
+    also graciously provided an initial patch.
+ 9) Modified documentation indicating that the password attribute on connection
+    objects can be written.
+10) Added documentation warning that parameters not passed in during subsequent
+    executions of a statement will retain their original values as requested by
+    Harald Armin Massa.
+11) Added comments indicating that an Oracle client is required since so many
+    people find this surprising.
+12) Removed all references to Oracle 8i from the documentation and version 5.x
+    will eliminate all vestiges of support for this version of the Oracle
+    client.
+13) Added additional link arguments for Cygwin as requested by Rob Gillen.
+
+Changes from 4.3.3 to 4.4
+ 1) Fix setup.py to handle the Oracle instant client and Oracle XE on both
+    Linux and Windows as pointed out by many. Thanks also to the many people
+    who also provided patches.
+ 2) Set the default array size to 50 instead of 1 as the DB API suggests
+    because the performance difference is so drastic and many people have
+    recommended that the default be changed.
+ 3) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS around each blocking
+    call for LOBs as requested by Jason Conroy who also provided an initial
+    patch and performed a number of tests that demonstrate the new code is much
+    more responsive.
+ 4) Add support for acquiring cursor.description after a parse.
+ 5) Defer type assignment when performing executemany() until the last possible
+    moment if the value being bound in is null as suggested by Dragos Dociu.
+ 6) When dropping a connection from the pool, ignore any errors that occur
+    during the rollback; unfortunately, Oracle decides to commit data even when
+    dropping a connection from the pool instead of rolling it back so the
+    attempt still has to be made.
+ 7) Added support for setting CLIENT_DRIVER in V$SESSION_CONNECT_INFO in Oracle
+    11g and higher.
+ 8) Use cx_Oracle.InterfaceError rather than the builtin RuntimeError when
+    unable to create the Oracle environment object as requested by Luke Mewburn
+    since the error is specific to Oracle and someone attempting to catch any
+    exception cannot simply use cx_Oracle.Error.
+ 9) Translated some error codes to OperationalError as requested by Matthew
+    Harriger; translated if/elseif/else logic to switch statement to make it
+    more readable and to allow for additional translation if desired.
+10) Transformed documentation to new format using restructured text. Thanks to
+    Waldemar Osuch for contributing the initial draft of the new documentation.
+11) Allow the password to be overwritten by a new value as requested by Alex
+    VanderWoude; this value is retained as a convenience to the user and not
+    used by anything in the module; if changed externally it may be convenient
+    to keep this copy up to date.
+12) Cygwin is on Windows so should be treated in the same way as noted by
+    Matthew Cahn.
+13) Add support for using setuptools if so desired as requested by Shreya
+    Bhatt.
+14) Specify that the version of Oracle 10 that is now primarily used is 10.2,
+    not 10.1.
+
+Changes from 4.3.2 to 4.3.3
+ 1) Added method ping() on connections which can be used to test whether or not
+    a connection is still active (available in Oracle 10g R2).
+ 2) Added method cx_Oracle.clientversion() which returns a 5-tuple giving the
+    version of the client that is in use (available in Oracle 10g R2).
+ 3) Added methods startup() and shutdown() on connections which can be used to
+    startup and shutdown databases (available in Oracle 10g R2).
+ 4) Added support for Oracle 11g.
+ 5) Added samples directory which contains a handful of scripts containing
+    sample code for more advanced techniques. More will follow in future
+    releases.
+ 6) Prevent error "ORA-24333: zero iteration count" when calling executemany()
+    with zero rows as requested by Andreas Mock.
+ 7) Added methods __enter__() and __exit__() on connections to support using
+    connections as context managers in Python 2.5 and higher. The context
+    managed is the transaction state. Upon exit the transaction is either
+    rolled back or committed depending on whether an exception took place or
+    not.
+ 8) Make the search for the lib32 and lib64 directories automatic for all
+    platforms.
+ 9) Tweak the setup configuration script to include all of the metadata and
+    allow for building the module within another setup configuration script
+10) Include the Oracle version in addition to the Python version in the build
+    directories that are created and in the names of the binary packages that
+    are created.
+11) Remove unnecessary dependency on win32api to build module on Windows.
+
+Changes from 4.3.1 to 4.3.2
+ 1) Added methods open(), close(), isopen() and getchunksize() in order to
+    improve performance of reading/writing LOB values in chunks.
+ 2) Fixed support for native doubles and floats in Oracle 10g; added new type
+    NATIVE_FLOAT to allow specification of a variable of that specific type
+    where desired. Thanks to D.R. Boxhoorn for pointing out the fact that this
+    was not working properly when the arraysize was anything other than 1.
+ 3) When calling connection.begin(), only create a new tranasction handle if
+    one is not already associated with the connection. Thanks to Andreas Mock
+    for discovering this and for Amaury Forgeot d'Arc for diagnosing the
+    problem and pointing the way to a solution.
+ 4) Added attribute cursor.rowfactory which allows a method to be called for
+    each row that is returned; this is about 20% faster than calling the method
+    in Python using the idiom [method(*r) for r in cursor].
+ 5) Attempt to locate an Oracle installation by looking at the PATH if the
+    environment variable ORACLE_HOME is not set; this is of primary use on
+    Windows where this variable should not normally be set.
+ 6) Added support for autocommit mode as requested by Ian Kelly.
+ 7) Added support for connection.stmtcachesize which allows for both reading
+    and writing the size of the statement cache size. This parameter can make a
+    huge difference with the length of time taken to prepare statements. Added
+    support for setting the statement tag when preparing a statement. Both of
+    these were requested by Bjorn Sandberg who also provided an initial patch.
+ 8) When copying the value of a variable, copy the return code as well.
+
+Changes from 4.3 to 4.3.1
+ 1) Ensure that if the client buffer size exceeds 4000 bytes that the server
+    buffer size does not as strings may only contain 4000 bytes; this allows
+    handling of multibyte character sets on the server as well as the client.
+ 2) Added support for using buffer objects to populate binary data and made the
+    Binary() constructor the buffer type as requested by Ken Mason.
+ 3) Fix potential crash when using full optimization with some compilers.
+    Thanks to Aris Motas for noticing this and providing the initial patch and
+    to Amaury Forgeot d'Arc for providing an even simpler solution.
+ 4) Pass the correct charset form in to the write call in order to support
+    writing to national character set LOB values properly. Thanks to Ian Kelly
+    for noticing this discrepancy.
+
+Changes from 4.2.1 to 4.3
+ 1) Added preliminary support for fetching Oracle objects (SQL types) as
+    requested by Kristof Beyls (who kindly provided an initial patch).
+    Additional work needs to be done to support binding and updating objects
+    but the basic structure is now in place.
+ 2) Added connection.maxBytesPerCharacter which indicates the maximum number of
+    bytes each character can use; use this value to also determine the size of
+    local buffers in order to handle discrepancies between the client character
+    set and the server character set. Thanks to Andreas Mock for providing the
+    initial patch and working with me to resolve this issue.
+ 3) Added support for querying native floats in Oracle 10g as requested by
+    Danny Boxhoorn.
+ 4) Add support for temporary LOB variables created via PL/SQL instead of only
+    directly by cx_Oracle; thanks to Henning von Bargen for discovering this
+    problem.
+ 5) Added support for specifying variable types using the builtin types int,
+    float, str and datetime.date which allows for finer control of what type of
+    Python object is returned from cursor.callfunc() for example.
+ 6) Added support for passing booleans to callproc() and callfunc() as
+    requested by Anana Aiyer.
+ 7) Fixed support for 64-bit environments in Python 2.5.
+ 8) Thanks to Filip Ballegeer and a number of his co-workers, an intermittent
+    crash was tracked down; specifically, if a connection is closed, then the
+    call to OCIStmtRelease() will free memory twice. Preventing the call when
+    the connection is closed solves the problem.
+
+Changes from 4.2 to 4.2.1
+ 1) Added additional type (NCLOB) to handle CLOBs that use the national
+    character set as requested by Chris Dunscombe.
+ 2) Added support for returning cursors from functions as requested by Daniel
+    Steinmann.
+ 3) Added support for getting/setting the "get" mode on session pools as
+    requested by Anand Aiyer.
+ 4) Added support for binding subclassed cursors.
+ 5) Fixed binding of decimal objects with absolute values less than 0.1.
+
+Changes from 4.1.2 to 4.2
+ 1) Added support for parsing an Oracle statement as requested by Patrick
+    Blackwill.
+ 2) Added support for BFILEs at the request of Matthew Cahn.
+ 3) Added support for binding decimal.Decimal objects to cursors.
+ 4) Added support for reading from NCLOBs as requested by Chris Dunscombe.
+ 5) Added connection attributes encoding and nencoding which return the IANA
+    character set name for the character set and national character set in use
+    by the client.
+ 6) Rework module initialization to use the techniques recommended by the
+    Python documentation as one user was experiencing random segfaults due
+    to the use of the module dictionary after the initialization was complete.
+ 7) Removed support for the OPT_Threading attribute. Use the threaded keyword
+    when creating connections and session pools instead.
+ 8) Removed support for the OPT_NumbersAsStrings attribute. Use the
+    numbersAsStrings attribute on cursors instead.
+ 9) Use type long rather than type int in order to support long integers on
+    64-bit machines as reported by Uwe Hoffmann.
+10) Add cursor attribute "bindarraysize" which is defaulted to 1 and is used
+    to determine the size of the arrays created for bind variables.
+11) Added repr() methods to provide something a little more useful than the
+    standard type name and memory address.
+12) Added keyword argument support to the functions that imply such in the
+    documentation as requested by Harald Armin Massa.
+13) Treat an empty dictionary passed through to cursor.execute() as keyword
+    arguments the same as if no keyword arguments were specified at all, as
+    requested by Fabien Grumelard.
+14) Fixed memory leak when a LOB read would fail.
+15) Set the LDFLAGS value in the environment rather than directly in the
+    setup.py file in order to satisfy those who wish to enable the use of
+    debugging symbols.
+16) Use __DATE__ and __TIME__ to determine the date and time of the build
+    rather than passing it through directly.
+17) Use Oracle types and add casts to reduce warnings as requested by Amaury
+    Forgeot d'Arc.
+18) Fixed typo in error message.
+
+Changes from 4.1.1 to 4.1.2
+ 1) Restore support of Oracle 9i features when using the Oracle 10g client.
+
+Changes from 4.1 to 4.1.1
+ 1) Add support for dropping a connection from a session pool.
+ 2) Add support for write only attributes "module", "action" and "clientinfo"
+    which work only in Oracle 10g as requested by Egor Starostin.
+ 3) Add support for pickling database errors.
+ 4) Use the previously created bind variable as a template if available when
+    creating a new variable of a larger size. Thanks to Ted Skolnick for the
+    initial patch.
+ 5) Fixed tests to work properly in the Python 2.4 environment where dates and
+    timestamps are different Python types. Thanks to Henning von Bargen for
+    pointing this out.
+ 6) Added additional directories to search for include files and libraries in
+    order to better support the Oracle 10g instant client.
+ 7) Set the internal fetch number to 0 in order to satisfy very picky source
+    analysis tools as requested by Amaury Fogeot d'Arc.
+ 8) Improve the documentation for building and installing the module from
+    source as some people are unaware of the standard methods for building
+    Python modules using distutils.
+ 9) Added note in the documentation indicating that the arraysize attribute
+    can drastically affect performance of queries since this seems to be a
+    common misunderstanding of first time users of cx_Oracle.
+10) Add a comment indicating that on HP-UX Itanium with Oracle 10g the library
+    ttsh10 must alos be linked against. Thanks to Bernard Delmee for the
+    information.
+
+Changes from 4.1 beta 1 to 4.1
+ 1) Fixed bug where subclasses of Cursor do not pass the connection in the
+    constructor causing a segfault.
+ 2) DDL statements must be reparsed before execution as noted by Mihai
+    Ibanescu.
+ 3) Add support for setting input sizes by position.
+ 4) Fixed problem with catching an exception during execute and then still
+    attempting to perform a fetch afterwards as noted by Leith Parkin.
+ 5) Rename the types so that they can be pickled and unpickled. Thanks to Harri
+    Pasanen for pointing out the problem.
+ 6) Handle invalid NLS_LANG setting properly (Oracle seems to like to provide a
+    handle back even though it is invalid) and determine the number of bytes
+    per character in order to allow for proper support in the future of
+    multibyte and variable width character sets.
+ 7) Remove date checking from the native case since Python already checks that
+    dates are valid; enhance error message when invalid dates are encountered
+    so that additional processing can be done.
+ 8) Fix bug executing SQL using numeric parameter names with predefined
+    variables (such as what takes place when calling stored procedures with out
+    parameters).
+ 9) Add support for reading CLOB values using multibyte or variable length
+    character sets.
+
+Changes from 4.0.1 to 4.1 beta 1
+ 1) Added support for Python 2.4. In Python 2.4, the datetime module is used
+    for both binding and fetching of date and timestamp data. In Python 2.3,
+    objects from the datetime module can be bound but the internal datetime
+    objects will be returned from queries.
+ 2) Added pickling support for LOB and datetime data.
+ 3) Fully qualified the table name that was missing in an alter table
+    statement in the setup test script as noted by Marc Gehling.
+ 4) Added a section allowing for the setting of the RPATH linker directive in
+    setup.py as requested by Iustin Pop.
+ 5) Added code to raise a programming error exception when an attempt is made
+    to access a LOB locator variable in a subsequent fetch.
+ 6) The username, password and dsn (tnsentry) are stored on the connection
+    object when specified, regardless of whether or not a standard connection
+    takes place.
+ 7) Added additional module level constant called "LOB" as requested by Joseph
+    Canedo.
+ 8) Changed exception type to IntegrityError for constraint violations as
+    requested by Joseph Canedo.
+ 9) If scale and precision are not specified, an attempt is made to return a
+    long integer as requested by Joseph Canedo.
+10) Added workaround for Oracle bug which returns an invalid handle when the
+    prepare call fails. Thanks to alantam@hsbc.com for providing the code that
+    demonstrated the problem.
+11) The cusor method arravar() will now accept the actual list so that it is
+    not necessary to call cursor.arrayvar() followed immediately by
+    var.setvalue().
+12) Fixed bug where attempts to execute the statement "None" with bind
+    variables would cause a segmentation fault.
+13) Added support for binding by position (paramstyle = "numeric").
+14) Removed memory leak created by calls to OCIParamGet() which were not
+    mirrored by calls to OCIDescriptorFree(). Thanks to Mihai Ibanescu for
+    pointing this out and providing a patch.
+15) Added support for calling cursor.executemany() with statement None
+    implying that the previously prepared statement ought to be executed.
+    Thanks to Mihai Ibanescu for providing a patch.
+16) Added support for rebinding variables when a subsequent call to
+    cursor.executemany() uses a different number of rows. Thanks to Mihai
+    Ibanescu for supplying a patch.
+17) The microseconds are now displayed in datetime variables when nonzero
+    similar to method used in the datetime module.
+18) Added support for binary_float and binary_double columns in Oracle 10g.
+
+Changes from 4.0 to 4.0.1
+ 1) Fixed bugs on 64-bit platforms that caused segmentation faults and bus
+    errors in session pooling and determining the bind variables associated
+    with a statement.
+ 2) Modified test suite so that 64-bit platforms are tested properly.
+ 3) Added missing commit statements in the test setup scripts. Thanks to Keith
+    Lyon for pointing this out.
+ 4) Fix setup.py for Cygwin environments. Thanks to Doug Henderson for
+    providing the necessary fix.
+ 5) Added support for compiling cx_Oracle without thread support. Thanks to
+    Andre Reitz for pointing this out.
+ 6) Added support for a new keyword parameter called threaded on connections
+    and session pools. This parameter defaults to False and indicates whether
+    threaded mode ought to be used. It replaces the module level attribute
+    OPT_Threading although examining the attribute will be retained until the
+    next release at least.
+ 7) Added support for a new keyword parameter called twophase on connections.
+    This parameter defaults to False and indicates whether support for two
+    phase (distributed or global) transactions ought to be present. Note that
+    support for distributed transactions is buggy when crossing major version
+    boundaries (Oracle 8i to Oracle 9i for example).
+ 8) Ensure that the rowcount attribute is set properly when an exception is
+    raised during execution. Thanks to Gary Aviv for pointing out this problem
+    and its solution.
+
+Changes from 3.1 to 4.0
+ 1) Added support for subclassing connections, cursors and session pools. The
+    changes involved made it necessary to drop support for Python 2.1 and
+    earlier although a branch exists in CVS to allow for support of Python 2.1
+    and earlier if needed.
+ 2) Connections and session pools can now be created with keyword parameters,
+    not just sequential parameters.
+ 3) Queries now return integers whenever possible and long integers if the
+    number will overflow a simple integer. Floats are only returned when it is
+    known that the number is a floating point number or the integer conversion
+    fails.
+ 4) Added initial support for user callbacks on OCI functions. See the
+    documentation for more details.
+ 5) Add support for retrieving the bind variable names associated with a
+    cursor with a new method bindnames().
+ 6) Add support for temporary LOB variables. This means that setinputsizes()
+    can be used with the values CLOB and BLOB to create these temporary LOB
+    variables and allow for the equivalent of empty_clob() and empty_blob()
+    since otherwise Oracle will treat empty strings as NULL values.
+ 7) Automatically switch to long strings when the data size exceeds the
+    maximum string size that Oracle allows (4000 characters) and raise an
+    error if an attempt is made to set a string variable to a size that it
+    does not support. This avoids truncation errors as reported by Jon Franz.
+ 8) Add support for global (distributed) transactions and two phase commit.
+ 9) Force the NLS settings for the session so that test tables are populated
+    correctly in all circumstances; problems were noted by Ralf Braun and
+    Allan Poulsen.
+10) Display error messages using the environment handle when the error handle
+    has not yet been created; this provides better error messages during this
+    rather rare situation.
+11) Removed memory leak in callproc() that was reported by Todd Whiteman.
+12) Make consistent the calls to manipulate memory; otherwise segfaults can
+    occur when the pymalloc option is used, as reported by Matt Hoskins.
+13) Force a rollback when a session is released back to the session pool.
+    Apparently the connections are not as stateless as Oracle's documentation
+    suggests and this makes the logic consistent with normal connections.
+14) Removed module method attach(). This can be replaced with a call to
+    Connection(handle=) if needed.
+
+Changes from 3.0a to 3.1
+ 1) Added support for connecting with SYSDBA and SYSOPER access which is
+    needed for connecting as sys in Oracle 9i.
+ 2) Only check the dictionary size if the variable is not NULL; otherwise, an
+    error takes place which is not caught or cleared; this eliminates a
+    spurious "Objects/dictobject.c:1258: bad argument to internal function" in
+    Python 2.3.
+ 3) Add support for session pooling. This is only support for Oracle 9i but
+    is amazingly fast -- about 100 times faster than connecting.
+ 4) Add support for statement caching when pooling sessions, this reduces the
+    parse time considerably. Unfortunately, the Oracle OCI does not allow this
+    to be easily turned on for normal sessions.
+ 5) Add method trim() on CLOB and BLOB variables for trimming the size.
+ 6) Add support for externally identified users; to use this feature leave the
+    username and password fields empty when connecting.
+ 7) Add method cancel() on connection objects to cancel long running queries.
+    Note that this only works on non-Windows platforms.
+ 8) Add method callfunc() on cursor objects to allow calling a function
+    without using an anonymous PL/SQL block.
+ 9) Added documentation on objects that were not documented. At this point all
+    objects, methods and constants in cx_Oracle have been documented.
+10) Added support for timestamp columns in Oracle 9i.
+11) Added module level method makedsn() which creates a data source name given
+    the host, port and SID.
+12) Added constant "buildtime" which is the time when the module was built as
+    an additional means of identifying the build that is in use.
+13) Binding a value that is incompatible to the previous value that was bound
+    (data types do not match or array size is larger) will now result in a
+    new bind taking place. This is more consistent with the DB API although
+    it does imply a performance penalty when used.
+
+Changes from 3.0 to 3.0a
+ 1) Fixed bug where zero length PL/SQL arrays were being mishandled
+ 2) Fixed support for the data type "float" in Oracle; added one to the
+    display size to allow for the sign of the number, if necessary; changed
+    the display size of unconstrained numbers to 127, which is the largest
+    number that Oracle can handle
+ 3) Added support for retrieving the description of a bound cursor before
+    fetching it
+ 4) Fixed a couple of build issues on Mac OS X, AIX and Solaris (64-bit)
+ 5) Modified documentation slightly based on comments from several people
+ 6) Included files in MANIFEST that are needed to generate the binaries
+ 7) Modified test suite to work within the test environment at Computronix
+    as well as within the packages that are distributed
+
+Changes from 2.5a to 3.0
+ 1) Removed support for connection to Oracle7 databases; it is entirely
+    possible that it will still work but I no longer have any way of testing
+    and Oracle has dropped any meaningful support for Oracle7 anyway
+ 2) Fetching of strings is now done with predefined memory areas rather than
+    dynamic memory areas; dynamic fetching of strings was causing problems
+    with Oracle 9i in some instances and databases using a different character
+    set other than US ASCII
+ 3) Fixed bug where segfault would occur if the '/' character preceded the '@'
+    character in a connect string
+ 4) Added two new cursor methods var() and arrayvar() in order to eliminate
+    the need for setinputsizes() when defining PL/SQL arrays and as a generic
+    method of acquiring bind variables directly when needed
+ 5) Fixed support for binding cursors and added support for fetching cursors
+    (these are known as ref cursors in PL/SQL).
+ 6) Eliminated discrepancy between the array size used internally and the
+    array size specified by the interface user; this was done earlier to avoid
+    bus errors on 64-bit platforms but another way has been found to get
+    around that issue and a number of people were getting confused because of
+    the discrepancy
+ 7) Added support for the attribute "connection" on cursors, an optional
+    DB API extension
+ 8) Added support for passing a dictionary as the second parameter for the
+    cursor.execute() method in order to comply with the DB API more closely;
+    the method of passing parameters with keyword arguments is still supported
+    and is in fact preferred
+ 9) Added support for the attribute "statement" on cursors which is a
+    reference to the last SQL statement prepared or executed
+10) Added support for passing any sequence to callproc() rather than just
+    lists as before
+11) Fixed bug where segfault would occur if the array size was changed after
+    the cursor was executed but before it was fetched
+12) Ignore array size when performing executemany() and use the length of the
+    list of arguments instead
+13) Rollback when connection is closed or destroyed to follow DB API rather
+    than use the Oracle default (which is commit)
+14) Added check for array size too large causing an integer overflow
+15) Added support for iterators for Python 2.2 and above
+16) Added test suite based on PyUnitTest
+17) Added documentation in HTML format similar to the documentation for the
+    core Python library
+
+Changes from 2.5 to 2.5a
+ 1) Fix problem with Oracle 9i and retrieving strings; it seems that Oracle 9i
+    uses the correct method for dynamic callback but Oracle 8i will not work
+    with that method so an #ifdef was added to check for the existence of an
+    Oracle 9i feature; thanks to Paul Denize for discovering this problem
+
+Changes from 2.4 to 2.5
+ 1) Added flag OPT_NoOracle7 which, if set, assumes that connections are being
+    made to Oracle8 or higher databases; this allows for eliminating the
+    overhead in performing this check at connect time
+ 2) Added flag OPT_NumbersAsStrings which, if set, returns all numbers as
+    strings rather than integers or floats; this flag is used when defined
+    variables are created (during select statements only)
+ 3) Added flag OPT_Threading which, if set, uses OCI threading mode; there is a
+    significant performance degradation in this mode (about 15-20%) but it does
+    allow threads to share connections (threadsafety level 2 according to the
+    Python Database API 2.0); note that in order to support this, Oracle 8i or
+    higher is now required
+ 4) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS pairs where
+    applicable to support threading during blocking OCI calls
+ 5) Added global method attach() to cx_Oracle to support attaching to an
+    existing database handle (as provided by PowerBuilder, for example)
+ 6) Eliminated the cursor method fetchbinds() which was used for returning the
+    list of bind variables after execution to get the values of out variables;
+    the cursor method setinputsizes() was modified to return the list of bind
+    variables and the cursor method execute() was modified to return the list
+    of defined variables in the case of a select statement being executed;
+    these variables have three methods available to them: getvalue([<pos>]) to
+    get the value of a variable, setvalue(<pos>, <value>) to set its value and
+    copy(<var>, <src_pos>, <targ_pos>) to copy the value from a variable in a
+    more efficient manner than setvalue(getvalue())
+ 7) Implemented cursor method executemany() which expects a list of
+    dictionaries for the arguments
+ 8) Implemented cursor method callproc()
+ 9) Added cursr method prepare() which parses (prepares) the statement for
+    execution; subsequent execute() or executemany() calls can pass None as the
+    statement which will imply use of the previously prepared statement; used
+    for high performance only
+10) Added cursor method fetchraw() which will perform a raw fetch of the cursor
+    returning the number of rows thus fetched; this is used to avoid the
+    overhead of generating result sets; used for high performance only
+11) Added cursor method executemanyprepared() which is identical to the method
+    executemany() except that it takes a single argument which is the number of
+    times to execute a previously prepared statement and it assumes that the
+    bind variables already have their values set; used for high performance
+    only
+12) Added support for rowid being returned in a select statement
+13) Added support for comparing dates returned by cx_Oracle
+14) Integrated patch from Andre Reitz to set the null ok flag in the
+    description attribute of the cursor
+15) Integrated patch from Andre Reitz to setup.py to support compilation with
+    Python 1.5
+16) Integrated patch from Benjamin Kearns to setup.py to support compilation
+    on Cygwin
+
+Changes from 2.3 to 2.4
+
+1) String variables can now be made any length (previously restricted to the
+   64K limit imposed by Oracle for default binding); use the type
+   cx_Oracle.LONG_STRING as the argument to setinputsizes() for binding in
+   string values larger than 4000 bytes.
+2) Raw and long raw columns are now supported; use the types cx_Oracle.BINARY
+   and cx_Oracle.LONG_BINARY as the argument to setinputsizes() for binding in
+   values of these types.
+3) Functions DateFromTicks(), TimeFromTicks() and TimestampFromTicks()
+   are now implemented.
+4) Function cursor.setoutputsize() implemented
+5) Added the ability to bind arrays as out parameters to procedures; use the
+   format [cx_Oracle.<DataType>, <NumElems>] as the input to the function
+   setinputsizes() for binding arrays
+6) Discovered from the Oracle 8.1.6 version of the documentation of the OCI
+   libraries, that the size of the memory location required for the precision
+   variable is larger than the printed documentation says; this was causing a
+   problem with the code on the Sun platform.
+7) Now support building RPMs for Linux.
+
+Changes from 2.2 to 2.3
+
+ 1) Incremental performance enhancements (dealing with reusing cursors and
+    bind handles)
+ 2) Ensured that arrays of integers with a single float in them are all
+    treated as floats, as suggested by Martin Koch.
+ 3) Fixed code dealing with scale and precision for both defining a numeric
+    variable and for providing the cursor description; this eliminates the
+    problem of an underflow error (OCI-22054) when retrieving data with
+    non-zero scale.
+
+Changes from 2.1 to 2.2
+
+ 1) Upgraded thread safety to level 1 (according to the Python DB API 2.0) as
+    an internal project required the ability to share the module between
+    threads.
+ 2) Added ability to bind ref cursors to PL/SQL blocks as requested by
+    Brad Powell.
+ 3) Added function write(Value, [Offset]) to LOB variables as requested by
+    Matthias Kirst.
+ 4) Procedure execute() on Cursor objects now permits a value None for the
+    statement which means that the previously prepared statement will be
+    executed and any input sizes set earlier will be retained. This was done to
+    improve the performance of scripts that execute one statement many times.
+ 5) Modified module global constants BINARY and DATETIME to point to the
+    external representations of those types so that the expression
+    type(var) == cx_Oracle.DATETIME will work as expected.
+ 6) Added global constant version to provide means of determining the current
+    version of the module.
+ 7) Modified error checking routine to distinguish between an Oracle error and
+    invalid handles.
+ 8) Added error checking to avoid setting the value of a bind variable to a
+    value that it cannot support and raised an exception to indicate this fact.
+ 9) Added extra compile arguments for the AIX platform as suggested by Jehwan
+    Ryu.
+10) Added section to the README to indicate the method for a binary
+    installation as suggested by Steve Holden.
+11) Added simple usage example as requested by many people.
+12) Added HISTORY file to the distribution.
+

cx_Oracle/LICENSE.txt

+Copyright � 2007-2012, Anthony Tuininga.
+Copyright � 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta, Canada.
+All rights reserved.
+
+License for cx_Oracle
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions, and the disclaimer that follows.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions, and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    3. Neither the names of the copyright holders nor the names of any
+       contributors may be used to endorse or promote products derived from
+       this software without specific prior written permission.
+
+DISCLAIMER:
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *AS IS*
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Computronix� is a registered trademark of Computronix (Canada) Ltd.
+

cx_Oracle/README.txt

+Open Source Python/Oracle Utility - cx_Oracle
+---------------------------------------------
+cx_Oracle is a Python extension module that allows access to Oracle and 
+conforms to the Python database API 2.0 specifications with a number of
+additions. The method cursor.nextset() and the time data type are not
+supported by Oracle and are therefore not implemented.
+
+See http://www.python.org/topics/database/DatabaseAPI-2.0.html for more
+information on the Python database API specification. See the included
+documentation for additional information.
+
+For feedback or patches, contact Anthony Tuininga at
+anthony.tuininga@gmail.com. For help or to ask questions, please use the
+mailing list at http://lists.sourceforge.net/lists/listinfo/cx-oracle-users.
+
+Please note that an Oracle client (or server) installation is required in order
+to use cx_Oracle. If you do not require the tools that come with a full client
+installation, it is recommended to install the Instant Client which is far
+easier to install.
+
+
+Binary Install
+--------------
+Place the file cx_Oracle.pyd or cx_Oracle.so anywhere on your Python path.
+
+
+Source Install
+--------------
+This module has been built with Oracle 9.2.0, 10.2.0, 11.1.0 on Linux,
+Solaris and Windows. Others have reported success with other platforms
+such as Mac OS X.
+
+Use the provided setup.py to build and install the module which makes use of 
+the distutils module. Note that on Windows, I have used mingw32 
+(http://www.mingw.org) and the module will not build with MSVC without 
+modification. The commands required to build and install the module are as 
+follows:
+
+	python setup.py build
+	python setup.py install
+
+See BUILD.txt for additional information.
+
+
+Usage Example
+-------------
+
+import cx_Oracle
+
+# connect via SQL*Net string or by each segment in a separate argument
+#connection = cx_Oracle.connect("user/password@TNS")
+connection = cx_Oracle.connect("user", "password", "TNS")
+
+cursor = connection.cursor()
+cursor.execute("""
+        select Col1, Col2, Col3
+        from SomeTable
+        where Col4 = :arg_1
+          and Col5 between :arg_2 and :arg_3""",
+        arg_1 = "VALUE",
+        arg_2 = 5,
+        arg_3 = 15)
+for column_1, column_2, column_3 in cursor:
+    print "Values:", column_1, column_2, column_3
+
+
+For more examples, please see the test suite in the test directory and the
+samples in the samples directory. You can also look at the scripts in the
+cx_OracleTools (http://cx-oracletools.sourceforge.net) and the modules in the
+cx_PyOracleLib (http://cx-pyoraclelib.sourceforge.net) projects.
+
Add a comment to this file

cx_Oracle/html/_static/ajax-loader.gif

Added
New image

cx_Oracle/html/_static/basic.css

+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+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;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
Add a comment to this file

cx_Oracle/html/_static/comment-bright.png

Added
New image
Add a comment to this file

cx_Oracle/html/_static/comment-close.png

Added
New image
Add a comment to this file

cx_Oracle/html/_static/comment.png

Added
New image

cx_Oracle/html/_static/default.css

+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:visited {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+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;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+th {
+    background-color: #ede;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}
+
+.viewcode-back {
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}

cx_Oracle/html/_static/doctools.js

+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * 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(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<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(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});
Add a comment to this file

cx_Oracle/html/_static/down-pressed.png

Added
New image
Add a comment to this file

cx_Oracle/html/_static/down.png

Added
New image
Add a comment to this file

cx_Oracle/html/_static/file.png

Added
New image

cx_Oracle/html/_static/jquery.js

+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);