--- /dev/null
--- /dev/null
++webkit2gtk (2.6.2+dfsg1-4) unstable; urgency=medium
++
++ * debian/patches/fix-ftbfs-hppa.patch:
++ + Fix FTBFS in HPPA (Closes: #776281).
++ * debian/libwebkit2gtk-4.0-doc.links:
++ + Add symbolic link to make the documentation appear in devhelp
++ (Closes: #777589).
++ * debian/patches/fix-gstreamer-leak.patch:
++ + Fix memory leak in GStreamer code.
++ * debian/patches/remote-inspector.patch:
++ + Make the remote inspector work again.
++ * debian/patches/render-block-cast.patch:
++ + Fix invalid cast in WebCore::RenderBlock::blockSelectionGaps.
++ * debian/patches/fix-jit-crash.patch:
++ + Fix crash in SpeculativeJIT::compile() when loading theblaze.com.
++ * debian/patches/fix-null-renderer.patch:
++ + NULL pointer check in HTMLPlugInImageElement.
++ * debian/patches/fix-integer-overflow.patch:
++ + Fix crash due to integer overflow.
++ * debian/patches/serialized-script-value.patch:
++ + Prevent unsafe access to internal types.
++ * debian/patches/http-latin1.patch:
++ + HTTP header values should be treated as latin1, not UTF-8.
++ * debian/patches/fix-null-string-conversion.patch:
++ + Add NULL check to convertToUTF8String().
++ * debian/patches/fix-timers-animations.patch:
++ + Timers might never be fired during animations.
++ * debian/patches/fix-ax-crash.patch:
++ + Recursive crash at WebCore::accessibleNameForNode.
++ * debian/patches/fix-clearselection-segfault.patch:
++ + Fix segfault when calling clearSelection on a detached RenderObject.
++ * debian/patches/fix-date.patch:
++ + String(new Date(Mar 30 2014 01:00:00)) is wrong in CET.
++ * debian/patches/check-tls-errors.patch:
++ + Check TLS errors as soon as they are set in the SoupMessage.
++
++ -- Alberto Garcia <berto@igalia.com> Fri, 06 Mar 2015 09:33:11 +0200
++
++webkit2gtk (2.6.2+dfsg1-3) unstable; urgency=medium
++
++ * debian/patches/no-ssl-record-version.patch:
++ + Don't use a SSL3.0 record version in client hello.
++ * debian/patches/nullptr-accessibilitymenulistoption.patch:
++ + Check for NULL pointers in AccessibilityMenuListOption.
++ * debian/patches/nullptr-applystylecommand.patch:
++ + Check for NULL pointer in ApplyStyleCommand.
++ * debian/patches/nullptr-frameprogresstracker.patch:
++ + Check for NULL pointer in FrameProgressTracker.
++ * debian/patches/render-text-control.patch:
++ + Check for NULL pointer in SearchInputType.
++ * debian/patches/twitter-inserted-text.patch:
++ + Fix inserted text when typing in the Twitter message box.
++ * debian/patches/protect-document.patch:
++ + Protect Document in ProcessingInstruction::setXSLStyleSheet(). This
++ is a security fix, see https://codereview.chromium.org/579133004.
++ * debian/patches/at-spi2.patch:
++ + Accessible values are no longer accessible via AT-SPI2.
++ * debian/patches/ax-focus-events.patch:
++ + Fix accessible focus events in non-focused combo boxes.
++
++ -- Alberto Garcia <berto@igalia.com> Sun, 07 Dec 2014 17:53:25 +0100
++
++webkit2gtk (2.6.2+dfsg1-2) unstable; urgency=medium
++
++ * debian/patches/fix-mips64-build.patch:
++ + Fix mips64el build (Closes: #767598).
++ * debian/patches/flash-crash.patch:
++ + Fix crash in the Flash player (Closes: #768341).
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 10 Nov 2014 11:44:56 +0200
++
++webkit2gtk (2.6.2+dfsg1-1) unstable; urgency=medium
++
++ * New upstream release.
++
++ -- Alberto Garcia <berto@igalia.com> Thu, 23 Oct 2014 12:17:48 +0300
++
++webkit2gtk (2.6.1+dfsg1-2) unstable; urgency=medium
++
++ * debian/rules:
++ + Disable debugging symbols in armel and kfreebsd-amd64.
++ * debian/control:
++ + Bump Standards-Version to 3.9.6; no changes needed.
++
++ -- Alberto Garcia <berto@igalia.com> Wed, 15 Oct 2014 15:03:26 +0300
++
++webkit2gtk (2.6.1+dfsg1-1) unstable; urgency=medium
++
++ * New upstream release.
++ * debian/patches/fix-header-template.patch:
++ + Remove.
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 13 Oct 2014 15:18:12 +0300
++
++webkit2gtk (2.6.0+dfsg1-3) unstable; urgency=medium
++
++ * debian/patches/atomic_build_fix.patch:
++ + Make -latomic work also when --as-needed is present (Closes:
++ 764193).
++ * debian/rules:
++ + Don't build -dbg packages if we don't have debugging symbols.
++ + Disable debugging symbols in armhf (Closes: #764192).
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 06 Oct 2014 15:18:03 +0300
++
++webkit2gtk (2.6.0+dfsg1-2) unstable; urgency=medium
++
++ [ Alberto Garcia ]
++ * debian/patches/atomic_build_fix.patch:
++ + Add -latomic also to shared libraries.
++
++ [ Emilio Pozuelo Monfort ]
++ * debian/rules:
++ + Disable debugging symbols on powerpc. Should fix the build
++ as otherwise the linker needs too much memory and fails.
++ + Disable JIT on armel. Should fix the build.
++ * Upload to unstable.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Thu, 02 Oct 2014 00:42:20 +0200
++
++webkit2gtk (2.6.0+dfsg1-1) experimental; urgency=medium
++
++ * New upstream release.
++ * debian/patches/fix-textrel-x86.patch,
++ debian/patches/change-libexec-dir.patch:
++ + Remove.
++ * debian/patches/dfg-jit.patch,
++ debian/patches/install-minibrowser.patch,
++ debian/patches/restore_sparc_code.patch:
++ + Refresh.
++ * debian/patches/atomic_build_fix.patch:
++ + Add -latomic to fix build in some architectures.
++ * debian/patches/css-image-set.patch:
++ + Enable CSS_IMAGE_SET, required in order to display all inspector
++ icons.
++ * debian/rules:
++ + Disable JIT completely in mips and mipsel, it does not build at the
++ moment, see https://bugs.webkit.org/show_bug.cgi?id=136753.
++ + Enable JIT in armel and armhf.
++ * debian/copyright:
++ + Update with all the changes in 2.6.0 (Closes: #760477).
++ * debian/libwebkit2gtk-4.0-37.symbols:
++ + Update.
++ * Make gir1.2- and -dev packages multi-arch compliant:
++ + debian/gir1.2-javascriptcoregtk-4.0.install,
++ debian/gir1.2-webkit2-4.0.install:
++ - Put .typelib files in /usr/lib/<arch>/girepository-1.0.
++ + debian/control:
++ - Add Multi-Arch field to the affected packages.
++ + debian/gir1.2-javascriptcoregtk-4.0.links,
++ debian/libjavascriptcoregtk-4.0-dev.links:
++ - Remove old compatibility links.
++ + debian/patches/fix-header-template.patch:
++ - Make WebKitEnumTypes.h equal in all builds by not including the
++ name of the build directory.
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 29 Sep 2014 15:48:56 +0300
++
++webkit2gtk (2.5.3+dfsg1-1) experimental; urgency=medium
++
++ * New upstream release from the upcoming 2.6 branch.
++ + Rename source package to webkit2gtk, since now WebKitGTK+ only
++ provides the new WebKit2 API. We have to keep the old webkitgtk
++ packages around until all apps using the old API have ben ported.
++ + Add the +dfsg1 suffix to the version number since we have to remove
++ a few non-free files from the source tarball.
++ * debian/gbp.conf:
++ + Update upstream branch name.
++ * debian/watch:
++ + Add dversionmangle rule to strip +dfsg1 from the package.
++ * debian/rules:
++ + Rewrite completely using the debhelper sequencer and build with
++ cmake instead of autotools.
++ + Disable JIT and MacroAssembler in all architectures unless we know
++ it works.
++ + Add get-orig-source target.
++ * debian/control:
++ + Remove all packages that use the old WebKit API, as well as the
++ -common packages.
++ + libjavascriptcoregtk-3.0-0 => libjavascriptcoregtk-4.0-18.
++ + libwebkit2gtk-3.0-25 => libwebkit2gtk-4.0-37.
++ + Don't depend on any specific compiler.
++ + Add build dependencies on cmake and slimit.
++ + Replace libgeoclue-dev with geoclue-2.0.
++ + Split libwebkit2gtk-4.0-doc from the -dev package.
++ + Remove Mike Hommey from the Uploaders field.
++ * debian/copyright:
++ + Make it compliant with the copyright format v1.0 and refactor the
++ licenses a bit.
++ * debian/jquery-1.9.1.js:
++ + Provide uncompressed version of jquery to replace the compressed one
++ that had to be removed from the original tarball.
++ * debian/patches/enable_llint.patch,
++ debian/patches/02_notebook_scroll.patch,
++ debian/patches/atomic_build_fix.patch,
++ debian/patches/fix-gtkdoc-error.patch,
++ debian/patches/ftbfs-armhf.patch:
++ + Remove.
++ * debian/patches/dfg-jit.patch,
++ debian/patches/local-label-string-hurd.patch,
++ debian/patches/restore_sparc_code.patch,
++ debian/patches/fix-textrel-x86.patch:
++ + Refresh.
++ * debian/patches/install-minibrowser.patch:
++ + Rewrite to make it work with cmake.
++ * debian/patches/change-libexec-dir.patch:
++ + Install all auxiliary binaries in the same directory.
++ * debian/source/lintian-overrides:
++ + Remove.
++ * debian/libwebkit2gtk-4.0-37.lintian-overrides:
++ + Override shared-lib-without-dependency-information warning in
++ libwebkit2gtkinjectedbundle.so, that's a module used internally
++ by webkit.
++ * debian/symbols.filter:
++ + Remove.
++
++ -- Alberto Garcia <berto@igalia.com> Wed, 27 Aug 2014 06:18:56 +0000
++
++webkitgtk (2.4.1-1) experimental; urgency=medium
++
++ * New upstream release.
++ * debian/patches/ftbfs-armhf.patch:
++ + Fix FTBFS in armhf.
++ * debian/patches/local-label-string-hurd.patch:
++ + Fix FTBFS in hurd-i386.
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 14 Apr 2014 20:22:51 +0000
++
++webkitgtk (2.4.0-1) experimental; urgency=medium
++
++ * New upstream stable release.
++ * debian/patches/fix-textrel-x86.patch:
++ + Remove TEXTREL tag in x86.
++
++ -- Alberto Garcia <berto@igalia.com> Tue, 25 Mar 2014 11:18:17 +0200
++
++webkitgtk (2.3.92-1) experimental; urgency=low
++
++ * New upstream release.
++ * debian/patches/dfg-jit.patch,
++ debian/patches/install-minibrowser.patch:
++ + Refresh.
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 17 Mar 2014 21:07:56 +0000
++
++webkitgtk (2.3.90-1) experimental; urgency=medium
++
++ * New upstream release.
++ * debian/libwebkitgtk-1.0-0.symbols,
++ debian/libwebkitgtk-3.0-0.symbols,
++ debian/libwebkit2gtk-3.0-25.symbols:
++ + Add new symbols.
++ * debian/control:
++ + Update package descriptions.
++ + Remove redundant Priority fields from libwebkitgtk-{1,3}.0-common.
++ + Remove duplicate build dependency on flex.
++ * debian/patches/install-minibrowser.patch:
++ + Ship the MiniBrowser binary, which is useful for testing purposes.
++ * debian/patches/dfg-jit.patch:
++ + Enable DFG JIT on FreeBSD and Hurd.
++ * debian/patches/fix-gtkdoc-error.patch:
++ + Fix error in gtk-doc generation.
++ * debian/patches/02_notebook_scroll.patch:
++ + Refresh.
++
++ -- Alberto Garcia <berto@igalia.com> Tue, 18 Feb 2014 11:33:19 +0000
++
++webkitgtk (2.3.5-1) experimental; urgency=low
++
++ * New upstream release.
++ * debian/patches/02_notebook_scroll.patch,
++ debian/patches/enable_llint.patch,
++ debian/patches/restore_sparc_code.patch:
++ + Refresh.
++ * debian/patches/x86_asm_fix.patch:
++ + Remove, this has been merged upstream.
++ * Build a libjavascriptcoregtk-3.0-bin package with the jsc interpreter
++ + debian/control: add the new entry.
++ + debian/rules: rename the binary from jsc-3 to jsc and add the
++ suitable debhelper rules.
++ + debian/libjavascriptcoregtk-3.0-bin.install: list package contents.
++ + debian/libjavascriptcoregtk-3.0-bin.manpages,
++ debian/jsc.1: add manual page.
++ * debian/libwebkit2gtk-3.0-25.symbols:
++ + Add new symbols.
++
++ -- Alberto Garcia <berto@igalia.com> Fri, 07 Feb 2014 10:22:37 +0000
++
++webkitgtk (2.3.4-4) experimental; urgency=low
++
++ * debian/patches/atomic_build_fix.patch:
++ + Update the patch with a fix that actually works.
++
++ -- Alberto Garcia <berto@igalia.com> Sat, 01 Feb 2014 09:18:42 +0000
++
++webkitgtk (2.3.4-3) experimental; urgency=low
++
++ * debian/patches/atomic_build_fix.patch:
++ + Add -latomic to fix build in some architectures.
++ * debian/patches/x86_asm_fix.patch:
++ + Update patch with a better fix.
++ * debian/patches/enable_llint.patch:
++ + Refresh.
++
++ -- Alberto Garcia <berto@igalia.com> Tue, 28 Jan 2014 10:47:31 +0000
++
++webkitgtk (2.3.4-2) experimental; urgency=low
++
++ * debian/patches/x86_asm_fix.patch:
++ + Fix build failure on x86 due to incorrect asm generation.
++ * debian/patches/enable_llint.patch:
++ + Enable LLINT in FreeBSD and Hurd.
++ * debian/patches/restore_sparc_code.patch:
++ + Restore removed SPARC code.
++
++ -- Alberto Garcia <berto@igalia.com> Thu, 16 Jan 2014 08:30:14 +0000
++
++webkitgtk (2.3.4-1) experimental; urgency=low
++
++ * New upstream release.
++ * WebKit is now built in fast-install mode by default, there's no need
++ to run chrpath anymore.
++ + debian/rules: remove it from the installation process.
++ + debian/control: don't build depend on it.
++ * debian/libwebkit2gtk-3.0-25.symbols:
++ + Added new symbols.
++
++ -- Alberto Garcia <berto@igalia.com> Mon, 13 Jan 2014 19:48:47 +0000
++
++webkitgtk (2.3.3-1) experimental; urgency=low
++
++ * New upstream release.
++ * debian/patches/02_notebook_scroll.patch:
++ + Refreshed.
++ * Multi-arch support:
++ + debian/control: Add Multi-Arch and Pre-Depends fields to all
++ packages with shared libraries.
++ + debian/*.install: replace usr/lib/ with usr/lib/*/, but keep
++ GObject Introspection .typelib files in /usr/lib
++ + debian/rules: adapt libdir and libexecdir to multi-arch.
++ * debian/control:
++ + Add myself to Uploaders.
++ + Update package descriptions.
++ + Build depend on libpng-dev, not libpng12-dev.
++ + Bump Standards-Version to 3.9.5; no changes needed.
++ + Use canonical versions of VCS URLs.
++ * debian/rules:
++ + Support noopt and debug in DEB_BUILD_OPTIONS.
++ + Disable JIT and MacroAssembler on powerpcspe and mips64el.
++ + No need to pass --enable-wayland-target anymore, it's automatically
++ enabled now.
++ + Disable parallel builds since they're unstable at the moment.
++ + Don't create the libexec dirs manually, this is no longer needed.
++ + Remove rpath from WebKitPluginProcess and WebKitWebProcess.
++ * debian/libwebkitgtk-1.0-0.symbols,
++ debian/libwebkitgtk-3.0-0.symbols,
++ debian/libwebkit2gtk-3.0-25.symbols:
++ + Updated for the new symbols.
++
++ -- Alberto Garcia <berto@igalia.com> Fri, 03 Jan 2014 23:49:07 +0000
++
++webkitgtk (2.3.2-1) experimental; urgency=low
++
++ * New upstream release.
++ * debian/patches/40_hppa_platform_h.patch,
++ debian/patches/41_hppa_build_fix.patch,
++ debian/patches/50_bsd-hurd-build-fix.patch,
++ debian/patches/60_add-missing-include.patch,
++ debian/patches/61_add-another-missing-include.patch,
++ debian/patches/70_Add-stubs-for-missing-symbols-in-dom-bindings.patch:
++ + Removed, merged upstream.
++ * debian/patches/30_gtkdoc_fixxref_warnings.patch:
++ + Drop unapplied patch that we don't need anymore.
++ * debian/patches/13_thread-safe-icon-db.patch:
++ + Drop unapplied patch that was fixed upstream a long time ago.
++ * debian/patches/12_large-mem-page.patch:
++ + Drop unapplied patch, it hasn't been applied in quite some time
++ and we haven't heard of any complains. Besides, the patch no
++ longer applies as the code it touched has been largely reworked
++ or removed.
++ * debian/patches/14_ia64-wide-ptr.patch,
++ debian/patches/15_ia64-use-system-malloc.patch:
++ + Dropped. The former wasn't been applied and needs rebasing if still
++ needed. The second is probably useless given all the other patches
++ that were needed on IA64 are gone. It may not be needed anymore as
++ the code that the patch tries to workaround may be fixed now.
++ If these or any other patches are needed for IA64, they should be
++ sent upstream so we don't run into problems like this again.
++ * debian/rules:
++ + Disable debugging symbols on powerpcspe. Closes: #696472.
++ * debian/libwebkitgtk-1.0-0.symbols,
++ debian/libwebkitgtk-3.0-0.symbols,
++ debian/libwebkit2gtk-3.0-25.symbols:
++ + Updated for the new symbols.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Thu, 21 Nov 2013 22:15:28 +0100
++
++webkitgtk (2.3.1-1) experimental; urgency=low
++
++ [ Michael Biebl ]
++ * debian/rules:
++ + Replace another occurence of findstring with filter.
++
++ [ Emilio Pozuelo Monfort ]
++ * debian/watch,
++ debian/gbp.conf:
++ + Update for 2.3 packages in experimental.
++ * New upstream development release.
++ + Re-enables MathML support. Closes: #649067.
++ * debian/control,
++ debian/rules:
++ + Enable wayland support on linux.
++ * debian/rules:
++ + Use gcc / g++ 4.8 instead of 4.7. We should just be using the
++ default here but some architectures are still defaulting to 4.6.
++ * debian/patches/01_do-not-build-testing-tools.patch:
++ + Removed, no longer needed.
++ * debian/patches:
++ + Refreshed.
++ * debian/patches/50_bsd-hurd-build-fix.patch:
++ + Fix the build on !linux.
++ * debian/patches/60_add-missing-include.patch:
++ + Patch from upstream bugzilla, fix another build issue.
++ * debian/patches/61_add-another-missing-include.patch:
++ + Another missing include, patch from upstream bugzilla.
++ * debian/patches/40_hppa_platform_h.patch:
++ + WTF_CPU_HPPA was already being defined, so only define the missing
++ remaining bits.
++ + Don't disable YARR, JIT and MacroAssembler here, this is a more general
++ problem as explained in https://bugs.webkit.org/show_bug.cgi?id=113638
++ and we already disable those in debian/rules.
++ * debian/patches/70_Add-stubs-for-missing-symbols-in-dom-bindings.patch:
++ + New patch, add stubs for a few missing symbols in the DOM bindings
++ which are gone because the underlying objects have been removed.
++ * debian/libwebkitgtk-1.0-0.symbols,
++ debian/libwebkitgtk-3.0-0.symbols,
++ debian/libwebkit2gtk-3.0-25.symbols:
++ + Updated for the new symbols.
++ * debian/source/lintian-overrides:
++ + Override license-problem-json-evil, the file is mentioning the original
++ implementation's license but doesn't actually have that license.
++ + Drop an old override.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Tue, 05 Nov 2013 14:24:07 +0100
++
++webkitgtk (2.2.1-1) unstable; urgency=low
++
++ * debian/gbp.conf:
++ + Added.
++ * New upstream stable release.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Tue, 29 Oct 2013 20:44:42 +0100
++
++webkitgtk (2.2.0-2) unstable; urgency=low
++
++ * debian/rules:
++ + Disable JIT on mips, should fix the FTBFS.
++ * Upload to unstable.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Mon, 14 Oct 2013 19:00:57 +0200
++
++webkitgtk (2.2.0-1) experimental; urgency=low
++
++ * New upstream stable release.
++ * debian/control:
++ + Remove gail build dependencies, no longer needed.
++ * debian/patches:
++ + Refreshed.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Wed, 09 Oct 2013 16:01:05 +0200
++
++webkitgtk (2.1.91-1) experimental; urgency=low
++
++ [ Michael Biebl ]
++ * debian/rules:
++ + Use filter instead of findstring to match the current architecture as
++ findstring also matches substrings so we accidentally used stabs debug
++ symbols for i386 and amd64 and disabled jit for mips.
++
++ [ Emilio Pozuelo Monfort ]
++ * debian/rules:
++ + Use CPPFLAGS instead of JSC_CPPFLAGS to disable JIT and MacroAssembler
++ as JSC_CPPFLAGS is no longer honored by the build system. This fixes
++ the build (again) on ia64 powerpc sparc s390 and s390x.
++ * debian/patches/40_hppa_platform_h.patch,
++ debian/patches/41_hppa_build_fix.patch,
++ debian/rules:
++ + Add support for HPPA. Thanks to John David Anglin for the patches.
++ Closes: #721206.
++ * debian/patches/20_mesa-llvmpipe-crash.patch,
++ debian/patches/25_bison_2.6_ftbfs.patch:
++ + Remove patches that were cherry-picked from upstream 2.1.x and we
++ no longer use.
++ * debian/rules:
++ + Disable JIT and MacroAssembler on alpha. Closes: #721863.
++ + Likewise for ppc64 and sparc64.
++
++ [ Gustavo Noronha Silva ]
++ * debian/rules:
++ + Disable GLX on ARM, thanks to Sjoerd Simons.
++ * debian/patches/10_hurd_getCurrentExecutablePath.patch,
++ debian/patches/20_bsd-hurd-gtest-port.patch:
++ + removed, applied upstream
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 16 Sep 2013 15:02:08 -0300
++
++webkitgtk (2.1.90.1-1) experimental; urgency=low
++
++ [ Gustavo Noronha Silva ]
++ * New development release
++ * debian/patches/series, debian/patches/03_dom_bindings_compat.patch:
++ - removed patch; applied upstream
++ * debian/patches/02_notebook_scroll.patch:
++ - refreshed
++ * debian/*.symbols:
++ - updated with ABI additions
++
++ [ Emilio Pozuelo Monfort ]
++ * debian/rules:
++ + Switch powerpc to stabs as it's currently taking too much space in
++ the buildds.
++ * debian/control:
++ + Add myself to Uploaders.
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 29 Aug 2013 21:32:48 -0300
++
++webkitgtk (2.1.4-3) experimental; urgency=low
++
++ * debian/control, debian/libwebkitgtk-common-dev.install:
++ - install the webkitdom headers in a separate dev package that can be
++ depended on by both libwebkitgtk-3.0-dev and libwebkit2gtk-3.0-dev
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 23 Aug 2013 15:03:44 -0300
++
++webkitgtk (2.1.4-2) experimental; urgency=low
++
++ * debian/rules:
++ - merge build and install rules so we can install right after building
++ each flavor, and save space by cleaning up the build
++ - clean *.pyc files in the clean target, to allow multiple builds in the
++ same source tree again
++ * debian/rules:
++ - disable debug symbols sparc, and use stabs for armel, like we already
++ do for armhf; their buildds are too constrained in terms of hardware
++ resources
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 21 Aug 2013 23:13:58 -0300
++
++webkitgtk (2.1.4-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/01_do-not-build-testing-tools.patch:
++ - refreshed
++ * debian/libjavascriptcore*dev.install, gir1.2-*.install,
++ debian/libjavascriptcore*dev.links, gir1.2-*.links:
++ - Install the GObject Introspection support files, and compatibility
++ links that cover the old names
++ * debian/patches/03_dom_bindings_compat.patch:
++ - Add symbols that went missing since the last stable release
++ * debian/*.symbols:
++ - updated symbols files to contain the newly added APIs
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 19 Aug 2013 21:11:33 -0300
++
++webkitgtk (2.0.4-2) unstable; urgency=low
++
++ [ Jeremy Bicha ]
++ * Don't recommend universe gstreamer codecs on Ubuntu. Closes: #714299.
++
++ [ Gustavo Noronha ]
++ * debian/patches/03_atomics-buildfix.patch:
++ - patch from upstream to fix build in architectures which do not support
++ some atomic builtins for 64 bits types (should fix powerpc and sparc)
++ * debian/libwebkit2gtk-3.0-25.symbols, debian/symbols.filter:
++ - export the WebGtkExtensionManager, used by WebKit2GTK+ for loading
++ injected bundle plugins
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 14 Aug 2013 22:13:41 -0300
++
++webkitgtk (2.0.4-1) experimental; urgency=low
++
++ [ Emilio Pozuelo Monfort ]
++ * debian/compat:
++ + Go back to compat 8 for now as compressed symbol files kill .deb
++ compression. Also objcopy seems to take a lot of memory to compress
++ debugging symbols, killing the build in some cases.
++ * debian/rules:
++ + Stop building with -O1 on armhf. Hopefully the compiler error we were
++ getting has been fixed.
++ + Build with -gstabs on armhf and kfreebsd to try to eat less memory
++ and make the build succeed. If it doesn't we may have to disable
++ debugging symbols as we do in many other arches.
++
++ [ Gustavo Noronha Silva ]
++ * New upstream release
++ * debian/*.symbols, debian/*.install, debian/symbols.filter,
++ debian/patches/01_do-not-build-testing-tools.patch, debian/rules:
++ - Avoid exposing a ton of C++ symbols by not building the testing
++ tools
++ - We no longer build the test browsers, as well
++ * debian/rules:
++ - move dh_autoreconf call to its own rule with its own custom stamp,
++ so we can just call binary if the build fails and we want to try again
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 08 Aug 2013 20:00:46 -0300
++
++webkitgtk (2.0.3-1) experimental; urgency=low
++
++ * Team upload.
++
++ * debian/libwebkit2gtk-3.0-25.symbols:
++ + Added missing i386 symbols. Should really fix the i386 build.
++ Closes: #704886.
++ * debian/rules:
++ + Pass -I Source/autotools to autoreconf to make sure aclocal can find
++ the necessary macros, as otherwise some versions such as aclocal-1.11
++ have some trouble with this.
++ + Add --disable-jit back on mipsel, armel and powerpc. The change was
++ probably lost with the webkit2 addition.
++ + Don't pass --with-gstreamer=1.0 anymore, GStreamer support is always
++ 1.0 now and the configure flag has been dropped.
++ + Don't pass --disable-plugin-process. The flag is gone and the plugin
++ process is always built for WebKit2, which is what we were doing.
++ + Don't pass --disable-jit on powerpc. Instead disable JIT, YARR and
++ assembler in ia64 powerpc sparc s390 and s390x as there's no
++ support for MacroAssembler for them.
++ * debian/patches/changeset_145551.diff:
++ + Backport from upstream, implement Double2Ints in CLoop backend for
++ 32 bit architectures, needed for the above architectures where we
++ disable JIT, YARR and assembler.
++ * debian/control:
++ + Build depend on libgudev-1.0-dev on linux for gamepad support.
++ * debian/patches/10_hurd_getCurrentExecutablePath.patch:
++ + Readd patch from #669059 that was lost. Fixes build on hurd.
++
++ * New upstream release.
++ * changeset_150117.diff, changeset_150326.diff, changeset_150963.diff:
++ + Dropped, included upstream.
++
++ * debian/patches/changeset_147557.diff:
++ + Backport from upstream, fix a dispose/finalize mistake that can
++ cause crashes in some scenarios.
++ * debian/patches/20_bsd-hurd-gtest-port.patch:
++ + New patch. Fix kfreebsd and hurd builds by making gtest know about
++ them.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Sun, 16 Jun 2013 20:52:37 +0200
++
++webkit (1.8.1-4) unstable; urgency=low
++
++ * Acknowledge NMUs. Thanks Samuel, Ansgar and Michael!
++ * debian/patches/20_mesa-llvmpipe-crash.patch:
++ + Backport change from upstream, fixes crashes when running
++ mesa llvmpipe drivers. Closes: #711584.
++ * debian/patches/25_bison_2.6_ftbfs.patch:
++ + Backport change from upstream, fix the build with bison >= 2.6.
++ * debian/patches/30_gtkdoc_fixxref_warnings.patch:
++ + New patch. Ignore warnings when generating the html documentation.
++ The broken links were probably already there in previous builds
++ as we don't build depend on the necessary -doc packages. We will
++ upload 2.0.x to unstable soonish anyway so no point in fixing
++ such minor issues here.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Wed, 12 Jun 2013 21:48:22 +0200
++
++webkitgtk (2.0.2-2) experimental; urgency=low
++
++ * Team upload.
++
++ * debian/control,
++ debian/rules:
++ + Build depend on gcc-4.7 and g++-4.7 and set the C compiler and C++
++ compiler to this version as webkitgtk now requires GCC >= 4.7 and
++ the default on many architectures is still 4.6.
++ * debian/control,
++ debian/compat:
++ + Bump debhelper compat to 9. Among other things, this brings us
++ compressed debug info files. It also brings build-id debug info
++ files which greatly speed up gdb start up as gdb won't have to
++ checksum the (rather big) webkit debug info files anymore.
++ * debian/rules:
++ + Exclude libwebkit2gtkinjectedbundle.so from dh_makeshlibs as it's a
++ private library and debhelper looks at every shared lib in compat 9.
++ * debian/libwebkitgtk-1.0-0.symbols,
++ debian/libwebkitgtk-3.0-0.symbols:
++ + Add missing symbols for 32 bit arches. Closes: #704886.
++ * debian/libwebkit2gtk-3.0-25.symbols:
++ + Demangle symbols.
++ * debian/control:
++ + Bump required build dependencies according to Versions.mk.
++ + Add missing build dependency on flex. Thanks to Sjoerd Simons for
++ noticing this.
++ + Also add other missing build dependencies (cairo, freetype,
++ fontconfig and libxml).
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Tue, 04 Jun 2013 15:00:49 +0200
++
++webkitgtk (2.0.2-1) experimental; urgency=low
++
++ * Team upload.
++
++ * New upstream release.
++ + debian/patches/03_avoid_unresolved_x_symbols.patch:
++ - Removed, applied upstream.
++ + debian/patches/changeset_150117.diff,
++ debian/patches/changeset_150256.diff,
++ debian/patches/changeset_150326.diff,
++ debian/patches/changeset_150963.diff:
++ - Backport various build fixes from upstream.
++ + debian/*.symbols:
++ - Updated.
++ + debian/libwebkit2gtk-3.0-0.install:
++ - Don't install .la files.
++ + debian/rules:
++ - Re-enable parallel build support, the above patches should
++ make it work.
++ + debian/libwebkit2gtk-3.0-{0,25}.install,
++ debian/control,
++ debian/rules:
++ - Renamed libwebkit2gtk-3.0-0 to libwebkit2gtk-3.0-25.
++ - Make libwebkit2gtk-3.0-25 break/replace the old
++ libwebkit2gtk-3.0-0 as the injected-bundle module path
++ is the same.
++ + debian/libwebkit2gtk-3.0-25.symbols:
++ - Add a symbols file for libwebkit2gtk-3.0.
++ * debian/watch:
++ + Updated to work with the new page.
++ * debian/rules:
++ + Run dh_autoreconf. Makes it easier to backport upstream patches
++ that modify autotools files.
++ * debian/control:
++ + Mention "dummy" in libwebkit-dev's long description to shut
++ lintian up.
++ + Bump Standards-Version to 3.9.4; no changes needed.
++ + Bump libharfbuzz-dev's minimum build dependency to pick up a
++ dependency against the new libharfbuzz0a package.
++
++ -- Emilio Pozuelo Monfort <pochu@debian.org> Wed, 29 May 2013 10:39:29 +0200
++
++webkitgtk (1.11.91-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/03_avoid_unresolved_x_symbols.patch:
++ - patch to avoid linking issue
++ * debian/rules:
++ - enable WebKit2 packages
++ * debian/*.symbols:
++ - updated with new symbols
++ * debian/control:
++ - add libwebp-dev to the build dependencies
++ - add libsecret-1-dev to build dependencies
++ - add libharfbuzz-dev >= 0.9.7 to build dependencies
++ * debian/libwebkitgtk-3.0-dev.install:
++ - install webkitdom includes, which now live in a new path
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 17 Mar 2013 11:43:34 -0300
++
++webkitgtk (1.10.2-2) experimental; urgency=low
++
++ * Integrate patches and acknowledge NMUs; thanks to Ansgar Burchardt
++ <ansgar@debian.org>, and Michael Gilbert <mgilbert@debian.org>
++ * debian/control, debian/rules:
++ - switch to building with GStreamer 1.0
++ * debian/control:
++ - added ruby to the Build-Dependencies, it is now required
++ for building WebKit
++ * debian/rules:
++ - ensure configure is the last command run in a single shell invocation,
++ so the build fails early if configure fails
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 24 Feb 2013 16:51:07 -0300
++
++webkitgtk (1.10.2-1) experimental; urgency=low
++
++ * New stable release
++ - source package renamed following upstream
++ - Includes the WebCore split patches, so the make command line
++ limit problem should not happen
++ * Acknowledge NMU to fix FreeBSD and Hurd, thanks to Samuel
++ Thibault <sthibault@debian.org>
++ * Acknowledge NMU to change deb compression to xz, thanks to
++ Ansgar Burchardt <ansgar@debian.org>
++ * Acknowledge NMU to use smaller debug format for ia64 as well,
++ thanks to Ansgar Burchardt <ansgar@debian.org>
++ * debian/*.symbols:
++ - updated
++ * debian/control:
++ - bump libsoup dependency to 2.40 accross the board,
++ following upstream's bump but using the first stable
++ release instead of the development one
++ * debian/*webkit2*, debian/rules, debian/control:
++ - new packages for the WebKit2GTK+ library, not built by default, you
++ can enable them by setting the make ENABLE_WEBKIT2 variable to yes
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 05 Dec 2012 23:41:36 -0200
++
++webkit (1.9.2-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/10_kfreebsd_support.patch:
++ - removed; applied upstream
++ * debian/rules:
++ - disable AR_FLAGS space optimization for now, since linking two libtool
++ convenience libraries seems to break that
++ * debian/*.symbols:
++ - updated with symbols of the new version
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 08 May 2012 12:01:33 -0300
++
++webkit (1.8.1-3.4) unstable; urgency=medium
++
++ * Non-maintainer upload.
++ * Fix wide pointer issues on ia64 (closes: #642750).
++ * Make favicon database thread-safe (closes: #697172).
++ * Support architectures with large page sizes (closes: #694971).
++ * Compile with --disable-jit on armel, mipsel, and powerpc (closes: #651636).
++
++ -- Michael Gilbert <mgilbert@debian.org> Sat, 16 Feb 2013 21:46:48 +0000
++
++webkit (1.8.1-3.3) unstable; urgency=low
++
++ * Non-maintainer upload.
++ * debian/rules: Disable debug symbols also for ia64.
++
++ -- Ansgar Burchardt <ansgar@debian.org> Thu, 13 Sep 2012 23:39:52 +0200
++
++webkit (1.8.1-3.2) unstable; urgency=low
++
++ * Non-maintainer upload.
++ * debian/rules: use xz compression for binary packages. (Closes: #684139)
++
++ -- Ansgar Burchardt <ansgar@debian.org> Sat, 08 Sep 2012 18:40:04 +0200
++
++webkit (1.8.1-3.1) unstable; urgency=low
++
++ * Non-maintainer upload.
++ * Fix debian/patches/10_kfreebsd_support.patch
++ debian/patches/11_hurd_support.patch patches for kfreebsd and hurd build
++ (Closes: #669059).
++
++ -- Samuel Thibault <sthibault@debian.org> Fri, 25 May 2012 11:00:30 +0200
++
++webkit (1.8.1-3) unstable; urgency=low
++
++ [ Samuel Thibault ]
++ * debian/rules:
++ - Disable debug symbols also for hurd-i386 (Closes: #664810)
++ * debian/patches/11_hurd_support.patch:
++ - Add Hurd-specific code path before the catch-all UNIX code path for
++ getting the executable path (Closes: 669059)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 23 May 2012 22:54:54 -0300
++
++webkit (1.8.1-2) unstable; urgency=low
++
++ [ Michael Biebl ]
++ * debian/rules:
++ - Use set -e in for loops to fail early
++ - Standardize on $(shell ) for shell invocation and only add
++ -Wl,--no-keep-memory for 32 bits architectures
++ - Disable debugging symbols completely for architectures for
++ which we were using -gstabs before, since they keep hitting
++ memory limits on the buildds
++
++ [ Jeremy Bicha ]
++ * debian/rules:
++ - Remove duplicate LDFLAGS when running configure
++ * debian/watch:
++ - Look for tar.xz files from now on
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 04 May 2012 12:37:56 -0300
++
++webkit (1.8.1-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/patches/10_kfreebsd_support.patch:
++ - Patch by Steven Chamberlain <steven@pyro.eu.org> to fix the
++ build for kFreeBSD (Closes: #669308)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 26 Apr 2012 19:52:12 -0300
++
++webkit (1.8.0-2) unstable; urgency=low
++
++ * Upload to unstable
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 03 Apr 2012 16:50:54 -0300
++
++webkit (1.8.0-1) experimental; urgency=low
++
++ * New stable release
++ * debian/control:
++ - move libwebkit-dev to oldlibs
++ * debian/*.symbols:
++ - updated with symbols additions
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 28 Mar 2012 09:53:38 -0300
++
++webkit (1.7.92-1) experimental; urgency=low
++
++ * New development release
++ * debian/control:
++ - wrapped Build-Dependencies
++ * debian/rules:
++ - pass --no-keep-memory to the linker, to make build less likely
++ to fail with an OOM
++ * debian/*.symbols:
++ - updated with new symbols
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 26 Mar 2012 19:56:51 -0300
++
++webkit (1.7.91-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/05_sparc-needs-alignment.patch:
++ - removed; applied upstream
++ * debian/libwebkitgtk*.symbols:
++ - added DRT optional symbols that are different on i386/powerpc
++ * debian/control:
++ - replace dh_clean -k call with dh_prep
++ - bump Build-Depends on debhelper, for dh_prep
++ - bump Dependency on libsoup to for the -dev packages to match the
++ Build-Dependency
++ - Recommend gstreamer packages required to play most formats
++ with <video> and <audio>
++ * debian/rules:
++ - disable parallel builds to work-around the racy problems
++ we have seen in the wild
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sat, 10 Mar 2012 23:25:33 -0300
++
++webkit (1.7.90+svn20120304-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/01_double-conversion.patch,
++ debian/patches/03_fix-documentation-build.patch,
++ debian/patches/04_hurd-fix.patch:
++ - removed; applied upstream
++ * debian/*.symbols:
++ - updated
++ * Merged changes done in 1.6.3-2
++ * debian/control:
++ - Put all gir1.2-* packages into the introspection section.
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 04 Mar 2012 16:28:56 -0300
++
++webkit (1.7.5-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/03_fix-documentation-build.patch:
++ - refreshed, with changes from upstream
++ * debian/patches/04_hurd-fix.patch:
++ - refreshed;
++ * Merged changes done in 1.6.3-1
++ * debian/*.symbols:
++ - updated symbols file with ABI changes
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 17 Feb 2012 11:48:31 -0200
++
++webkit (1.7.4-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/01_double-conversion.patch:
++ - refreshed; partially applied upstream
++ * debian/patches/03_freebsd-fix.patch,
++ debian/patches/04_pkgconfig-fix.patch:
++ - removed; applied upstream
++ * debian/patches/03_fix-documentation-build.patch:
++ - added; fix building docs for the GTK+ 2 library
++ * debian/control:
++ - update build-dependency for libsoup2.4-dev to 2.37.4
++ - add libgl1-mesa-dev as a B-D, since we now build with
++ WebGL enabled by default
++ * debian/rules:
++ - adapted doc installation to the new system
++ * debian/*.install:
++ - include directory got renamed webkit->webkitgtk
++ * debian/libwebkit*.symbols:
++ - updated
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 19 Jan 2012 00:09:29 -0200
++
++webkit (1.6.3-2) unstable; urgency=low
++
++ * debian/patches/05_sparc-needs-alignment.patch:
++ - patch by Jurij Smakov <jurij@wooyd.org> to fix JSC for SPARC
++ (Closes: #651934)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 04 Mar 2012 12:05:04 -0300
++
++webkit (1.6.3-1) unstable; urgency=low
++
++ * debian/patches/04_pkgconfig-fix.patch:
++ - removed; applied in this upstream version
++ * debian/rules:
++ - move -Wl,--no-relax to LD_FLAGS, when building on alpha, and add
++ LDFLAGS as a parameter (part of #648761)
++ * debian/patches/01_double-conversion.patch:
++ - add CPU(ALPHA) to the list of cpus that pass the test
++ (Closes: #648761)
++ * debian/patches/04_hurd-fix.patch:
++ - patch by Pino Toscano <pino@debian.org> to fix FTBFS on Hurd
++ (Closes: #649192)
++ * debian/rules:
++ - accepted patch by Moritz Muehlenhoff <jmm@debian.org> to use
++ dpkg-buildflags for cflags/cppflags/ldflags (Closes: #659391)
++ * debian/control:
++ - add Conflicts and Replaces combo on libjavascriptcoregtk-1.0-dev also
++ for libwebkit-dev << 1.5.0 (Closes: #657408)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 15 Feb 2012 23:29:11 -0200
++
++webkit (1.6.3-1) unstable; urgency=low
++
++ * debian/patches/04_pkgconfig-fix.patch:
++ - removed; applied in this upstream version
++ * debian/rules:
++ - move -Wl,--no-relax to LD_FLAGS, when building on alpha, and add
++ LDFLAGS as a parameter (part of #648761)
++ * debian/patches/01_double-conversion.patch:
++ - add CPU(ALPHA) to the list of cpus that pass the test
++ (Closes: #648761)
++ * debian/patches/04_hurd-fix.patch:
++ - patch by Pino Toscano <pino@debian.org> to fix FTBFS on Hurd
++ (Closes: #649192)
++ * debian/rules:
++ - accepted patch by Moritz Muehlenhoff <jmm@debian.org> to use
++ dpkg-buildflags for cflags/cppflags/ldflags (Closes: #659391)
++ * debian/control:
++ - add Conflicts and Replaces combo on libjavascriptcoregtk-1.0-dev also
++ for libwebkit-dev << 1.5.0 (Closes: #657408)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 15 Feb 2012 23:29:11 -0200
++
++webkit (1.6.1-5) unstable; urgency=low
++
++ * debian/rules:
++ - also build with stabs debug symbols format when under s390x
++ patch by Aurelien Jarno <aurel32@debian.org> (Closes: #637228)
++ * debian/control:
++ - add Breaks for midori and claws-mail-fancy-plugin versions that
++ were using the private webkit_web_view_get_selected_text symbol
++ (Closes: #646095)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 01 Nov 2011 23:20:19 -0200
++
++webkit (1.6.1-4) unstable; urgency=low
++
++ * debian/patches/03_freebsd-fix.patch:
++ - fix FreeBSD 64 bits build
++ * debian/patches/04_pkgconfig-fix.patch:
++ - import patch from upstream to fix pkg-config file to require the JSC
++ one
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 23 Oct 2011 20:10:53 -0200
++
++webkit (1.6.1-3) unstable; urgency=low
++
++ * debian/patches/01_double-conversion.patch:
++ - imported from upstream; fixes s390 double conversion, modified
++ to also include IA64
++ * debian/rules:
++ - try reducing the disk space used to build webkit by using thin
++ archives
++ - disable silent rules to make debugging easier
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 21 Oct 2011 10:38:17 -0200
++
++webkit (1.6.1-2) unstable; urgency=low
++
++ * Rename source package back to webkit
++ * debian/control:
++ - Build-Depend on gawk, since our GNUmakefile.in has lines that are too
++ long for mawk, which results in a broken GNUmakefile
++ * debian/rules:
++ - re-enable installing documentation
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 18 Oct 2011 09:59:20 -0200
++
++webkitgtk+ (1.6.1-1) experimental; urgency=low
++
++ * New upstream release
++ * debian/patches/01_fix-introspection.patch:
++ - Removed; applied upstream
++ * debian/patches/02_notebook_scroll.patch:
++ - Patch by Josselin Mouette <joss@debian.org> to ignore alt+wheel
++ (Closes: #640980)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 26 Sep 2011 23:24:37 -0300
++
++webkitgtk+ (1.5.2-1) experimental; urgency=low
++
++ * New upstream development release
++ * debian/patches/01_spoof-ua-for-calendar.patch:
++ - Remove; applied upstream
++ * debian/patches/01_fix-introspection.patch:
++ - Fix the introspection build
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 24 Aug 2011 21:43:19 -0300
++
++webkitgtk+ (1.4.2-2) unstable; urgency=low
++
++ * debian/rules:
++ - fix armhf special-casing to actually work as intended; thanks to
++ mbiebl for finding the issue and helping resolve it
++ * debian/watch:
++ - provided by Michael Biebl <biebl@debian.org>; thanks! (Closes: #633446)
++ * debian/patches/01_spoof-ua-for-calendar.patch:
++ - steal patch from upstream (on track for 1.4.3) to make Google Calendar
++ behave and not give us the mobile version
++ * debian/control:
++ - Build-Depend on libjpeg-dev instead of libjpeg62-dev (See #635287)
++ - Re-add the libwebkit-dev package to automatically upgrade packages
++ using the GTK+ 2.0 version of WebKitGTK+.
++ - Fix capitalization of GTK+ in the description (Closes: #611871)
++ - Set Homepage to webkitgtk.org instead of webkit.org (Closes: #589431)
++ - Update to the new GI mini-policy by making the -dev packages depend on
++ the appropriate gir1.2-webkit-?.0 packages (Closes: #633962)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 25 Jul 2011 21:08:52 -0300
++
++webkitgtk+ (1.4.2-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/patches/01_add-missing-file.patch:
++ - removed; pushed upstream.
++ * debian/rules:
++ - use gstabs for mips and mipsel as well, to try to make it possible for
++ the builders to build webkit
++ - use -O1 for armhf to workaround compiler bug
++
++ -- Gustavo Noronha Silva <kov@debian.org> Sun, 10 Jul 2011 10:54:24 -0300
++
++webkitgtk+ (1.4.1-2) unstable; urgency=low
++
++ * debian/patches/01_add-missing-file.patch:
++ - copied MIPSAssembler.h from upstream's source repository; it's missing
++ from the sources list and didn't get included in the tarball, this will
++ fix the build on MIPS
++ * debian/control:
++ - fix dependency on gtk2 to please lintian (remove -1)
++ - adjust Standards-Version with no changes to the packaging
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 20 Jun 2011 14:50:27 -0300
++
++webkitgtk+ (1.4.1-1) unstable; urgency=low
++
++ * New upstream version, uploaded to unstable.
++ * debian/*.symbols:
++ - add optional symbols for some JIT stub symbols that show up in some
++ platforms (i.e. ARMEL)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 06 Jun 2011 21:12:38 -0300
++
++webkitgtk+ (1.4.0-1) experimental; urgency=low
++
++ * debian/patches/02_plugin_check_mixed_symbols.patch,
++ debian/patches/01_plugin_path.patch:
++ - removed; applied upstream
++ * debian/control, debian/changelog:
++ - rename source package and remove the libwebkit-dev package to avoid
++ automatically transitioning packages to the new version
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 29 Apr 2011 10:57:23 -0300
++
++webkit (1.3.13-4) experimental; urgency=low
++
++ * debian/*.symbols:
++ - remove debian revision from WTFReportBacktrace@Base to make
++ lintian happy
++ - add optional C++ symbols for functions that use different data types
++ on 32 bits architectures
++ * debian/patches/02_plugin_check_mixed_symbols.patch:
++ - patch from upstream bugzilla that causes webkit itself to check for
++ mixed gtk symbols in a plugin before loading it
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 12 Apr 2011 09:21:29 -0300
++
++webkit (1.3.13-3) experimental; urgency=low
++
++ * debian/control:
++ - depend on a libgtk2.0-dev version that provides introspection information
++ (Closes: #621809)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 08 Apr 2011 23:50:32 -0300
++
++webkit (1.3.13-2) experimental; urgency=low
++
++ * debian/patches/01_plugin_path.patch:
++ - obtained from upstream; will allow not disabling flash when used with
++ nspluginwrapper
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 08 Apr 2011 10:12:50 -0300
++
++webkit (1.3.13-1) experimental; urgency=low
++
++ * New upstream release.
++ * debian/patches/01_expose_less_symbols.patch:
++ - remove this patch; deal with the symbols instead
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 29 Mar 2011 11:14:00 -0300
++
++webkit (1.3.12-1) experimental; urgency=low
++
++ * New upstream release
++ * debian/*.symbols:
++ - updated with new symbols
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 15 Mar 2011 00:32:03 -0300
++
++webkit (1.3.11-3) experimental; urgency=low
++
++ * debian/*.symbols:
++ - fix demangled names (Closes: #614770)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 23 Feb 2011 09:25:49 -0300
++
++webkit (1.3.11-2) experimental; urgency=low
++
++ * debian/libwebkit-{1,3}.0-0.symbols:
++ - tag exported WTF symbols as optional, and use their demangled name
++ with the c++ tag; this should fix the FTBFS
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 22 Feb 2011 14:31:14 -0300
++
++webkit (1.3.11-1) experimental; urgency=low
++
++ * New development release
++ * debian/patches/01_expose_less_symbols.patch:
++ - export less symbols, and don't build DRT
++ * debian/control:
++ - updated to reflect changes in naming of packages related to GTK+ 3
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 19 Jan 2011 11:05:31 -0200
++
++webkit (1.3.10-1) experimental; urgency=low
++
++ * New development release
++ * debian/control:
++ - Build-Depend on GTK+3 >= 2.99.1 to avoid problems with the multiple
++ breakages
++ * debian/rules:
++ - adapt for source layout changes
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 13 Jan 2011 10:37:55 -0200
++
++webkit (1.3.9-1) experimental; urgency=low
++
++ * New development release
++ - fixes build with newest GTK+
++ * debian/control:
++ - build-depend on GTK+ >= 2.91.7 for the GTK+3-based version
++ - build-depend on gir1.2-{gtk-2.0,soup-2.4}
++ - rename introspection packages to gir1.2-*
++ - updated Build-Depends on gobject-introspection
++ - tighten dependency of -dev packages on library packages
++ - add missing ${misc:Depends}
++ - update Standards-Version to 3.9.1
++ * debian/rules:
++ - add dh_girepository calls to actually do something to ${gir:Depends}
++ - run dh_makeshlibs targetting the appropriate packages (library ones,
++ not dev)
++ - remove rpath from the installed binaries
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 27 Dec 2010 14:06:08 -0200
++
++webkit (1.3.8-1) experimental; urgency=low
++
++ * New upstream development release
++ * debian/debian/gir1.0-webkit-1.0.install, debian/control,
++ debian/rules, debian/libwebkit-dev.install:
++ - add gir1.0-webkit-1.0 package, and enable introspection support
++ - rename packages to accomodate soname change
++ - add new packages for gtk3-based webkitgtk
++ * debian/control, debian/rules:
++ - enable building geolocation support
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 11 Aug 2010 11:10:28 -0300
++
++webkit (1.1.17-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/copyright:
++ - updated with changes since 1.1.16
++ * debian/libwebkit-1.0-2.symbols:
++ - updated
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 02 Dec 2009 23:13:32 -0200
++
++webkit (1.1.16-3) unstable; urgency=low
++
++ * Fix building on kfresbsd-amd64 (Closes: #554718)
++ - Patch by Petr Salinger <Petr.Salinger@seznam.cz>
++ * Fix tightened dependency
++ * debian/rules:
++ - remove rpath from GtkLauncher and DumpRenderTree
++ * debian/control:
++ - depend on chrpath for change above
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 11 Nov 2009 21:21:12 -0200
++
++webkit (1.1.16-2) unstable; urgency=low
++
++ * debian/control:
++ - tighten libwebkit-dev dependency on the library
++ (Closes: #554014)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 02 Nov 2009 17:07:03 -0200
++
++webkit (1.1.16-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/copyright:
++ - updated with the copyright changes since 1.1.15
++ * debian/libwebkit-1.0-2.symbols:
++ - updated with new symbols
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 29 Oct 2009 19:06:20 -0200
++
++webkit (1.1.15.2-1) unstable; urgency=low
++
++ * New upstream (semi-stable) release
++ * Fix building on IA64 (Closes: #547797)
++ Thanks to Colin Watson <cjwatson@ubuntu.com>
++ * Fix building on alpha (Closes: #548499)
++ * Fix building on amd64 FreeBSD
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 06 Oct 2009 21:17:08 +0100
++
++webkit (1.1.15.1-1) unstable; urgency=low
++
++ * New upstream (semi-stable) release
++ * debian/libwebkit-1.0-2.symbols:
++ - remove revisions from the symbol versions
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 06 Aug 2010 11:19:52 -0300
++
++webkit (1.1.15-1) experimental; urgency=low
++
++ * New upstream release
++ - includes fix for crash that will be fixed in 1.1.15.1
++ * debian/copyright:
++ - updated with changes since 1.1.14
++ * debian/libwebkit-1.0-2.symbols:
++ - updated
++ * debian/control:
++ - force same upstream version for -common
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 21 Sep 2009 21:22:43 -0300
++
++webkit (1.1.14-1) experimental; urgency=low
++
++ * New upstream release
++ * debian/copyright:
++ - updated with changes since 1.1.13
++ * debian/control:
++ - made libwebkit-dev Arch: any (Closes: #539511)
++ * debian/libwebkit-1.0-2:
++ - updated
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 09 Sep 2009 11:32:23 -0300
++
++webkit (1.1.13-1) experimental; urgency=low
++
++ * New upstream release
++ - security fixes are already included in this release
++ (Closes: #538346, #538402)
++ * debian/control:
++ - update Build-Depends on libsoup to match upstream requirements
++ (Closes: #542272)
++ - Bump Build-Depends on libsoup2.4-dev to 2.27.91
++ * debian/copyright:
++ - updated with changes since 1.1.12
++ * debian/libwebkit-1.0-2.symbols:
++ - new symbols
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 24 Aug 2009 21:25:59 -0300
++
++webkit (1.1.12-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/copyright:
++ - updated with changes since 1.1.10
++ * debian/libwebkit-1.0-2.symbols:
++ - adding new symbols
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 28 Jul 2009 21:04:56 +0200
++
++webkit (1.1.10-2) unstable; urgency=low
++
++ * debian/rules:
++ - trying to get the package built on s390, by using -gstabs
++ (Closes: #528524)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Wed, 24 Jun 2009 23:05:07 -0300
++
++webkit (1.1.10-1) unstable; urgency=low
++
++ * debian/copyright:
++ - updated with the changes up to the current release
++ * debian/libwebkit-1.0-2.symbols:
++ - updated with new symbols
++ * debian/control:
++ - Build-Depend on libgail-dev
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 16 Jun 2009 18:52:32 -0300
++
++webkit (1.1.7-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/libwebkit-1.0-2.symbols:
++ - updated with the new symbols in 1.1.7
++ * debian/libwebkit-dev.install, debian/libwebkit-dev.links,
++ debian/rules:
++ - Build, and ship gtk-doc documentation (Closes: #526683)
++ * debian/copyright:
++ - updated.
++
++ -- Gustavo Noronha Silva <kov@debian.org> Fri, 15 May 2009 18:30:58 -0300
++
++webkit (1.1.6-2) unstable; urgency=low
++
++ * Imported two changes from upstream to fix building on AMD64
++ (Closes: #527096)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 12 May 2009 15:00:47 -0300
++
++webkit (1.1.6-1) unstable; urgency=low
++
++ [ Mike Hommey ]
++ * New upstream release.
++
++ [ Gustavo Noronha Silva ]
++ * Imported patch from upstream git mirror to avoid a regression in the
++ webkit_web_frame_load_string method.
++ See https://bugs.webkit.org/show_bug.cgi?id=25466
++ * debian/copyright:
++ - updated with changes since the last release
++ * debian/libwebkit-1.0-2.symbols:
++ - updated
++ * debian/control:
++ - added libenchant-dev to the Build-Depends
++
++ -- Gustavo Noronha Silva <kov@debian.org> Mon, 04 May 2009 21:40:15 -0300
++
++webkit (1.1.5-2) unstable; urgency=low
++
++ * Upload to unstable.
++ * debian/libwebkit-1.0-2.symbols:
++ - removed debian revision from the symbol versions
++ * debian/control:
++ - Put the libwebkit-1.0-2-dbg package in the "debug" section.
++ - Build depend on libgstreamer-plugins-base0.10-dev. (Closes: #525554)
++ * debian/rules:
++ - Bump shlibs to fit symbols file.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 25 Apr 2009 18:42:37 +0200
++
++webkit (1.1.5-1) experimental; urgency=low
++
++ [ Mike Hommey ]
++ * New upstream release:
++ - Filter out all C++ symbols. (Closes: #521569)
++ * debian/control:
++ - Change libwebkit-1.0-common section and priority to fit override.
++ - Bumped Standards-Version to 3.8.1.0. No changes required.
++ * debian/rules:
++ - Patch config.{sub|guess} in autotools/.
++
++ [ Gustavo Noronha Silva ]
++ * debian/copyright:
++ - updated with the copyright changes since last version
++ * debian/libwebkit-1.0-0.symbols:
++ - updated with the new symbols
++ * debian/libwebkit-1.0-common.install:
++ - also install translation files
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 16 Apr 2009 23:20:43 -0300
++
++webkit (1.1.3-3) experimental; urgency=low
++
++ [ Gustavo Noronha Silva ]
++ * debian/control:
++ - make libwebkit-1.0-dev depend on libsoup2.4-dev (>= 2.25.91)
++
++ [ Mike Hommey ]
++ * autotoolsconfig.h.in:
++ - Brown paper bag fix to add missing AC_DEFINEs.
++ * debian/control:
++ - libwebkit-dev doesn't need an outdated conflict with libwebkitgdk-dev.
++ - libwebkit-1.0-2-dbg doesn't need to conflict/replace libwebkit-1.0-1-dbg
++ thanks to the changes in previous release.
++ * debian/rules:
++ - Bump shlibs to fit symbols file.
++ * debian/copyright:
++ - Updated for a small discrepancy I spotted.
++ - Added Gustavo's copyright on debian/* files and updated mine.
++
++ -- Mike Hommey <glandium@debian.org> Fri, 27 Mar 2009 21:20:48 +0100
++
++webkit (1.1.3-2) experimental; urgency=low
++
++ [ Gustavo Noronha Silva ]
++ * debian/control, debian/libwebkit-1.0-2.install:
++ - move the GtkLauncher and DumpRenderTree binaries to a directory named
++ after the soname of the library, so that different binary incompatible
++ versions of the library are installable in parallel (Closes: #520981)
++ * debian/libwebkit-1.0-2.symbols:
++ - removed debian revision from the symbol versions
++
++ [ Mike Hommey ]
++ * JavaScriptCore/jit/JITStubs.h:
++ - Use the first definition of RETURN_PAIR on x86-64.
++ * JavaScriptCore/assembler/MacroAssemblerX86_64.h,
++ JavaScriptCore/GNUmakefile.am, GNUmakefile.in, configure.ac, configure:
++ - Enable JIT on x86-64.
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 26 Mar 2009 17:46:30 -0300
++
++webkit (1.1.3-1) experimental; urgency=low
++
++ [ Gustavo Noronha Silva ]
++ * New upstream release
++ - correctly scrolls with space bar (Closes: #519883)
++ * debian/copyright:
++ - updated with changes since last release
++ * debian/libwebkit-1.0-2.symbols:
++ - added new symbols
++
++ [ Mike Hommey ]
++ * autotools/symbols.filter, debian/libwebkit-1.0-2.symbols:
++ - Hide JIT implementation specific symbols. (Closes: #519924, #520006)
++
++ -- Gustavo Noronha Silva <kov@debian.org> Tue, 17 Mar 2009 15:05:40 -0300
++
++webkit (1.1.1-1) experimental; urgency=low
++
++ * New 1.1.1 upstream release
++ * debian/rules, debian/control, debian/*:
++ - soversion was bumped, so rename packages accordingly
++ * debian/control:
++ - curl is not used anymore, so drop build-dependecy and replace it with
++ libsoup2.4 >= 2.25.91
++ * debian/libwebkit-1.0-2.symbols:
++ - updated symbols file; bumped required version of all symbols to 1.1.1,
++ since we had a soversion bump
++ * debian/copyright:
++ - updated with changes from last release we shipped, and updated
++ download location
++ * debian/control, debian/libwebkit-1.0-common.install:
++ - new package to distribute data files, such as the Web Inspector files
++ - libwebkit-1.0-2 now depends on libwebkit-1.0-common
++ * debian/control:
++ - add myself as an Uploader
++
++ -- Gustavo Noronha Silva <kov@debian.org> Thu, 05 Mar 2009 16:28:43 -0300
++
++webkit (1.0.2~pre.svn37878-1) experimental; urgency=low
++
++ * Upstream 1.0.2 pre-release, taken from svn revision 37878.
++ * debian/rules:
++ - Use configure instead of autogen.sh, now configure is shipped.
++ - Don't remove automake/autoconf generated files.
++ - Bump shlibs because of some new symbols.
++ - Don't need --enable-svg-experimental anymore.
++ - Feed configure with --host and --build.
++ - Use config.guess and config.sub from autotools-dev.
++ * debian/control: Don't build depend on autoconf/automake/libtool, but
++ autotools-dev, instead.
++ * GNUmakefile.am, GNUmakefile.in: Add missing dash in version script option.
++ * debian/libwebkit-1.0-1.symbols: Add new symbols.
++ * WebCore/page/gtk/AXObjectCacheAtk.cpp: printfs being removed upstream,
++ we don't need to #include <stdio.h> anymore.
++ * configure.ac, configure, GNUmakefile.am, GNUmakefile.in: Properly check
++ and link against libpng. bz#21884.
++ * configure.ac, configure: Properly check and link against libpangoft2.
++ bz#21885.
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 25 Oct 2008 15:19:56 +0200
++
++webkit (1.0.1-4) unstable; urgency=high
++
++ * WebCore/dom/Document.*, WebCore/loader/DocLoader.*: Avoid DoS via
++ crafted CSS import statements. Fixes: CVE-2008-3632. Closes: #499771.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 27 Sep 2008 08:57:48 +0200
++
++webkit (1.0.1-3) unstable; urgency=low
++
++ * WebCore/platform/graphics/gtk/FontCacheGtk.cpp,
++ WebCore/platform/graphics/gtk/FontGtk.cpp,
++ WebCore/platform/graphics/gtk/FontPlatformData.h,
++ WebCore/platform/graphics/gtk/FontPlatformDataGtk.cpp,
++ WebCore/platform/graphics/gtk/SimpleFontDataGtk.cpp: cherry-picked change
++ from SVN revision 36309 to fix various font selection problems.
++ Closes: #464477.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 20 Sep 2008 12:02:58 +0200
++
++webkit (1.0.1-2) unstable; urgency=low
++
++ * symbols.filter: As a workaround for #490173, hide all C++ mangled symbols.
++ This will be enough for now, while fixing FTBFS on ARM.
++ * debian/rules: Build with -Wl,--no-relax on alpha, to work around a
++ binutils bug causing FTBFS.
++
++ -- Mike Hommey <glandium@debian.org> Thu, 10 Jul 2008 21:10:27 +0200
++
++webkit (1.0.1-1) unstable; urgency=low
++
++ * New upstream release. Closes: #489385.
++ * debian/copyright:
++ - Updated to fit additions/removals of files upstream.
++ - Updated where the source was gotten.
++ - Fixed typos for Collabora. Closes: #484661.
++ * JavaScriptCore/wtf/FastMalloc.cpp, JavaScriptCore/wtf/ListHashSet.h,
++ JavaScriptCore/wtf/Platform.h, JavaScriptCore/wtf/Vector.h,
++ WebCore/platform/text/AtomicString.cpp,
++ WebCore/platform/text/StringHash.h: Fixed some alignment problems on sparc
++ (and some that might occur on arm, too). Closes: #487745. Some compiler
++ warnings about alignment remain, but I don't know if they are a real
++ problem yet.
++ * debian/control:
++ - Added build dependency on libxt-dev.
++ - Relax libwebkit-dev dependency on libwebkit-1.0-1.
++ - Bumped Standards-Version to 3.8.0.1. No changes.
++ * WebCore/page/gtk/AXObjectCacheAtk.cpp: Include stdio.h to avoid FTBFS
++ because of undefined printf.
++ * GNUmakefile.am, symbols.filter: Filter out all std::* symbols exported
++ because of stl headers.
++ * debian/libwebkit-1.0-1.symbols: Add symbols file.
++ * debian/rules: Bump shlibs because of some new symbols.
++
++ -- Mike Hommey <glandium@debian.org> Sun, 06 Jul 2008 15:09:55 +0200
++
++webkit (0~svn32442-1) unstable; urgency=low
++
++ [ Mike Hommey ]
++ * New upstream snapshot
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++ * debian/control: Add libpango1.0-dev to build dependencies and tighten
++ libgtk2.0-dev build dependency. Closes: #477493.
++
++ [ Luca Bruno ]
++ * debian/libwebkit-1.0-1.install, debian/rules: Install GtkLauncher
++ and DumpRenderTree in /usr/lib/webkit-1.0/libexec. Closes: #476514.
++
++ -- Mike Hommey <glandium@debian.org> Wed, 23 Apr 2008 22:20:25 +0200
++
++webkit (0~svn31841-1) unstable; urgency=low
++
++ * New upstream snapshot
++ + Includes proper Requires in .pc file. Closes: #450949.
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++ * debian/control, debian/rules: Don't build QtWebKit, it will be built from
++ Qt sources.
++ * debian/libqtwebkit*: Removed.
++ * debian/rules: Replaced make calls with $(MAKE).
++ * debian/control, debian/rules: Don't use qmake anymore, but use autotools
++ instead.
++ * debian/libwebkitgtk-dev.install: Remove the .prl file that was generated
++ by qmake.
++ * WebCore/WebCore.pro, WebKit.pro: Revert previous changes, as we don't use
++ qmake anymore.
++ * JavaScriptCore/wtf/ASCIICType.h: Revert what were warning fixes, to avoid
++ diverging too much from upstream.
++ * debian/rules: Clean-up autotools generated files in the clean target.
++ * debian/control, debian/rules, debian/libwebkit*: Rename packages to fit
++ new library SONAME.
++ * debian/control: libwebkit-dev doesn't need to depend on libglib2.0-dev.
++ * debian/libwebkit-1.0-1.install, debian/rules: Install GtkLauncher and
++ DumpRenderTree in /usr/lib/webkit-1.0, and don't rename DumpRenderTree, as
++ Qt homonym lie elsewhere.
++ * debian/libwebkit-1.0-1.preinst, debian/libwebkit-1.0-1.postrm: Don't
++ divert anything, since we don't clash with older files anymore.
++ * debian/rules: Ugly hack to add -Wl,--as-needed without it getting reordered
++ by libtool.
++ * WebKitTools/GNUmakefile.am: Don't build GtkLauncher and DumpRenderTree
++ with rpath.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 12 Apr 2008 21:40:00 +0200
++
++webkit (0~svn27674-4) unstable; urgency=low
++
++ * debian/rules: Revert change from 0~svn27674-3, which was obviously not
++ enough.
++ * WebKit.pro: Don't build testkjs, that provokes the s390 FTBFSes ; we don't
++ install it anyways. Closes: #466848.
++ * JavaScriptCore/kjs/interpreter.cpp, JavaScriptCore/wtf/ASCIICType.h,
++ WebCore/dom/Position.cpp, WebCore/editing/Selection.cpp,
++ WebCore/editing/SelectionController.cpp,
++ WebCore/editing/VisiblePosition.cpp,
++ WebCore/ksvg2/svg/SVGFontFaceElement.cpp,
++ WebCore/loader/FTPDirectoryParser.cpp,
++ WebCore/loader/icon/IconDatabase.cpp,
++ WebCore/platform/TextCodecLatin1.cpp,
++ WebCore/platform/TextCodecUserDefined.cpp,
++ WebCore/platform/TextStream.cpp,
++ WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp: Fix FTBFS with
++ gcc 4.3 due to missing includes. Closes: #455125.
++
++ -- Mike Hommey <glandium@debian.org> Thu, 21 Feb 2008 23:01:12 +0100
++
++webkit (0~svn27674-3) unstable; urgency=low
++
++ * debian/rules: Work around #466613 (FTBFS on s390) by building a little bit
++ less optimized (-O1). Thanks to Josselin Mouette.
++ * debian/control:
++ - Add Vcs-Browser and Vcs-Git fields, and turn Homepage indications in
++ descriptions into a control field.
++ - Bumped Standards-Version to 3.7.3.0. No changes.
++
++ -- Mike Hommey <glandium@debian.org> Wed, 20 Feb 2008 21:49:33 +0100
++
++webkit (0~svn29752-1) experimental; urgency=low
++
++ * New upstream snapshot
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++ * JavaScriptCore/wtf/TCSpinLock.h: Revert our work-around, now that a
++ proper patch has been applied upstream.
++ * WebCore/WebCore.pro: Don't use Qt version as SO version for QtWebKit.
++ * debian/control, debian/rules, debian/lib*0d.install: Bump SO version to
++ 1d because of ABI incompatible changes, and change package names
++ accordingly.
++ * debian/rules: Don't remove -lqtwebico from QtWebKit.pc, since it's not
++ here anymore.
++ * debian/rules, debian/lib*1d.install:
++ - Install new Gtk port's DumpRenderTree tool.
++ - Rename both port's DumpRenderTree tools to <port name>DumpRenderTree
++ to avoid conflicting names.
++ * debian/lib*1d.postrm, debian/lib*1d.preinst: Avoid conflicting files with
++ lib*0d packages (*Launcher programs) but allow to install both new and old
++ libraries by using diversions.
++
++ -- Mike Hommey <glandium@debian.org> Fri, 25 Jan 2008 00:31:51 +0100
++
++webkit (0~svn27674-2) unstable; urgency=low
++
++ * JavaScriptCore/JavaScriptCore.pri: cherry-picked change from revision
++ 28692 to fix FTBFS due to lack of -lpthread on the linker command line.
++ * debian/control: Add dependencies on necessary development packages
++ (essentially for header files) to our own development packages.
++
++ -- Mike Hommey <glandium@debian.org> Sat, 15 Dec 2007 11:04:47 +0100
++
++webkit (0~svn27674-1) unstable; urgency=low
++
++ * New upstream snapshot
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++ * debian/control: Make libwebkitgtk-dev conflict with the old
++ libwebkitgdk-dev. Closes: #449001.
++ * debian/rules: Bump qtwebkit shlibs.
++ * WebKit/qt/Api/qwebpage.cpp: cherry-picked change from revision 27904 to
++ fix crashes when an event is caught outside of the webkit frame in Qt.
++ This occurred, for example, when hovering over the QtLauncher toolbar.
++
++ -- Mike Hommey <glandium@debian.org> Mon, 19 Nov 2007 23:10:38 +0100
++
++webkit (0~svn26044-1) unstable; urgency=low
++
++ * New upstream snapshot
++ * debian/rules:
++ - Add support for DEB_BUILD_OPTIONS=noopt.
++ - Bump qtwebkit shlibs, and remove versioning on the webkitgtk ones,
++ as the library is new.
++ * debian/copyright: Updated to fit additions/removals of files upstream.
++ * debian/control, debian/rules, debian/libwebkitgtk-dev.install,
++ debian/libwebkitgtk0d.install: Replace occurences of gdk by gtk, and
++ rename libwebkitgdk*, to fit upstream rename of the Gtk port.
++ Closes: #445060.
++
++ -- Mike Hommey <glandium@debian.org> Fri, 05 Oct 2007 00:05:06 +0200
++
++webkit (0~svn25144-2) unstable; urgency=low
++
++ * JavaScriptCore/wtf/Platform.h:
++ - Also test if __arm__ is defined, which should fix the FTBFS on arm.
++ - Use better defines for our various arm ports.
++ * JavaScriptCore/kjs/ustring.h, WebCore/platform/DeprecatedString.h: Use
++ these new defines. Thanks Riku Voipio.
++ * debian/control: Build depend on Qt >= 4.3. Thanks Hubert Figuiere.
++ Closes: #439672.
++ * debian/rules: Explicitely use qmake-qt4 instead of qmake to avoid build
++ failures when qt3-dev-tools is installed. Thanks Michael Biebl.
++ Closes: #441007.
++
++ -- Mike Hommey <glandium@debian.org> Thu, 06 Sep 2007 08:12:21 +0200
++
++webkit (0~svn25144-1) unstable; urgency=low
++
++ * New upstream snapshot
++ * debian/copyright: Updated so as to fit what we actually remove (there were
++ missing removals previously, which were not appropriate for the most
++ anyways), and to fit the additions/removals of files upstream.
++ * JavaScriptCore/wtf/TCSpinLock.h: Work around an FTBFS on PPC due to a
++ probable regression in gcc (#438415).
++ * debian/rules:
++ + Change the place we install QtLauncher from, since it moved.
++ + Set binary packages' shlibs correctly.
++ + Use $(CURDIR) variable more safely to avoid problem with build
++ directories with spaces.
++ * WebKitQt/Plugins/Plugins.pro: Build plugins with hidden symbols, so that
++ they don't expose unwanted symbols.
++
++ -- Mike Hommey <glandium@debian.org> Sun, 19 Aug 2007 15:54:12 +0200
++
++webkit (0~svn24735-1) unstable; urgency=low
++
++ * Initial release. (Closes: #428855)
++
++ -- Mike Hommey <glandium@debian.org> Wed, 15 Aug 2007 14:19:46 +0200
++
--- /dev/null
--- /dev/null
++8
--- /dev/null
--- /dev/null
++Source: webkit2gtk
++Priority: optional
++Section: web
++Maintainer: Debian WebKit Maintainers <pkg-webkit-maintainers@lists.alioth.debian.org>
++Uploaders: Gustavo Noronha Silva <kov@debian.org>,
++ Emilio Pozuelo Monfort <pochu@debian.org>,
++ Alberto Garcia <berto@igalia.com>
++Build-Depends: gawk,
++ cmake,
++ debhelper (>= 9),
++ libglib2.0-dev (>= 2.36.0),
++ libgtk2.0-dev (>= 2.24.10),
++ gir1.2-gtk-2.0,
++ libgtk-3-dev (>= 3.10.0),
++ gir1.2-gtk-3.0 (>= 3.10.0),
++ libpango1.0-dev (>= 1.30.0),
++ libharfbuzz-dev (>= 0.9.18),
++ libcairo2-dev (>= 1.10),
++ libfontconfig1-dev (>= 2.5),
++ libfreetype6-dev,
++ libicu-dev,
++ libxslt1-dev (>= 1.1.7),
++ libxml2-dev (>= 2.6),
++ libsoup2.4-dev (>= 2.42.0),
++ gir1.2-soup-2.4,
++ libsqlite3-dev (>= 3.0),
++ libgudev-1.0-dev [linux-any],
++ gperf,
++ bison,
++ flex,
++ ruby,
++ slimit,
++ libjpeg-dev,
++ libpng-dev,
++ libwebp-dev,
++ libxt-dev,
++ libgstreamer1.0-dev (>= 1.0.3),
++ libgstreamer-plugins-base1.0-dev (>= 1.0.3),
++ libenchant-dev (>= 0.22),
++ gtk-doc-tools,
++ geoclue-2.0,
++ libsecret-1-dev,
++ gobject-introspection (>= 1.32.0),
++ libgirepository1.0-dev (>= 0.9.12-4),
++ libgl1-mesa-dev
++Build-Conflicts: gir-repository-dev
++Standards-Version: 3.9.6
++Homepage: http://webkitgtk.org/
++Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-webkit/webkit.git
++Vcs-Git: git://anonscm.debian.org/pkg-webkit/webkit.git
++
++Package: libjavascriptcoregtk-4.0-18
++Section: libs
++Architecture: any
++Multi-Arch: same
++Pre-Depends: ${misc:Pre-Depends}
++Depends: ${shlibs:Depends},
++ ${misc:Depends}
++Description: JavaScript engine library from WebKitGTK+
++ JavaScriptCore is the JavaScript engine used in WebKit. It consists
++ of the following building blocks: lexer, parser, start-up interpreter
++ (LLInt), baseline JIT, a low-latency optimizing JIT (DFG), and a
++ high-throughput optimizing JIT (FTL).
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the shared libraries.
++
++Package: libjavascriptcoregtk-4.0-dev
++Section: libdevel
++Priority: extra
++Architecture: any
++Multi-Arch: same
++Depends: libjavascriptcoregtk-4.0-18 (= ${binary:Version}),
++ gir1.2-javascriptcoregtk-4.0 (= ${binary:Version}),
++ ${misc:Depends}
++Description: JavaScript engine library from WebKitGTK+ - development files
++ JavaScriptCore is the JavaScript engine used in WebKit. It consists
++ of the following building blocks: lexer, parser, start-up interpreter
++ (LLInt), baseline JIT, a low-latency optimizing JIT (DFG), and a
++ high-throughput optimizing JIT (FTL).
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the development files.
++
++Package: libjavascriptcoregtk-4.0-18-dbg
++Section: debug
++Priority: extra
++Architecture: any
++Multi-Arch: same
++Depends: libjavascriptcoregtk-4.0-18 (= ${binary:Version}),
++ ${misc:Depends}
++Description: JavaScript engine library from WebKitGTK+ - debugging symbols
++ JavaScriptCore is the JavaScript engine used in WebKit. It consists
++ of the following building blocks: lexer, parser, start-up interpreter
++ (LLInt), baseline JIT, a low-latency optimizing JIT (DFG), and a
++ high-throughput optimizing JIT (FTL).
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the debugging symbols.
++
++Package: libjavascriptcoregtk-4.0-bin
++Section: interpreters
++Architecture: any
++Pre-Depends: ${misc:Pre-Depends}
++Depends: ${shlibs:Depends},
++ ${misc:Depends}
++Conflicts: libjavascriptcoregtk-3.0-bin
++Description: JavaScript engine library from WebKitGTK+ - command-line interpreter
++ JavaScriptCore is the JavaScript engine used in WebKit. It consists
++ of the following building blocks: lexer, parser, start-up interpreter
++ (LLInt), baseline JIT, a low-latency optimizing JIT (DFG), and a
++ high-throughput optimizing JIT (FTL).
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package provides jsc, a command-line JavaScript interpreter.
++
++Package: gir1.2-javascriptcoregtk-4.0
++Section: introspection
++Architecture: any
++Multi-Arch: same
++Depends: ${gir:Depends},
++ ${misc:Depends}
++Conflicts: gobject-introspection-repository
++Description: JavaScript engine library from WebKitGTK+ - GObject introspection data
++ JavaScriptCore is the JavaScript engine used in WebKit. It consists
++ of the following building blocks: lexer, parser, start-up interpreter
++ (LLInt), baseline JIT, a low-latency optimizing JIT (DFG), and a
++ high-throughput optimizing JIT (FTL).
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the introspection data, which can be used by
++ packages using the GIRepository format to generate dynamic bindings.
++
++Package: libwebkit2gtk-4.0-37
++Section: libs
++Architecture: any
++Multi-Arch: same
++Pre-Depends: ${misc:Pre-Depends}
++Depends: libjavascriptcoregtk-4.0-18 (= ${binary:Version}),
++ ${shlibs:Depends},
++ ${misc:Depends}
++Recommends: gstreamer1.0-plugins-base,
++ gstreamer1.0-plugins-good,
++ ${gst:Recommends}
++Description: Web content engine library for GTK+
++ WebKit is a web content engine, derived from KHTML and KJS from KDE, and
++ used primarily in Apple's Safari browser. It is made to be embedded in
++ other applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It also
++ supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript and more.
++ .
++ WebKit2 is an API layer for WebKit designed from the ground up to
++ support a split process model, where the web content lives in a
++ separate process from the application UI.
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This is the library for embedding in GTK+ applications.
++
++Package: libwebkit2gtk-4.0-dev
++Section: libdevel
++Priority: extra
++Architecture: any
++Multi-Arch: same
++Depends: libwebkit2gtk-4.0-37 (= ${binary:Version}),
++ gir1.2-webkit2-4.0 (= ${binary:Version}),
++ libgtk-3-dev,
++ libsoup2.4-dev (>= 2.40),
++ libjavascriptcoregtk-4.0-dev (= ${binary:Version}),
++ ${misc:Depends}
++Description: Web content engine library for GTK+ - development files
++ WebKit is a web content engine, derived from KHTML and KJS from KDE, and
++ used primarily in Apple's Safari browser. It is made to be embedded in
++ other applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It also
++ supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript and more.
++ .
++ WebKit2 is an API layer for WebKit designed from the ground up to
++ support a split process model, where the web content lives in a
++ separate process from the application UI.
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the development files.
++
++Package: libwebkit2gtk-4.0-doc
++Section: doc
++Priority: extra
++Architecture: all
++Depends: ${misc:Depends}
++Suggests: devhelp
++Description: Web content engine library for GTK+ - documentation
++ WebKit is a web content engine, derived from KHTML and KJS from KDE, and
++ used primarily in Apple's Safari browser. It is made to be embedded in
++ other applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It also
++ supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript and more.
++ .
++ WebKit2 is an API layer for WebKit designed from the ground up to
++ support a split process model, where the web content lives in a
++ separate process from the application UI.
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains the documentation.
++
++Package: libwebkit2gtk-4.0-37-dbg
++Section: debug
++Priority: extra
++Architecture: any
++Multi-Arch: same
++Depends: libwebkit2gtk-4.0-37 (= ${binary:Version}),
++ libjavascriptcoregtk-4.0-18-dbg (= ${binary:Version}),
++ ${misc:Depends}
++Description: Web content engine library for GTK+ - debugging symbols
++ WebKit is a web content engine, derived from KHTML and KJS from KDE, and
++ used primarily in Apple's Safari browser. It is made to be embedded in
++ other applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It also
++ supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript and more.
++ .
++ WebKit2 is an API layer for WebKit designed from the ground up to
++ support a split process model, where the web content lives in a
++ separate process from the application UI.
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package provides the debugging symbols.
++
++Package: gir1.2-webkit2-4.0
++Section: introspection
++Architecture: any
++Multi-Arch: same
++Depends: gir1.2-javascriptcoregtk-4.0 (= ${binary:Version}),
++ ${gir:Depends},
++ ${misc:Depends}
++Description: Web content engine library for GTK+ - GObject introspection data
++ WebKit is a web content engine, derived from KHTML and KJS from KDE, and
++ used primarily in Apple's Safari browser. It is made to be embedded in
++ other applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It also
++ supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript and more.
++ .
++ WebKit2 is an API layer for WebKit designed from the ground up to
++ support a split process model, where the web content lives in a
++ separate process from the application UI.
++ .
++ This build comes from the GTK+ port of WebKit (API version 4.0).
++ .
++ This package contains introspection data, which can be used by
++ packages using the GIRepository format to generate dynamic bindings.
--- /dev/null
--- /dev/null
++Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Contact: https://lists.webkit.org/mailman/listinfo/webkit-gtk
++Source: http://webkitgtk.org/releases/
++Comment:
++ The source tarball comes without the following non-free files:
++ .
++ Source/WebInspectorUI/Tools/PrettyPrinting/populate/jquery.min.js
++ Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon
++
++Files: debian/*
++Copyright: © 2007-2009 Mike Hommey <glandium@debian.org>
++ © 2009 Gustavo Noronha Silva <kov@debian.org>
++ © 2014 Alberto Garcia <berto@igalia.com>
++License: LGPL-2+
++
++Files: debian/jquery-1.9.1.js
++Copyright: © 2005, 2012 jQuery Foundation, Inc. and other contributors
++License: Expat
++Comment:
++ Uncompressed version of jquery.min.js, downloaded from
++ http://code.jquery.com/jquery-1.9.1.js
++
++Files: *
++Copyright: © 2002-2014 Apple Inc. and others
++License: BSD-2-clause
++Comment:
++ The default license of WebKit is BSD 2-clause, available in
++ Source/WebKit/LICENSE. The exceptions are listed in the sections
++ that follow.
++
++Files: Source/ThirdParty/gtest/scripts/upload.py
++Copyright: © 2007 Google Inc.
++License: Apache-2.0
++
++Files: Source/JavaScriptCore/runtime/WeakRandom.h
++Copyright: © 2009 Apple Inc
++ © 2009 Ian C. Bullard.
++License: BSD-2-clause and Expat
++
++Files: Source/JavaScriptCore/API/JSRetainPtr.h
++ Source/JavaScriptCore/API/JSStringRefBSTR.cpp
++ Source/JavaScriptCore/API/JSStringRefBSTR.h
++ Source/JavaScriptCore/bindings/*
++ Source/JavaScriptCore/bytecode/CodeBlock.cpp
++ Source/JavaScriptCore/bytecode/CodeBlock.h
++ Source/JavaScriptCore/bytecode/EvalCodeCache.h
++ Source/JavaScriptCore/bytecode/Instruction.h
++ Source/JavaScriptCore/bytecode/JumpTable.cpp
++ Source/JavaScriptCore/bytecode/JumpTable.h
++ Source/JavaScriptCore/bytecode/Opcode.cpp
++ Source/JavaScriptCore/bytecode/Opcode.h
++ Source/JavaScriptCore/bytecode/SamplingTool.cpp
++ Source/JavaScriptCore/bytecode/SamplingTool.h
++ Source/JavaScriptCore/bytecode/SpeculatedType.cpp
++ Source/JavaScriptCore/bytecode/SpeculatedType.h
++ Source/JavaScriptCore/bytecode/ValueProfile.h
++ Source/JavaScriptCore/bytecompiler/*
++ Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp
++ Source/JavaScriptCore/debugger/DebuggerCallFrame.h
++ Source/JavaScriptCore/ftl/FTLUnwindInfo.cpp
++ Source/JavaScriptCore/heap/GCActivityCallback.cpp
++ Source/JavaScriptCore/heap/GCActivityCallback.h
++ Source/JavaScriptCore/inspector/ConsoleMessage.cpp
++ Source/JavaScriptCore/inspector/ConsoleMessage.h
++ Source/JavaScriptCore/inspector/InjectedScript.cpp
++ Source/JavaScriptCore/inspector/InjectedScript.h
++ Source/JavaScriptCore/inspector/InjectedScriptBase.cpp
++ Source/JavaScriptCore/inspector/InjectedScriptBase.h
++ Source/JavaScriptCore/inspector/InjectedScriptManager.cpp
++ Source/JavaScriptCore/inspector/InjectedScriptManager.h
++ Source/JavaScriptCore/inspector/InjectedScriptModule.cpp
++ Source/JavaScriptCore/inspector/InjectedScriptModule.h
++ Source/JavaScriptCore/inspector/InspectorValues.cpp
++ Source/JavaScriptCore/inspector/InspectorValues.h
++ Source/JavaScriptCore/inspector/ScriptArguments.cpp
++ Source/JavaScriptCore/inspector/ScriptArguments.h
++ Source/JavaScriptCore/inspector/ScriptBreakpoint.h
++ Source/JavaScriptCore/inspector/ScriptCallFrame.cpp
++ Source/JavaScriptCore/inspector/ScriptCallFrame.h
++ Source/JavaScriptCore/inspector/ScriptCallStack.cpp
++ Source/JavaScriptCore/inspector/ScriptCallStack.h
++ Source/JavaScriptCore/inspector/ScriptCallStackFactory.cpp
++ Source/JavaScriptCore/inspector/ScriptCallStackFactory.h
++ Source/JavaScriptCore/inspector/ScriptDebugListener.h
++ Source/JavaScriptCore/inspector/ScriptDebugServer.cpp
++ Source/JavaScriptCore/inspector/ScriptDebugServer.h
++ Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp
++ Source/JavaScriptCore/inspector/agents/InspectorAgent.h
++ Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp
++ Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h
++ Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp
++ Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
++ Source/JavaScriptCore/inspector/scripts/xxd.pl
++ Source/JavaScriptCore/interpreter/Interpreter.cpp
++ Source/JavaScriptCore/interpreter/Interpreter.h
++ Source/JavaScriptCore/interpreter/JSStack.cpp
++ Source/JavaScriptCore/interpreter/JSStack.h
++ Source/JavaScriptCore/interpreter/Register.h
++ Source/JavaScriptCore/jit/CompactJITCodeMap.h
++ Source/JavaScriptCore/jit/JITStubs.cpp
++ Source/JavaScriptCore/jit/JITStubs.h
++ Source/JavaScriptCore/jit/JITStubsARM.h
++ Source/JavaScriptCore/jit/JITStubsARMv7.h
++ Source/JavaScriptCore/jit/JITStubsX86.h
++ Source/JavaScriptCore/jit/JITStubsX86_64.h
++ Source/JavaScriptCore/parser/SourceCode.h
++ Source/JavaScriptCore/parser/SourceProvider.h
++ Source/JavaScriptCore/profiler/LegacyProfiler.cpp
++ Source/JavaScriptCore/profiler/LegacyProfiler.h
++ Source/JavaScriptCore/profiler/ProfileNode.cpp
++ Source/JavaScriptCore/profiler/ProfileNode.h
++ Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py
++ Source/JavaScriptCore/runtime/CallData.h
++ Source/JavaScriptCore/runtime/ConstructData.h
++ Source/JavaScriptCore/runtime/ExceptionHelpers.cpp
++ Source/JavaScriptCore/runtime/ExceptionHelpers.h
++ Source/JavaScriptCore/runtime/InitializeThreading.cpp
++ Source/JavaScriptCore/runtime/InitializeThreading.h
++ Source/JavaScriptCore/runtime/JSEnvironmentRecord.cpp
++ Source/JavaScriptCore/runtime/JSEnvironmentRecord.h
++ Source/JavaScriptCore/runtime/JSGlobalObject.cpp
++ Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp
++ Source/JavaScriptCore/runtime/JSLexicalEnvironment.h
++ Source/JavaScriptCore/runtime/JSNotAnObject.cpp
++ Source/JavaScriptCore/runtime/JSNotAnObject.h
++ Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp
++ Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h
++ Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp
++ Source/JavaScriptCore/runtime/JSSymbolTableObject.h
++ Source/JavaScriptCore/runtime/SamplingCounter.cpp
++ Source/JavaScriptCore/runtime/SamplingCounter.h
++ Source/JavaScriptCore/runtime/SymbolTable.cpp
++ Source/JavaScriptCore/runtime/SymbolTable.h
++ Source/JavaScriptCore/runtime/TypeProfilerLog.cpp
++ Source/JavaScriptCore/runtime/TypeProfilerLog.h
++ Source/JavaScriptCore/runtime/VM.cpp
++ Source/JavaScriptCore/runtime/VM.h
++ Source/ThirdParty/ANGLE/*
++ Source/ThirdParty/gtest/*
++ Source/ThirdParty/gtest/codegear/*
++ Source/ThirdParty/gtest/include/gtest/*
++ Source/ThirdParty/gtest/include/gtest/internal/*
++ Source/ThirdParty/gtest/samples/*
++ Source/ThirdParty/gtest/scripts/*
++ Source/ThirdParty/gtest/src/*
++ Source/ThirdParty/gtest/test/*
++ Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/*
++ Source/ThirdParty/gtest/xcode/Scripts/*
++ Source/WTF/wtf/ASCIICType.h
++ Source/WTF/wtf/AVLTree.h
++ Source/WTF/wtf/AutodrainedPool.h
++ Source/WTF/wtf/BoundsCheckedPointer.h
++ Source/WTF/wtf/ByteOrder.h
++ Source/WTF/wtf/CurrentTime.cpp
++ Source/WTF/wtf/CurrentTime.h
++ Source/WTF/wtf/Deque.h
++ Source/WTF/wtf/DisallowCType.h
++ Source/WTF/wtf/FastMalloc.cpp
++ Source/WTF/wtf/Locker.h
++ Source/WTF/wtf/MD5.cpp
++ Source/WTF/wtf/MD5.h
++ Source/WTF/wtf/MainThread.cpp
++ Source/WTF/wtf/MainThread.h
++ Source/WTF/wtf/MediaTime.cpp
++ Source/WTF/wtf/MediaTime.h
++ Source/WTF/wtf/MessageQueue.h
++ Source/WTF/wtf/MetaAllocator.cpp
++ Source/WTF/wtf/MetaAllocator.h
++ Source/WTF/wtf/MetaAllocatorHandle.h
++ Source/WTF/wtf/RedBlackTree.h
++ Source/WTF/wtf/RunLoopTimer.h
++ Source/WTF/wtf/RunLoopTimerCF.cpp
++ Source/WTF/wtf/SHA1.cpp
++ Source/WTF/wtf/SHA1.h
++ Source/WTF/wtf/SaturatedArithmetic.h
++ Source/WTF/wtf/SchedulePair.h
++ Source/WTF/wtf/SchedulePairCF.cpp
++ Source/WTF/wtf/SegmentedVector.h
++ Source/WTF/wtf/SizeLimits.cpp
++ Source/WTF/wtf/StreamBuffer.h
++ Source/WTF/wtf/TCPackedCache.h
++ Source/WTF/wtf/TCPageMap.h
++ Source/WTF/wtf/TCSpinLock.h
++ Source/WTF/wtf/TCSystemAlloc.cpp
++ Source/WTF/wtf/TCSystemAlloc.h
++ Source/WTF/wtf/ThreadFunctionInvocation.h
++ Source/WTF/wtf/ThreadIdentifierDataPthreads.cpp
++ Source/WTF/wtf/ThreadIdentifierDataPthreads.h
++ Source/WTF/wtf/ThreadSpecific.h
++ Source/WTF/wtf/ThreadingPrimitives.h
++ Source/WTF/wtf/ThreadingPthreads.cpp
++ Source/WTF/wtf/ThreadingWin.cpp
++ Source/WTF/wtf/dtoa/*
++ Source/WTF/wtf/gtk/MainThreadGtk.cpp
++ Source/WTF/wtf/text/AtomicStringHash.h
++ Source/WTF/wtf/text/StringBuffer.h
++ Source/WTF/wtf/unicode/Collator.h
++ Source/WTF/wtf/unicode/CollatorDefault.cpp
++ Source/WTF/wtf/unicode/icu/*
++ Source/WebCore/Modules/indexeddb/IDBCallbacks.h
++ Source/WebCore/Modules/indexeddb/IDBDatabaseException.cpp
++ Source/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h
++ Source/WebCore/Modules/indexeddb/IDBEventDispatcher.cpp
++ Source/WebCore/Modules/indexeddb/IDBEventDispatcher.h
++ Source/WebCore/Modules/indexeddb/IDBFactory.cpp
++ Source/WebCore/Modules/indexeddb/IDBFactory.h
++ Source/WebCore/Modules/indexeddb/IDBFactoryBackendInterface.cpp
++ Source/WebCore/Modules/indexeddb/IDBFactoryBackendInterface.h
++ Source/WebCore/Modules/indexeddb/IDBIndexMetadata.h
++ Source/WebCore/Modules/indexeddb/IDBObjectStoreMetadata.h
++ Source/WebCore/Modules/indexeddb/IDBRecordIdentifier.h
++ Source/WebCore/Modules/indexeddb/IDBRequest.cpp
++ Source/WebCore/Modules/indexeddb/IDBRequest.h
++ Source/WebCore/Modules/mediasource/*
++ Source/WebCore/Modules/mediastream/DOMURLMediaStream.cpp
++ Source/WebCore/Modules/mediastream/DOMURLMediaStream.h
++ Source/WebCore/Modules/mediastream/MediaConstraintsImpl.cpp
++ Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h
++ Source/WebCore/Modules/mediastream/RTCConfiguration.h
++ Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp
++ Source/WebCore/Modules/mediastream/RTCIceCandidate.h
++ Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp
++ Source/WebCore/Modules/mediastream/RTCPeerConnection.h
++ Source/WebCore/Modules/mediastream/RTCSessionDescription.cpp
++ Source/WebCore/Modules/mediastream/RTCSessionDescription.h
++ Source/WebCore/Modules/mediastream/RTCSessionDescriptionCallback.h
++ Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp
++ Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h
++ Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp
++ Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h
++ Source/WebCore/Modules/mediastream/UserMediaClient.h
++ Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
++ Source/WebCore/Modules/mediastream/UserMediaRequest.h
++ Source/WebCore/Modules/notifications/Notification.cpp
++ Source/WebCore/Modules/notifications/Notification.h
++ Source/WebCore/Modules/notifications/NotificationCenter.cpp
++ Source/WebCore/Modules/notifications/NotificationCenter.h
++ Source/WebCore/Modules/notifications/NotificationClient.h
++ Source/WebCore/Modules/quota/*
++ Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.cpp
++ Source/WebCore/Modules/webaudio/AudioBuffer.cpp
++ Source/WebCore/Modules/webaudio/AudioBuffer.h
++ Source/WebCore/Modules/webaudio/AudioListener.cpp
++ Source/WebCore/Modules/webaudio/AudioListener.h
++ Source/WebCore/Modules/webaudio/AudioParam.h
++ Source/WebCore/Modules/webaudio/AudioParamTimeline.h
++ Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h
++ Source/WebCore/Modules/webaudio/ChannelMergerNode.cpp
++ Source/WebCore/Modules/webaudio/ChannelMergerNode.h
++ Source/WebCore/Modules/webaudio/PeriodicWave.cpp
++ Source/WebCore/Modules/webaudio/PeriodicWave.h
++ Source/WebCore/Modules/webdatabase/*
++ Source/WebCore/Modules/websockets/*
++ Source/WebCore/accessibility/*
++ Source/WebCore/bindings/generic/*
++ Source/WebCore/bindings/js/JSAttrCustom.cpp
++ Source/WebCore/bindings/js/JSBlobCustom.cpp
++ Source/WebCore/bindings/js/JSCallbackData.cpp
++ Source/WebCore/bindings/js/JSCallbackData.h
++ Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp
++ Source/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
++ Source/WebCore/bindings/js/JSDOMFormDataCustom.cpp
++ Source/WebCore/bindings/js/JSDOMWindowShell.cpp
++ Source/WebCore/bindings/js/JSDOMWindowShell.h
++ Source/WebCore/bindings/js/JSDataTransferCustom.cpp
++ Source/WebCore/bindings/js/JSDedicatedWorkerGlobalScopeCustom.cpp
++ Source/WebCore/bindings/js/JSElementCustom.cpp
++ Source/WebCore/bindings/js/JSErrorHandler.cpp
++ Source/WebCore/bindings/js/JSErrorHandler.h
++ Source/WebCore/bindings/js/JSEventCustom.cpp
++ Source/WebCore/bindings/js/JSFileReaderCustom.cpp
++ Source/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp
++ Source/WebCore/bindings/js/JSHTMLSelectElementCustom.h
++ Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp
++ Source/WebCore/bindings/js/JSHistoryCustom.cpp
++ Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
++ Source/WebCore/bindings/js/JSMessageEventCustom.cpp
++ Source/WebCore/bindings/js/JSMessagePortCustom.h
++ Source/WebCore/bindings/js/JSMutationObserverCustom.cpp
++ Source/WebCore/bindings/js/JSPerformanceEntryCustom.cpp
++ Source/WebCore/bindings/js/JSPopStateEventCustom.cpp
++ Source/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp
++ Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp
++ Source/WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp
++ Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp
++ Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
++ Source/WebCore/bindings/js/JSXSLTProcessorCustom.cpp
++ Source/WebCore/bindings/js/ScriptCachedFrameData.cpp
++ Source/WebCore/bindings/js/ScriptCachedFrameData.h
++ Source/WebCore/bindings/js/ScriptGlobalObject.cpp
++ Source/WebCore/bindings/js/ScriptGlobalObject.h
++ Source/WebCore/bindings/js/ScriptSourceCode.h
++ Source/WebCore/bindings/js/ScriptState.cpp
++ Source/WebCore/bindings/js/ScriptState.h
++ Source/WebCore/bindings/js/ScriptWrappable.h
++ Source/WebCore/bindings/js/ScriptWrappableInlines.h
++ Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp
++ Source/WebCore/bindings/js/WorkerScriptDebugServer.h
++ Source/WebCore/css/CSSAspectRatioValue.cpp
++ Source/WebCore/css/CSSAspectRatioValue.h
++ Source/WebCore/css/CSSCalculationValue.cpp
++ Source/WebCore/css/CSSCalculationValue.h
++ Source/WebCore/css/CSSFontFaceLoadEvent.cpp
++ Source/WebCore/css/CSSFontFaceLoadEvent.h
++ Source/WebCore/css/CSSGridLineNamesValue.cpp
++ Source/WebCore/css/CSSGridLineNamesValue.h
++ Source/WebCore/css/CSSGridTemplateAreasValue.cpp
++ Source/WebCore/css/CSSGridTemplateAreasValue.h
++ Source/WebCore/css/CSSOMUtils.cpp
++ Source/WebCore/css/CSSOMUtils.h
++ Source/WebCore/css/CSSPropertySourceData.cpp
++ Source/WebCore/css/CSSPropertySourceData.h
++ Source/WebCore/css/CSSSupportsRule.cpp
++ Source/WebCore/css/CSSSupportsRule.h
++ Source/WebCore/css/CSSToLengthConversionData.cpp
++ Source/WebCore/css/CSSToLengthConversionData.h
++ Source/WebCore/css/DOMWindowCSS.cpp
++ Source/WebCore/css/DOMWindowCSS.h
++ Source/WebCore/dom/ChildListMutationScope.cpp
++ Source/WebCore/dom/ChildListMutationScope.h
++ Source/WebCore/dom/ClassNodeList.cpp
++ Source/WebCore/dom/ClassNodeList.h
++ Source/WebCore/dom/CrossThreadTask.h
++ Source/WebCore/dom/CurrentScriptIncrementer.h
++ Source/WebCore/dom/DOMCoreException.cpp
++ Source/WebCore/dom/DOMCoreException.h
++ Source/WebCore/dom/DOMTimeStamp.h
++ Source/WebCore/dom/DataTransferItem.cpp
++ Source/WebCore/dom/DataTransferItem.h
++ Source/WebCore/dom/DataTransferItemList.h
++ Source/WebCore/dom/DocumentMarker.cpp
++ Source/WebCore/dom/DocumentOrderedMap.cpp
++ Source/WebCore/dom/DocumentOrderedMap.h
++ Source/WebCore/dom/ElementRareData.cpp
++ Source/WebCore/dom/ErrorEvent.cpp
++ Source/WebCore/dom/ErrorEvent.h
++ Source/WebCore/dom/EventException.cpp
++ Source/WebCore/dom/EventException.h
++ Source/WebCore/dom/ExceptionBase.cpp
++ Source/WebCore/dom/ExceptionBase.h
++ Source/WebCore/dom/ExceptionCodePlaceholder.cpp
++ Source/WebCore/dom/ExceptionCodePlaceholder.h
++ Source/WebCore/dom/IconURL.cpp
++ Source/WebCore/dom/IconURL.h
++ Source/WebCore/dom/MessagePortChannel.cpp
++ Source/WebCore/dom/MessagePortChannel.h
++ Source/WebCore/dom/MutationCallback.h
++ Source/WebCore/dom/MutationObserver.cpp
++ Source/WebCore/dom/MutationObserver.h
++ Source/WebCore/dom/MutationObserverInterestGroup.cpp
++ Source/WebCore/dom/MutationObserverInterestGroup.h
++ Source/WebCore/dom/MutationObserverRegistration.cpp
++ Source/WebCore/dom/MutationObserverRegistration.h
++ Source/WebCore/dom/MutationRecord.cpp
++ Source/WebCore/dom/MutationRecord.h
++ Source/WebCore/dom/NodeRareData.cpp
++ Source/WebCore/dom/NodeRenderingTraversal.cpp
++ Source/WebCore/dom/NodeRenderingTraversal.h
++ Source/WebCore/dom/PseudoElement.cpp
++ Source/WebCore/dom/PseudoElement.h
++ Source/WebCore/dom/RangeException.cpp
++ Source/WebCore/dom/RenderedDocumentMarker.h
++ Source/WebCore/dom/RequestAnimationFrameCallback.h
++ Source/WebCore/dom/ScopedEventQueue.cpp
++ Source/WebCore/dom/ScopedEventQueue.h
++ Source/WebCore/dom/ShadowRoot.cpp
++ Source/WebCore/dom/ShadowRoot.h
++ Source/WebCore/dom/StaticNodeList.cpp
++ Source/WebCore/dom/StaticNodeList.h
++ Source/WebCore/dom/StringCallback.cpp
++ Source/WebCore/dom/StringCallback.h
++ Source/WebCore/dom/TemplateContentDocumentFragment.h
++ Source/WebCore/dom/TreeDepthLimit.h
++ Source/WebCore/dom/UserActionElementSet.cpp
++ Source/WebCore/dom/UserActionElementSet.h
++ Source/WebCore/dom/default/*
++ Source/WebCore/dom/make_dom_exceptions.pl
++ Source/WebCore/dom/make_event_factory.pl
++ Source/WebCore/dom/make_names.pl
++ Source/WebCore/editing/ApplyBlockElementCommand.h
++ Source/WebCore/editing/EditingStyle.h
++ Source/WebCore/editing/RenderedPosition.cpp
++ Source/WebCore/editing/RenderedPosition.h
++ Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp
++ Source/WebCore/editing/ReplaceNodeWithSpanCommand.h
++ Source/WebCore/editing/SmartReplace.cpp
++ Source/WebCore/editing/SmartReplace.h
++ Source/WebCore/editing/SmartReplaceCF.cpp
++ Source/WebCore/editing/SurroundingText.cpp
++ Source/WebCore/editing/SurroundingText.h
++ Source/WebCore/editing/UndoStep.h
++ Source/WebCore/extract-localizable-strings.pl
++ Source/WebCore/fileapi/*
++ Source/WebCore/history/CachedFramePlatformData.h
++ Source/WebCore/html/BaseButtonInputType.cpp
++ Source/WebCore/html/BaseButtonInputType.h
++ Source/WebCore/html/BaseCheckableInputType.cpp
++ Source/WebCore/html/BaseCheckableInputType.h
++ Source/WebCore/html/BaseClickableWithKeyInputType.cpp
++ Source/WebCore/html/BaseClickableWithKeyInputType.h
++ Source/WebCore/html/BaseDateAndTimeInputType.cpp
++ Source/WebCore/html/BaseDateAndTimeInputType.h
++ Source/WebCore/html/BaseTextInputType.h
++ Source/WebCore/html/ButtonInputType.cpp
++ Source/WebCore/html/ButtonInputType.h
++ Source/WebCore/html/CheckboxInputType.cpp
++ Source/WebCore/html/CheckboxInputType.h
++ Source/WebCore/html/ColorInputType.cpp
++ Source/WebCore/html/ColorInputType.h
++ Source/WebCore/html/DOMFormData.cpp
++ Source/WebCore/html/DOMFormData.h
++ Source/WebCore/html/DateInputType.cpp
++ Source/WebCore/html/DateInputType.h
++ Source/WebCore/html/DateTimeInputType.cpp
++ Source/WebCore/html/DateTimeInputType.h
++ Source/WebCore/html/DateTimeLocalInputType.cpp
++ Source/WebCore/html/DateTimeLocalInputType.h
++ Source/WebCore/html/EmailInputType.h
++ Source/WebCore/html/FileInputType.h
++ Source/WebCore/html/HTMLDataListElement.cpp
++ Source/WebCore/html/HTMLDataListElement.h
++ Source/WebCore/html/HTMLElementsAllInOne.cpp
++ Source/WebCore/html/HTMLOutputElement.cpp
++ Source/WebCore/html/HTMLOutputElement.h
++ Source/WebCore/html/HTMLTableRowsCollection.cpp
++ Source/WebCore/html/HTMLTableRowsCollection.h
++ Source/WebCore/html/HTMLTemplateElement.cpp
++ Source/WebCore/html/HTMLTemplateElement.h
++ Source/WebCore/html/HTMLUnknownElement.h
++ Source/WebCore/html/HiddenInputType.cpp
++ Source/WebCore/html/HiddenInputType.h
++ Source/WebCore/html/ImageData.cpp
++ Source/WebCore/html/ImageData.h
++ Source/WebCore/html/ImageInputType.h
++ Source/WebCore/html/InputType.h
++ Source/WebCore/html/LabelableElement.h
++ Source/WebCore/html/LinkRelAttribute.cpp
++ Source/WebCore/html/LinkRelAttribute.h
++ Source/WebCore/html/MonthInputType.cpp
++ Source/WebCore/html/MonthInputType.h
++ Source/WebCore/html/NumberInputType.cpp
++ Source/WebCore/html/NumberInputType.h
++ Source/WebCore/html/PasswordInputType.cpp
++ Source/WebCore/html/PasswordInputType.h
++ Source/WebCore/html/RadioInputType.h
++ Source/WebCore/html/RangeInputType.cpp
++ Source/WebCore/html/RangeInputType.h
++ Source/WebCore/html/ResetInputType.cpp
++ Source/WebCore/html/ResetInputType.h
++ Source/WebCore/html/SearchInputType.cpp
++ Source/WebCore/html/SearchInputType.h
++ Source/WebCore/html/SubmitInputType.cpp
++ Source/WebCore/html/SubmitInputType.h
++ Source/WebCore/html/TelephoneInputType.cpp
++ Source/WebCore/html/TelephoneInputType.h
++ Source/WebCore/html/TextFieldInputType.cpp
++ Source/WebCore/html/TextFieldInputType.h
++ Source/WebCore/html/TextInputType.cpp
++ Source/WebCore/html/TextInputType.h
++ Source/WebCore/html/TimeInputType.cpp
++ Source/WebCore/html/TimeInputType.h
++ Source/WebCore/html/URLInputType.cpp
++ Source/WebCore/html/URLInputType.h
++ Source/WebCore/html/URLRegistry.h
++ Source/WebCore/html/ValidationMessage.cpp
++ Source/WebCore/html/ValidationMessage.h
++ Source/WebCore/html/WeekInputType.cpp
++ Source/WebCore/html/WeekInputType.h
++ Source/WebCore/html/forms/*
++ Source/WebCore/html/parser/HTMLSrcsetParser.cpp
++ Source/WebCore/html/parser/HTMLSrcsetParser.h
++ Source/WebCore/html/parser/ParsingUtilities.h
++ Source/WebCore/html/shadow/*
++ Source/WebCore/html/track/AudioTrack.cpp
++ Source/WebCore/html/track/BufferedLineReader.cpp
++ Source/WebCore/html/track/BufferedLineReader.h
++ Source/WebCore/html/track/TextTrack.cpp
++ Source/WebCore/html/track/TextTrackCue.cpp
++ Source/WebCore/html/track/TextTrackCue.h
++ Source/WebCore/html/track/VTTCue.cpp
++ Source/WebCore/html/track/VTTCue.h
++ Source/WebCore/html/track/VTTRegion.cpp
++ Source/WebCore/html/track/VTTRegion.h
++ Source/WebCore/html/track/VTTScanner.cpp
++ Source/WebCore/html/track/VTTScanner.h
++ Source/WebCore/html/track/VideoTrack.cpp
++ Source/WebCore/html/track/WebVTTParser.cpp
++ Source/WebCore/html/track/WebVTTParser.h
++ Source/WebCore/html/track/WebVTTToken.h
++ Source/WebCore/html/track/WebVTTTokenizer.cpp
++ Source/WebCore/html/track/WebVTTTokenizer.h
++ Source/WebCore/inspector/*
++ Source/WebCore/loader/*
++ Source/WebCore/loader/appcache/ApplicationCacheHost.h
++ Source/WebCore/loader/archive/*
++ Source/WebCore/loader/archive/mhtml/*
++ Source/WebCore/loader/icon/*
++ Source/WebCore/make-file-arrays.py
++ Source/WebCore/page/BarProp.cpp
++ Source/WebCore/page/BarProp.h
++ Source/WebCore/page/ContextMenuProvider.h
++ Source/WebCore/page/Crypto.cpp
++ Source/WebCore/page/Crypto.h
++ Source/WebCore/page/DOMSelection.cpp
++ Source/WebCore/page/DOMSelection.h
++ Source/WebCore/page/EventSource.cpp
++ Source/WebCore/page/EventSource.h
++ Source/WebCore/page/GestureTapHighlighter.cpp
++ Source/WebCore/page/GestureTapHighlighter.h
++ Source/WebCore/page/Location.cpp
++ Source/WebCore/page/Location.h
++ Source/WebCore/page/OriginAccessEntry.cpp
++ Source/WebCore/page/OriginAccessEntry.h
++ Source/WebCore/page/PageConsoleClient.cpp
++ Source/WebCore/page/PageConsoleClient.h
++ Source/WebCore/page/PageSerializer.cpp
++ Source/WebCore/page/PageVisibilityState.cpp
++ Source/WebCore/page/PageVisibilityState.h
++ Source/WebCore/page/Performance.cpp
++ Source/WebCore/page/Performance.h
++ Source/WebCore/page/PerformanceEntry.cpp
++ Source/WebCore/page/PerformanceEntry.h
++ Source/WebCore/page/PerformanceEntryList.cpp
++ Source/WebCore/page/PerformanceEntryList.h
++ Source/WebCore/page/PerformanceNavigation.cpp
++ Source/WebCore/page/PerformanceNavigation.h
++ Source/WebCore/page/PerformanceResourceTiming.cpp
++ Source/WebCore/page/PerformanceResourceTiming.h
++ Source/WebCore/page/PerformanceTiming.cpp
++ Source/WebCore/page/PerformanceTiming.h
++ Source/WebCore/page/Screen.cpp
++ Source/WebCore/page/Screen.h
++ Source/WebCore/page/SecurityOrigin.cpp
++ Source/WebCore/page/SecurityOrigin.h
++ Source/WebCore/page/SecurityOriginHash.h
++ Source/WebCore/page/SecurityPolicy.cpp
++ Source/WebCore/page/SecurityPolicy.h
++ Source/WebCore/page/WindowFeatures.h
++ Source/WebCore/page/animation/*
++ Source/WebCore/platform/CalculationValue.cpp
++ Source/WebCore/platform/CalculationValue.h
++ Source/WebCore/platform/ColorChooser.h
++ Source/WebCore/platform/ColorChooserClient.h
++ Source/WebCore/platform/CrossThreadCopier.cpp
++ Source/WebCore/platform/CrossThreadCopier.h
++ Source/WebCore/platform/DateComponents.cpp
++ Source/WebCore/platform/DateComponents.h
++ Source/WebCore/platform/DateTimeChooser.h
++ Source/WebCore/platform/DateTimeChooserClient.h
++ Source/WebCore/platform/Decimal.cpp
++ Source/WebCore/platform/Decimal.h
++ Source/WebCore/platform/FileChooser.cpp
++ Source/WebCore/platform/FileChooser.h
++ Source/WebCore/platform/FileMetadata.h
++ Source/WebCore/platform/FileStream.cpp
++ Source/WebCore/platform/FileStream.h
++ Source/WebCore/platform/FileStreamClient.h
++ Source/WebCore/platform/FileSystem.h
++ Source/WebCore/platform/FloatConversion.h
++ Source/WebCore/platform/LayoutUnit.h
++ Source/WebCore/platform/LengthBox.cpp
++ Source/WebCore/platform/MainThreadTask.h
++ Source/WebCore/platform/ReferrerPolicy.h
++ Source/WebCore/platform/ScrollAnimator.cpp
++ Source/WebCore/platform/ScrollAnimator.h
++ Source/WebCore/platform/ScrollAnimatorNone.cpp
++ Source/WebCore/platform/ScrollAnimatorNone.h
++ Source/WebCore/platform/ScrollableArea.cpp
++ Source/WebCore/platform/SharedBufferChunkReader.cpp
++ Source/WebCore/platform/SharedBufferChunkReader.h
++ Source/WebCore/platform/UUID.cpp
++ Source/WebCore/platform/UUID.h
++ Source/WebCore/platform/audio/*
++ Source/WebCore/platform/graphics/FloatQuad.cpp
++ Source/WebCore/platform/graphics/FloatQuad.h
++ Source/WebCore/platform/graphics/FontCache.cpp
++ Source/WebCore/platform/graphics/FontCache.h
++ Source/WebCore/platform/graphics/FontDescription.cpp
++ Source/WebCore/platform/graphics/FontGlyphs.cpp
++ Source/WebCore/platform/graphics/GeneratedImage.cpp
++ Source/WebCore/platform/graphics/Glyph.h
++ Source/WebCore/platform/graphics/GlyphBuffer.h
++ Source/WebCore/platform/graphics/GlyphMetricsMap.h
++ Source/WebCore/platform/graphics/GlyphPage.h
++ Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp
++ Source/WebCore/platform/graphics/GlyphPageTreeNode.h
++ Source/WebCore/platform/graphics/LayoutBoxExtent.cpp
++ Source/WebCore/platform/graphics/LayoutBoxExtent.h
++ Source/WebCore/platform/graphics/LayoutPoint.h
++ Source/WebCore/platform/graphics/LayoutRect.cpp
++ Source/WebCore/platform/graphics/LayoutRect.h
++ Source/WebCore/platform/graphics/LayoutSize.h
++ Source/WebCore/platform/graphics/MediaSourcePrivate.h
++ Source/WebCore/platform/graphics/SimpleFontData.cpp
++ Source/WebCore/platform/graphics/SourceBufferPrivate.h
++ Source/WebCore/platform/graphics/StringTruncator.cpp
++ Source/WebCore/platform/graphics/StringTruncator.h
++ Source/WebCore/platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp
++ Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp
++ Source/WebCore/platform/graphics/gpu/*
++ Source/WebCore/platform/graphics/gstreamer/MediaSourceGStreamer.cpp
++ Source/WebCore/platform/graphics/gstreamer/MediaSourceGStreamer.h
++ Source/WebCore/platform/graphics/gstreamer/SourceBufferPrivateGStreamer.cpp
++ Source/WebCore/platform/graphics/gstreamer/SourceBufferPrivateGStreamer.h
++ Source/WebCore/platform/graphics/gtk/IconGtk.cpp
++ Source/WebCore/platform/graphics/harfbuzz/*
++ Source/WebCore/platform/image-decoders/bmp/*
++ Source/WebCore/platform/image-decoders/ico/*
++ Source/WebCore/platform/image-decoders/webp/*
++ Source/WebCore/platform/image-encoders/PNGImageEncoder.cpp
++ Source/WebCore/platform/mediastream/*
++ Source/WebCore/platform/mediastream/gstreamer/*
++ Source/WebCore/platform/mock/GeolocationClientMock.cpp
++ Source/WebCore/platform/mock/GeolocationClientMock.h
++ Source/WebCore/platform/network/BlobData.cpp
++ Source/WebCore/platform/network/BlobData.h
++ Source/WebCore/platform/network/BlobRegistry.h
++ Source/WebCore/platform/network/BlobRegistryImpl.cpp
++ Source/WebCore/platform/network/BlobRegistryImpl.h
++ Source/WebCore/platform/network/BlobResourceHandle.cpp
++ Source/WebCore/platform/network/BlobResourceHandle.h
++ Source/WebCore/platform/network/HTTPHeaderMap.cpp
++ Source/WebCore/platform/network/HTTPParsers.cpp
++ Source/WebCore/platform/network/HTTPParsers.h
++ Source/WebCore/platform/network/MIMEHeader.cpp
++ Source/WebCore/platform/network/MIMEHeader.h
++ Source/WebCore/platform/network/ParsedContentType.cpp
++ Source/WebCore/platform/network/ParsedContentType.h
++ Source/WebCore/platform/network/SocketStreamErrorBase.cpp
++ Source/WebCore/platform/network/SocketStreamErrorBase.h
++ Source/WebCore/platform/network/SocketStreamHandleBase.cpp
++ Source/WebCore/platform/network/SocketStreamHandleBase.h
++ Source/WebCore/platform/network/SocketStreamHandleClient.h
++ Source/WebCore/platform/network/soup/SocketStreamError.h
++ Source/WebCore/platform/network/soup/SocketStreamHandle.h
++ Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp
++ Source/WebCore/platform/posix/FileSystemPOSIX.cpp
++ Source/WebCore/platform/sql/SQLValue.cpp
++ Source/WebCore/platform/sql/SQLValue.h
++ Source/WebCore/platform/sql/SQLiteAuthorizer.cpp
++ Source/WebCore/platform/sql/SQLiteFileSystem.cpp
++ Source/WebCore/platform/sql/SQLiteFileSystem.h
++ Source/WebCore/platform/text/DecodeEscapeSequences.h
++ Source/WebCore/platform/text/LineEnding.cpp
++ Source/WebCore/platform/text/LineEnding.h
++ Source/WebCore/platform/text/LocaleICU.cpp
++ Source/WebCore/platform/text/LocaleICU.h
++ Source/WebCore/platform/text/LocaleToScriptMapping.h
++ Source/WebCore/platform/text/LocaleToScriptMappingDefault.cpp
++ Source/WebCore/platform/text/LocaleToScriptMappingICU.cpp
++ Source/WebCore/platform/text/PlatformLocale.cpp
++ Source/WebCore/platform/text/QuotedPrintable.cpp
++ Source/WebCore/platform/text/QuotedPrintable.h
++ Source/WebCore/platform/text/StringWithDirection.h
++ Source/WebCore/platform/text/TextChecking.h
++ Source/WebCore/platform/text/TextEncodingDetector.h
++ Source/WebCore/platform/text/TextEncodingDetectorICU.cpp
++ Source/WebCore/platform/text/TextEncodingDetectorNone.cpp
++ Source/WebCore/platform/text/WritingMode.h
++ Source/WebCore/plugins/PluginQuirkSet.h
++ Source/WebCore/plugins/npruntime.h
++ Source/WebCore/rendering/OrderIterator.cpp
++ Source/WebCore/rendering/OrderIterator.h
++ Source/WebCore/rendering/RenderFlexibleBox.cpp
++ Source/WebCore/rendering/RenderFlexibleBox.h
++ Source/WebCore/rendering/RenderLineBoxList.cpp
++ Source/WebCore/rendering/RenderLineBoxList.h
++ Source/WebCore/rendering/RenderListBox.cpp
++ Source/WebCore/rendering/RenderListBox.h
++ Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp
++ Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h
++ Source/WebCore/rendering/RenderReplica.cpp
++ Source/WebCore/rendering/RenderReplica.h
++ Source/WebCore/rendering/RenderRuby.cpp
++ Source/WebCore/rendering/RenderRuby.h
++ Source/WebCore/rendering/RenderRubyBase.cpp
++ Source/WebCore/rendering/RenderRubyBase.h
++ Source/WebCore/rendering/RenderRubyRun.cpp
++ Source/WebCore/rendering/RenderRubyRun.h
++ Source/WebCore/rendering/RenderRubyText.cpp
++ Source/WebCore/rendering/RenderRubyText.h
++ Source/WebCore/rendering/style/GridCoordinate.h
++ Source/WebCore/rendering/style/GridLength.h
++ Source/WebCore/rendering/style/GridPosition.h
++ Source/WebCore/rendering/style/GridResolvedPosition.cpp
++ Source/WebCore/rendering/style/GridResolvedPosition.h
++ Source/WebCore/rendering/style/GridTrackSize.h
++ Source/WebCore/rendering/style/StyleGridItemData.cpp
++ Source/WebCore/rendering/style/StyleGridItemData.h
++ Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
++ Source/WebCore/rendering/svg/RenderSVGModelObject.h
++ Source/WebCore/storage/StorageEventDispatcher.h
++ Source/WebCore/svg/SVGException.cpp
++ Source/WebCore/svg/graphics/SVGImageChromeClient.h
++ Source/WebCore/testing/MemoryInfo.h
++ Source/WebCore/workers/*
++ Source/WebCore/xml/XMLHttpRequestException.cpp
++ Source/WebCore/xml/XMLHttpRequestException.h
++ Source/WebCore/xml/XPathException.cpp
++ Source/WebCore/xml/XPathException.h
++ Source/WebCore/xml/XSLTUnicodeSort.cpp
++ Source/WebCore/xml/XSLTUnicodeSort.h
++ Source/WebKit/scripts/*
++ Source/WebKit2/Shared/APIObject.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h
++ Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h
++ Source/WebKit2/UIProcess/gtk/ExperimentalFeatures.cpp
++ Source/WebKit2/UIProcess/gtk/ExperimentalFeatures.h
++ Tools/DumpRenderTree/*
++ Tools/DumpRenderTree/cairo/*
++ Tools/ImageDiff/gtk/*
++ Tools/Scripts/*
++ Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp
++ Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp
++ Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp
++ Tools/TestWebKitAPI/Tests/WTF/SHA1.cpp
++ Tools/TestWebKitAPI/Tests/WTF/SaturatedArithmeticOperations.cpp
++ Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp
++ Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
++ Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp
++ Tools/TestWebKitAPI/WTFStringUtilities.h
++ Tools/WebKitTestRunner/CyclicRedundancyCheck.cpp
++ Tools/WebKitTestRunner/CyclicRedundancyCheck.h
++ Tools/WebKitTestRunner/InjectedBundle/gtk/*
++ Tools/WebKitTestRunner/PixelDumpSupport.cpp
++ Tools/WebKitTestRunner/PixelDumpSupport.h
++ Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
++Copyright: © 2002-2014 Apple Inc. and others
++License: BSD-3-clause
++
++Files: Source/WTF/wtf/Atomics.cpp
++ Source/WTF/wtf/Atomics.h
++ Source/WTF/wtf/ThreadSafeRefCounted.h
++ Source/WTF/wtf/Threading.h
++Copyright: © 2002-2014 Apple Inc. and others
++License: BSD-3-clause and BSL
++
++Files: Source/JavaScriptCore/inspector/scripts/jsmin.py
++ Source/ThirdParty/ANGLE/include/EGL/*
++ Source/ThirdParty/ANGLE/include/GLES3/gl3.h
++ Source/ThirdParty/ANGLE/include/KHR/*
++ Source/WebInspectorUI/Scripts/jsmin.py
++Copyright: © 2007-2009 The Khronos Group Inc.
++ © 2013 Dave St.Germain
++License: Expat
++
++Files: Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp
++ Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab.cpp
++ Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab.h
++Copyright: © 2002-2014 Apple Inc. and others
++License: GPL-3+
++
++Files: Source/WTF/wtf/CryptographicallyRandomNumber.cpp
++Copyright: © 1996 David Mazieres <dm@uun.org>
++ © 2008 Damien Miller <djm@openbsd.org>
++License: ISC
++
++Files: Source/WTF/wtf/text/Base64.cpp
++Copyright: © 2002-2014 Apple Inc. and others
++License: LGPL-2
++
++Files: Documentation/*
++ Source/JavaScriptCore/*
++ Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
++ Source/JavaScriptCore/debugger/Debugger.cpp
++ Source/JavaScriptCore/debugger/Debugger.h
++ Source/JavaScriptCore/heap/Heap.cpp
++ Source/JavaScriptCore/heap/Heap.h
++ Source/JavaScriptCore/heap/ListableHandler.h
++ Source/JavaScriptCore/heap/MachineStackMarker.cpp
++ Source/JavaScriptCore/heap/MachineStackMarker.h
++ Source/JavaScriptCore/heap/MarkedBlock.h
++ Source/JavaScriptCore/heap/MarkedSpace.cpp
++ Source/JavaScriptCore/heap/MarkedSpace.h
++ Source/JavaScriptCore/heap/WeakReferenceHarvester.h
++ Source/JavaScriptCore/interpreter/CallFrame.h
++ Source/JavaScriptCore/parser/Lexer.cpp
++ Source/JavaScriptCore/parser/Lexer.h
++ Source/JavaScriptCore/parser/NodeConstructors.h
++ Source/JavaScriptCore/parser/NodeInfo.h
++ Source/JavaScriptCore/parser/Nodes.cpp
++ Source/JavaScriptCore/parser/Nodes.h
++ Source/JavaScriptCore/parser/Parser.cpp
++ Source/JavaScriptCore/parser/Parser.h
++ Source/JavaScriptCore/runtime/ArgList.cpp
++ Source/JavaScriptCore/runtime/ArgList.h
++ Source/JavaScriptCore/runtime/Arguments.cpp
++ Source/JavaScriptCore/runtime/Arguments.h
++ Source/JavaScriptCore/runtime/ArrayConstructor.cpp
++ Source/JavaScriptCore/runtime/ArrayConstructor.h
++ Source/JavaScriptCore/runtime/ArrayConventions.h
++ Source/JavaScriptCore/runtime/ArrayPrototype.cpp
++ Source/JavaScriptCore/runtime/ArrayPrototype.h
++ Source/JavaScriptCore/runtime/BooleanConstructor.cpp
++ Source/JavaScriptCore/runtime/BooleanConstructor.h
++ Source/JavaScriptCore/runtime/BooleanObject.cpp
++ Source/JavaScriptCore/runtime/BooleanObject.h
++ Source/JavaScriptCore/runtime/BooleanPrototype.cpp
++ Source/JavaScriptCore/runtime/BooleanPrototype.h
++ Source/JavaScriptCore/runtime/ClassInfo.h
++ Source/JavaScriptCore/runtime/CommonIdentifiers.cpp
++ Source/JavaScriptCore/runtime/CommonIdentifiers.h
++ Source/JavaScriptCore/runtime/Completion.cpp
++ Source/JavaScriptCore/runtime/Completion.h
++ Source/JavaScriptCore/runtime/DateConstructor.cpp
++ Source/JavaScriptCore/runtime/DateConstructor.h
++ Source/JavaScriptCore/runtime/DateInstance.cpp
++ Source/JavaScriptCore/runtime/DateInstance.h
++ Source/JavaScriptCore/runtime/DatePrototype.cpp
++ Source/JavaScriptCore/runtime/DatePrototype.h
++ Source/JavaScriptCore/runtime/Error.cpp
++ Source/JavaScriptCore/runtime/Error.h
++ Source/JavaScriptCore/runtime/ErrorConstructor.cpp
++ Source/JavaScriptCore/runtime/ErrorConstructor.h
++ Source/JavaScriptCore/runtime/ErrorInstance.cpp
++ Source/JavaScriptCore/runtime/ErrorInstance.h
++ Source/JavaScriptCore/runtime/ErrorPrototype.cpp
++ Source/JavaScriptCore/runtime/ErrorPrototype.h
++ Source/JavaScriptCore/runtime/FunctionConstructor.cpp
++ Source/JavaScriptCore/runtime/FunctionConstructor.h
++ Source/JavaScriptCore/runtime/FunctionPrototype.cpp
++ Source/JavaScriptCore/runtime/FunctionPrototype.h
++ Source/JavaScriptCore/runtime/GetterSetter.cpp
++ Source/JavaScriptCore/runtime/GetterSetter.h
++ Source/JavaScriptCore/runtime/Identifier.cpp
++ Source/JavaScriptCore/runtime/Identifier.h
++ Source/JavaScriptCore/runtime/InternalFunction.cpp
++ Source/JavaScriptCore/runtime/InternalFunction.h
++ Source/JavaScriptCore/runtime/JSAPIValueWrapper.cpp
++ Source/JavaScriptCore/runtime/JSAPIValueWrapper.h
++ Source/JavaScriptCore/runtime/JSArray.cpp
++ Source/JavaScriptCore/runtime/JSArray.h
++ Source/JavaScriptCore/runtime/JSCJSValue.cpp
++ Source/JavaScriptCore/runtime/JSCJSValue.h
++ Source/JavaScriptCore/runtime/JSCell.cpp
++ Source/JavaScriptCore/runtime/JSCell.h
++ Source/JavaScriptCore/runtime/JSFunction.cpp
++ Source/JavaScriptCore/runtime/JSFunction.h
++ Source/JavaScriptCore/runtime/JSGlobalObject.h
++ Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
++ Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.h
++ Source/JavaScriptCore/runtime/JSLock.cpp
++ Source/JavaScriptCore/runtime/JSLock.h
++ Source/JavaScriptCore/runtime/JSObject.cpp
++ Source/JavaScriptCore/runtime/JSObject.h
++ Source/JavaScriptCore/runtime/JSString.cpp
++ Source/JavaScriptCore/runtime/JSString.h
++ Source/JavaScriptCore/runtime/JSType.h
++ Source/JavaScriptCore/runtime/JSWrapperObject.cpp
++ Source/JavaScriptCore/runtime/JSWrapperObject.h
++ Source/JavaScriptCore/runtime/Lookup.cpp
++ Source/JavaScriptCore/runtime/Lookup.h
++ Source/JavaScriptCore/runtime/MathObject.cpp
++ Source/JavaScriptCore/runtime/MathObject.h
++ Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp
++ Source/JavaScriptCore/runtime/NativeErrorConstructor.h
++ Source/JavaScriptCore/runtime/NativeErrorPrototype.cpp
++ Source/JavaScriptCore/runtime/NativeErrorPrototype.h
++ Source/JavaScriptCore/runtime/NumberConstructor.cpp
++ Source/JavaScriptCore/runtime/NumberConstructor.h
++ Source/JavaScriptCore/runtime/NumberObject.cpp
++ Source/JavaScriptCore/runtime/NumberObject.h
++ Source/JavaScriptCore/runtime/NumberPrototype.cpp
++ Source/JavaScriptCore/runtime/NumberPrototype.h
++ Source/JavaScriptCore/runtime/ObjectConstructor.cpp
++ Source/JavaScriptCore/runtime/ObjectConstructor.h
++ Source/JavaScriptCore/runtime/ObjectPrototype.cpp
++ Source/JavaScriptCore/runtime/ObjectPrototype.h
++ Source/JavaScriptCore/runtime/Operations.cpp
++ Source/JavaScriptCore/runtime/Operations.h
++ Source/JavaScriptCore/runtime/PropertyMapHashTable.h
++ Source/JavaScriptCore/runtime/PropertyNameArray.cpp
++ Source/JavaScriptCore/runtime/PropertyNameArray.h
++ Source/JavaScriptCore/runtime/PropertySlot.cpp
++ Source/JavaScriptCore/runtime/PropertySlot.h
++ Source/JavaScriptCore/runtime/Protect.h
++ Source/JavaScriptCore/runtime/RegExp.cpp
++ Source/JavaScriptCore/runtime/RegExp.h
++ Source/JavaScriptCore/runtime/RegExpConstructor.cpp
++ Source/JavaScriptCore/runtime/RegExpConstructor.h
++ Source/JavaScriptCore/runtime/RegExpMatchesArray.h
++ Source/JavaScriptCore/runtime/RegExpObject.cpp
++ Source/JavaScriptCore/runtime/RegExpObject.h
++ Source/JavaScriptCore/runtime/RegExpPrototype.cpp
++ Source/JavaScriptCore/runtime/RegExpPrototype.h
++ Source/JavaScriptCore/runtime/StringConstructor.cpp
++ Source/JavaScriptCore/runtime/StringConstructor.h
++ Source/JavaScriptCore/runtime/StringObject.cpp
++ Source/JavaScriptCore/runtime/StringObject.h
++ Source/JavaScriptCore/runtime/StringPrototype.cpp
++ Source/JavaScriptCore/runtime/StringPrototype.h
++ Source/JavaScriptCore/runtime/StringRecursionChecker.cpp
++ Source/JavaScriptCore/runtime/StringRecursionChecker.h
++ Source/WTF/*
++ Source/WTF/wtf/Bitmap.h
++ Source/WTF/wtf/FastMalloc.h
++ Source/WTF/wtf/Forward.h
++ Source/WTF/wtf/GetPtr.h
++ Source/WTF/wtf/HashCountedSet.h
++ Source/WTF/wtf/HashFunctions.h
++ Source/WTF/wtf/HashMap.h
++ Source/WTF/wtf/HashSet.h
++ Source/WTF/wtf/HashTable.cpp
++ Source/WTF/wtf/HashTable.h
++ Source/WTF/wtf/HashTraits.h
++ Source/WTF/wtf/HexNumber.h
++ Source/WTF/wtf/ListHashSet.h
++ Source/WTF/wtf/Noncopyable.h
++ Source/WTF/wtf/NumberOfCores.h
++ Source/WTF/wtf/OwnPtr.h
++ Source/WTF/wtf/PassRef.h
++ Source/WTF/wtf/PassRefPtr.h
++ Source/WTF/wtf/RefCounted.h
++ Source/WTF/wtf/RefCountedLeakCounter.cpp
++ Source/WTF/wtf/RefCountedLeakCounter.h
++ Source/WTF/wtf/RefPtr.h
++ Source/WTF/wtf/RefPtrHashMap.h
++ Source/WTF/wtf/RetainPtr.h
++ Source/WTF/wtf/StackBounds.cpp
++ Source/WTF/wtf/StaticConstructors.h
++ Source/WTF/wtf/StringHasher.h
++ Source/WTF/wtf/ThreadSpecificWin.cpp
++ Source/WTF/wtf/Vector.h
++ Source/WTF/wtf/VectorTraits.h
++ Source/WTF/wtf/dtoa.h
++ Source/WTF/wtf/gobject/*
++ Source/WTF/wtf/text/*
++ Source/WebCore/*
++ Source/WebCore/Modules/battery/*
++ Source/WebCore/Modules/geolocation/NavigatorGeolocation.cpp
++ Source/WebCore/Modules/geolocation/NavigatorGeolocation.h
++ Source/WebCore/Modules/mediastream/NavigatorUserMedia.cpp
++ Source/WebCore/Modules/mediastream/NavigatorUserMedia.h
++ Source/WebCore/Modules/proximity/DeviceProximityEvent.cpp
++ Source/WebCore/Modules/proximity/DeviceProximityEvent.h
++ Source/WebCore/Modules/vibration/*
++ Source/WebCore/Modules/websockets/WebSocketFrame.cpp
++ Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp
++ Source/WebCore/accessibility/AccessibilityProgressIndicator.h
++ Source/WebCore/accessibility/atk/*
++ Source/WebCore/bindings/gobject/*
++ Source/WebCore/bindings/js/DOMConstructorWithDocument.h
++ Source/WebCore/bindings/js/DOMWrapperWorld.cpp
++ Source/WebCore/bindings/js/DOMWrapperWorld.h
++ Source/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
++ Source/WebCore/bindings/js/JSDOMBinding.cpp
++ Source/WebCore/bindings/js/JSDOMBinding.h
++ Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp
++ Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp
++ Source/WebCore/bindings/js/JSDOMPluginCustom.cpp
++ Source/WebCore/bindings/js/JSDOMStringListCustom.cpp
++ Source/WebCore/bindings/js/JSDOMWindowBase.cpp
++ Source/WebCore/bindings/js/JSDOMWindowBase.h
++ Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
++ Source/WebCore/bindings/js/JSDOMWindowCustom.h
++ Source/WebCore/bindings/js/JSDOMWrapper.h
++ Source/WebCore/bindings/js/JSDocumentCustom.cpp
++ Source/WebCore/bindings/js/JSEventListener.cpp
++ Source/WebCore/bindings/js/JSEventListener.h
++ Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp
++ Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp
++ Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp
++ Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp
++ Source/WebCore/bindings/js/JSImageConstructor.cpp
++ Source/WebCore/bindings/js/JSImageConstructor.h
++ Source/WebCore/bindings/js/JSLazyEventListener.cpp
++ Source/WebCore/bindings/js/JSLazyEventListener.h
++ Source/WebCore/bindings/js/JSLocationCustom.cpp
++ Source/WebCore/bindings/js/JSNodeFilterCondition.cpp
++ Source/WebCore/bindings/js/JSNodeFilterCondition.h
++ Source/WebCore/bindings/js/JSNodeIteratorCustom.cpp
++ Source/WebCore/bindings/js/JSPluginElementFunctions.cpp
++ Source/WebCore/bindings/js/JSPluginElementFunctions.h
++ Source/WebCore/bindings/js/JSSVGLengthCustom.cpp
++ Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp
++ Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp
++ Source/WebCore/bindings/js/ScheduledAction.cpp
++ Source/WebCore/bindings/js/ScheduledAction.h
++ Source/WebCore/bindings/js/ScriptController.cpp
++ Source/WebCore/bindings/js/ScriptController.h
++ Source/WebCore/bindings/js/WebCoreJSClientData.h
++ Source/WebCore/bindings/scripts/*
++ Source/WebCore/bridge/testbindings.cpp
++ Source/WebCore/css/*
++ Source/WebCore/dom/Attr.cpp
++ Source/WebCore/dom/Attr.h
++ Source/WebCore/dom/Attribute.h
++ Source/WebCore/dom/BeforeUnloadEvent.cpp
++ Source/WebCore/dom/BeforeUnloadEvent.h
++ Source/WebCore/dom/CDATASection.cpp
++ Source/WebCore/dom/CDATASection.h
++ Source/WebCore/dom/CharacterData.cpp
++ Source/WebCore/dom/CharacterData.h
++ Source/WebCore/dom/CheckedRadioButtons.cpp
++ Source/WebCore/dom/CheckedRadioButtons.h
++ Source/WebCore/dom/ChildNodeList.cpp
++ Source/WebCore/dom/ChildNodeList.h
++ Source/WebCore/dom/ClipboardEvent.cpp
++ Source/WebCore/dom/ClipboardEvent.h
++ Source/WebCore/dom/Comment.cpp
++ Source/WebCore/dom/Comment.h
++ Source/WebCore/dom/ContainerNode.cpp
++ Source/WebCore/dom/ContainerNode.h
++ Source/WebCore/dom/ContainerNodeAlgorithms.cpp
++ Source/WebCore/dom/ContainerNodeAlgorithms.h
++ Source/WebCore/dom/DOMImplementation.cpp
++ Source/WebCore/dom/DOMImplementation.h
++ Source/WebCore/dom/DataTransfer.h
++ Source/WebCore/dom/Document.cpp
++ Source/WebCore/dom/Document.h
++ Source/WebCore/dom/DocumentFragment.cpp
++ Source/WebCore/dom/DocumentFragment.h
++ Source/WebCore/dom/DocumentMarker.h
++ Source/WebCore/dom/DocumentMarkerController.cpp
++ Source/WebCore/dom/DocumentMarkerController.h
++ Source/WebCore/dom/DocumentParser.h
++ Source/WebCore/dom/DocumentStyleSheetCollection.cpp
++ Source/WebCore/dom/DocumentStyleSheetCollection.h
++ Source/WebCore/dom/DocumentType.cpp
++ Source/WebCore/dom/DocumentType.h
++ Source/WebCore/dom/Element.cpp
++ Source/WebCore/dom/Element.h
++ Source/WebCore/dom/ElementRareData.h
++ Source/WebCore/dom/ElementTraversal.h
++ Source/WebCore/dom/Entity.h
++ Source/WebCore/dom/EntityReference.cpp
++ Source/WebCore/dom/EntityReference.h
++ Source/WebCore/dom/Event.cpp
++ Source/WebCore/dom/Event.h
++ Source/WebCore/dom/EventDispatcher.cpp
++ Source/WebCore/dom/EventDispatcher.h
++ Source/WebCore/dom/EventListener.h
++ Source/WebCore/dom/EventNames.cpp
++ Source/WebCore/dom/EventNames.h
++ Source/WebCore/dom/ExceptionCode.h
++ Source/WebCore/dom/HashChangeEvent.h
++ Source/WebCore/dom/InlineStyleSheetOwner.cpp
++ Source/WebCore/dom/InlineStyleSheetOwner.h
++ Source/WebCore/dom/KeyboardEvent.cpp
++ Source/WebCore/dom/KeyboardEvent.h
++ Source/WebCore/dom/LiveNodeList.cpp
++ Source/WebCore/dom/LiveNodeList.h
++ Source/WebCore/dom/MouseEvent.cpp
++ Source/WebCore/dom/MouseEvent.h
++ Source/WebCore/dom/MouseRelatedEvent.cpp
++ Source/WebCore/dom/MouseRelatedEvent.h
++ Source/WebCore/dom/MutationEvent.cpp
++ Source/WebCore/dom/MutationEvent.h
++ Source/WebCore/dom/NameNodeList.cpp
++ Source/WebCore/dom/NameNodeList.h
++ Source/WebCore/dom/NamedNodeMap.cpp
++ Source/WebCore/dom/NamedNodeMap.h
++ Source/WebCore/dom/Node.cpp
++ Source/WebCore/dom/Node.h
++ Source/WebCore/dom/NodeFilter.cpp
++ Source/WebCore/dom/NodeFilter.h
++ Source/WebCore/dom/NodeFilterCondition.cpp
++ Source/WebCore/dom/NodeFilterCondition.h
++ Source/WebCore/dom/NodeIterator.cpp
++ Source/WebCore/dom/NodeIterator.h
++ Source/WebCore/dom/NodeList.h
++ Source/WebCore/dom/NodeRareData.h
++ Source/WebCore/dom/NodeRenderStyle.h
++ Source/WebCore/dom/NodeTraversal.cpp
++ Source/WebCore/dom/NodeTraversal.h
++ Source/WebCore/dom/Notation.cpp
++ Source/WebCore/dom/Notation.h
++ Source/WebCore/dom/ProcessingInstruction.cpp
++ Source/WebCore/dom/ProcessingInstruction.h
++ Source/WebCore/dom/QualifiedName.cpp
++ Source/WebCore/dom/QualifiedName.h
++ Source/WebCore/dom/Range.cpp
++ Source/WebCore/dom/Range.h
++ Source/WebCore/dom/RangeException.h
++ Source/WebCore/dom/RegisteredEventListener.cpp
++ Source/WebCore/dom/RegisteredEventListener.h
++ Source/WebCore/dom/ScriptElement.cpp
++ Source/WebCore/dom/ScriptElement.h
++ Source/WebCore/dom/SimulatedClickOptions.h
++ Source/WebCore/dom/SpaceSplitString.cpp
++ Source/WebCore/dom/SpaceSplitString.h
++ Source/WebCore/dom/StyledElement.cpp
++ Source/WebCore/dom/StyledElement.h
++ Source/WebCore/dom/TagNodeList.cpp
++ Source/WebCore/dom/TagNodeList.h
++ Source/WebCore/dom/Text.cpp
++ Source/WebCore/dom/Text.h
++ Source/WebCore/dom/TransformSource.h
++ Source/WebCore/dom/Traversal.cpp
++ Source/WebCore/dom/Traversal.h
++ Source/WebCore/dom/TreeScopeAdopter.cpp
++ Source/WebCore/dom/TreeScopeAdopter.h
++ Source/WebCore/dom/TreeWalker.cpp
++ Source/WebCore/dom/TreeWalker.h
++ Source/WebCore/dom/UIEvent.cpp
++ Source/WebCore/dom/UIEvent.h
++ Source/WebCore/dom/UIEventWithKeyState.cpp
++ Source/WebCore/dom/UIEventWithKeyState.h
++ Source/WebCore/dom/ViewportArguments.cpp
++ Source/WebCore/dom/ViewportArguments.h
++ Source/WebCore/dom/VisitedLinkState.cpp
++ Source/WebCore/dom/VisitedLinkState.h
++ Source/WebCore/dom/WheelEvent.cpp
++ Source/WebCore/dom/WheelEvent.h
++ Source/WebCore/editing/EditingBehavior.h
++ Source/WebCore/editing/EditingBehaviorTypes.h
++ Source/WebCore/editing/TextCheckingHelper.h
++ Source/WebCore/editing/atk/*
++ Source/WebCore/html/*
++ Source/WebCore/loader/FrameNetworkingContext.h
++ Source/WebCore/loader/ImageLoader.cpp
++ Source/WebCore/loader/ImageLoader.h
++ Source/WebCore/loader/ResourceLoadScheduler.cpp
++ Source/WebCore/loader/ResourceLoadScheduler.h
++ Source/WebCore/loader/TextResourceDecoder.cpp
++ Source/WebCore/loader/TextResourceDecoder.h
++ Source/WebCore/loader/cache/*
++ Source/WebCore/loader/soup/*
++ Source/WebCore/page/Chrome.cpp
++ Source/WebCore/page/Chrome.h
++ Source/WebCore/page/ChromeClient.h
++ Source/WebCore/page/Frame.cpp
++ Source/WebCore/page/Frame.h
++ Source/WebCore/page/FrameTree.cpp
++ Source/WebCore/page/FrameTree.h
++ Source/WebCore/page/FrameView.cpp
++ Source/WebCore/page/FrameView.h
++ Source/WebCore/page/MouseEventWithHitTestResults.cpp
++ Source/WebCore/page/MouseEventWithHitTestResults.h
++ Source/WebCore/page/Navigator.cpp
++ Source/WebCore/page/Navigator.h
++ Source/WebCore/page/Page.cpp
++ Source/WebCore/page/Page.h
++ Source/WebCore/page/PageGroupLoadDeferrer.cpp
++ Source/WebCore/page/PageGroupLoadDeferrer.h
++ Source/WebCore/page/PrintContext.cpp
++ Source/WebCore/page/PrintContext.h
++ Source/WebCore/page/SpatialNavigation.h
++ Source/WebCore/page/WindowFeatures.cpp
++ Source/WebCore/platform/HashTools.h
++ Source/WebCore/platform/Length.cpp
++ Source/WebCore/platform/Length.h
++ Source/WebCore/platform/LengthBox.h
++ Source/WebCore/platform/LengthSize.h
++ Source/WebCore/platform/LinkHash.cpp
++ Source/WebCore/platform/PlatformTouchEvent.h
++ Source/WebCore/platform/PlatformTouchPoint.h
++ Source/WebCore/platform/PopupMenu.h
++ Source/WebCore/platform/PopupMenuClient.h
++ Source/WebCore/platform/SearchPopupMenu.h
++ Source/WebCore/platform/TreeShared.h
++ Source/WebCore/platform/animation/*
++ Source/WebCore/platform/audio/gstreamer/*
++ Source/WebCore/platform/audio/gtk/*
++ Source/WebCore/platform/cairo/*
++ Source/WebCore/platform/geoclue/GeolocationProviderGeoclue.h
++ Source/WebCore/platform/geoclue/GeolocationProviderGeoclueClient.h
++ Source/WebCore/platform/glib/*
++ Source/WebCore/platform/graphics/FloatPoint3D.cpp
++ Source/WebCore/platform/graphics/FloatPoint3D.h
++ Source/WebCore/platform/graphics/Font.cpp
++ Source/WebCore/platform/graphics/Font.h
++ Source/WebCore/platform/graphics/FontDescription.h
++ Source/WebCore/platform/graphics/FontFastPath.cpp
++ Source/WebCore/platform/graphics/FontGlyphs.h
++ Source/WebCore/platform/graphics/FontMetrics.h
++ Source/WebCore/platform/graphics/FontPlatformData.cpp
++ Source/WebCore/platform/graphics/FontPlatformData.h
++ Source/WebCore/platform/graphics/GLContext.cpp
++ Source/WebCore/platform/graphics/GLContext.h
++ Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp
++ Source/WebCore/platform/graphics/GraphicsContext3DPrivate.h
++ Source/WebCore/platform/graphics/GraphicsLayerAnimation.cpp
++ Source/WebCore/platform/graphics/GraphicsLayerAnimation.h
++ Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp
++ Source/WebCore/platform/graphics/GraphicsLayerTransform.h
++ Source/WebCore/platform/graphics/Icon.h
++ Source/WebCore/platform/graphics/IntPointHash.h
++ Source/WebCore/platform/graphics/IntSizeHash.h
++ Source/WebCore/platform/graphics/Latin1TextIterator.h
++ Source/WebCore/platform/graphics/PathTraversalState.cpp
++ Source/WebCore/platform/graphics/SVGGlyph.cpp
++ Source/WebCore/platform/graphics/SVGGlyph.h
++ Source/WebCore/platform/graphics/SimpleFontData.h
++ Source/WebCore/platform/graphics/StrokeStyleApplier.h
++ Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp
++ Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.h
++ Source/WebCore/platform/graphics/TextRun.h
++ Source/WebCore/platform/graphics/Tile.h
++ Source/WebCore/platform/graphics/TiledBackingStore.cpp
++ Source/WebCore/platform/graphics/TiledBackingStore.h
++ Source/WebCore/platform/graphics/TiledBackingStoreBackend.h
++ Source/WebCore/platform/graphics/TiledBackingStoreClient.h
++ Source/WebCore/platform/graphics/WidthIterator.cpp
++ Source/WebCore/platform/graphics/WidthIterator.h
++ Source/WebCore/platform/graphics/cairo/DrawErrorUnderline.h
++ Source/WebCore/platform/graphics/cairo/FontCustomPlatformData.h
++ Source/WebCore/platform/graphics/cairo/IntRectCairo.cpp
++ Source/WebCore/platform/graphics/cairo/OwnPtrCairo.cpp
++ Source/WebCore/platform/graphics/cairo/OwnPtrCairo.h
++ Source/WebCore/platform/graphics/cairo/PathCairo.cpp
++ Source/WebCore/platform/graphics/cairo/PlatformPathCairo.cpp
++ Source/WebCore/platform/graphics/cairo/PlatformPathCairo.h
++ Source/WebCore/platform/graphics/cairo/RefPtrCairo.cpp
++ Source/WebCore/platform/graphics/cairo/RefPtrCairo.h
++ Source/WebCore/platform/graphics/egl/*
++ Source/WebCore/platform/graphics/filters/*
++ Source/WebCore/platform/graphics/freetype/*
++ Source/WebCore/platform/graphics/glx/*
++ Source/WebCore/platform/graphics/gstreamer/*
++ Source/WebCore/platform/graphics/gtk/*
++ Source/WebCore/platform/graphics/surfaces/*
++ Source/WebCore/platform/graphics/texmap/*
++ Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
++ Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h
++ Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h
++ Source/WebCore/platform/graphics/texmap/coordinated/SurfaceUpdateInfo.h
++ Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp
++ Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.h
++ Source/WebCore/platform/graphics/transforms/*
++ Source/WebCore/platform/gtk/*
++ Source/WebCore/platform/image-decoders/ImageDecoder.cpp
++ Source/WebCore/platform/image-encoders/*
++ Source/WebCore/platform/network/FormData.cpp
++ Source/WebCore/platform/network/FormData.h
++ Source/WebCore/platform/network/FormDataBuilder.cpp
++ Source/WebCore/platform/network/FormDataBuilder.h
++ Source/WebCore/platform/network/HTTPStatusCodes.h
++ Source/WebCore/platform/network/NetworkingContext.h
++ Source/WebCore/platform/network/soup/CookieJarSoup.cpp
++ Source/WebCore/platform/network/soup/CookieStorageSoup.cpp
++ Source/WebCore/platform/network/soup/GUniquePtrSoup.h
++ Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
++ Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
++ Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp
++ Source/WebCore/platform/soup/SharedBufferSoup.cpp
++ Source/WebCore/platform/text/BidiContext.cpp
++ Source/WebCore/platform/text/BidiContext.h
++ Source/WebCore/platform/text/BidiResolver.h
++ Source/WebCore/platform/text/BidiRunList.h
++ Source/WebCore/platform/text/ParserUtilities.h
++ Source/WebCore/platform/text/SegmentedString.cpp
++ Source/WebCore/platform/text/SegmentedString.h
++ Source/WebCore/platform/text/TextBreakIterator.cpp
++ Source/WebCore/platform/text/TextBreakIterator.h
++ Source/WebCore/platform/text/TextBreakIteratorInternalICU.h
++ Source/WebCore/platform/text/enchant/*
++ Source/WebCore/platform/text/gtk/*
++ Source/WebCore/platform/text/wchar/*
++ Source/WebCore/plugins/DOMMimeType.cpp
++ Source/WebCore/plugins/DOMMimeType.h
++ Source/WebCore/plugins/DOMMimeTypeArray.cpp
++ Source/WebCore/plugins/DOMMimeTypeArray.h
++ Source/WebCore/plugins/DOMPlugin.cpp
++ Source/WebCore/plugins/DOMPlugin.h
++ Source/WebCore/plugins/DOMPluginArray.cpp
++ Source/WebCore/plugins/DOMPluginArray.h
++ Source/WebCore/plugins/PluginData.cpp
++ Source/WebCore/plugins/PluginData.h
++ Source/WebCore/rendering/*
++ Source/WebCore/rendering/line/*
++ Source/WebCore/rendering/style/*
++ Source/WebCore/rendering/svg/*
++ Source/WebCore/style/StyleFontSizeFunctions.cpp
++ Source/WebCore/style/StyleResolveForDocument.cpp
++ Source/WebCore/style/StyleResolveTree.cpp
++ Source/WebCore/svg/*
++ Source/WebCore/svg/graphics/SVGImageCache.cpp
++ Source/WebCore/svg/graphics/SVGImageCache.h
++ Source/WebCore/svg/graphics/SVGImageForContainer.cpp
++ Source/WebCore/svg/graphics/filters/*
++ Source/WebCore/svg/properties/*
++ Source/WebCore/xml/DOMParser.cpp
++ Source/WebCore/xml/DOMParser.h
++ Source/WebCore/xml/XMLHttpRequest.cpp
++ Source/WebCore/xml/XMLHttpRequest.h
++ Source/WebCore/xml/XMLSerializer.cpp
++ Source/WebCore/xml/XMLSerializer.h
++ Source/WebCore/xml/XSLImportRule.cpp
++ Source/WebCore/xml/XSLImportRule.h
++ Source/WebCore/xml/XSLStyleSheet.h
++ Source/WebCore/xml/XSLStyleSheetLibxslt.cpp
++ Source/WebCore/xml/XSLTProcessor.cpp
++ Source/WebCore/xml/XSLTProcessor.h
++ Source/WebCore/xml/XSLTProcessorLibxslt.cpp
++ Source/WebCore/xml/parser/XMLDocumentParser.cpp
++ Source/WebCore/xml/parser/XMLDocumentParser.h
++ Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp
++ Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp
++ Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.h
++ Source/WebKit2/Shared/Network/CustomProtocols/soup/*
++ Source/WebKit2/Shared/WebHitTestResult.cpp
++ Source/WebKit2/Shared/WebHitTestResult.h
++ Source/WebKit2/UIProcess/API/C/CoordinatedGraphics/*
++ Source/WebKit2/UIProcess/API/gtk/*
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedGraphicsScene.cpp
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedGraphicsScene.h
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp
++ Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h
++ Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.cpp
++ Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h
++ Source/WebKit2/UIProcess/DefaultUndoController.cpp
++ Source/WebKit2/UIProcess/DefaultUndoController.h
++ Source/WebKit2/UIProcess/Network/CustomProtocols/soup/*
++ Source/WebKit2/UIProcess/PageViewportControllerClient.h
++ Source/WebKit2/UIProcess/gtk/WebPopupMenuProxyGtk.h
++ Source/WebKit2/UIProcess/soup/*
++ Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitFramePrivate.h
++ Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorldPrivate.h
++ Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtensionPrivate.h
++ Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h
++ Source/WebKit2/WebProcess/WebCoreSupport/WebPopupMenu.cpp
++ Source/WebKit2/WebProcess/WebCoreSupport/WebPopupMenu.h
++ Source/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp
++ Source/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.h
++ Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp
++ Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h
++ Source/WebKit2/WebProcess/WebPage/TapHighlightController.cpp
++ Source/WebKit2/WebProcess/WebPage/TapHighlightController.h
++ Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
++ Source/WebKit2/WebProcess/WebPage/WebContextMenu.h
++ Source/WebKit2/WebProcess/gtk/*
++ Source/WebKit2/WebProcess/soup/*
++ Tools/DumpRenderTree/config.h
++ Tools/TestWebKitAPI/Tests/WTF/gobject/GMainLoopSource.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestBackForwardList.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspector.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h
++ Tools/TestWebKitAPI/gtk/WebKit2Gtk/*
++ Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp
++ Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h
++ Tools/gtk/*
++Copyright: © 2002-2014 Apple Inc. and others
++License: LGPL-2+
++
++Files: Source/WebCore/loader/FTPDirectoryParser.cpp
++ Source/WebCore/loader/FTPDirectoryParser.h
++Copyright: © 2002-2014 Apple Inc. and others
++License: LGPL-2.1
++
++Files: Source/WebCore/bridge/npruntime_internal.h
++ Source/WebCore/platform/graphics/OpenGLShims.cpp
++ Source/WebCore/platform/graphics/OpenGLShims.h
++ Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.cpp
++ Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.h
++ Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.h
++ Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.h
++ Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitFindController.h
++ Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.h
++ Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp
++ Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.h
++ Source/WebKit2/WebProcess/Cookies/soup/*
++ Source/WebKit2/WebProcess/InjectedBundle/API/gtk/*
++ Tools/TestWebKitAPI/Tests/WebKit2Gtk/*
++Copyright: © 2002-2014 Apple Inc. and others
++License: LGPL-2.1+
++
++Files: Source/JavaScriptCore/icu/unicode/*
++ Source/WTF/icu/unicode/*
++ Source/WebCore/icu/unicode/*
++ Source/WebCore/xml/XSLTExtensions.cpp
++Copyright: © 1995-2006 International Business Machines Corporation and others
++License: MIT-X11
++
++Files: Source/JavaScriptCore/runtime/JSDateMath.cpp
++ Source/JavaScriptCore/runtime/JSDateMath.h
++ Source/WTF/wtf/DateMath.cpp
++ Source/WTF/wtf/DateMath.h
++ Source/WebCore/html/HTMLDocument.cpp
++ Source/WebCore/platform/gtk/CursorGtk.h
++ Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp
++ Source/WebCore/platform/image-decoders/gif/GIFImageReader.h
++ Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
++ Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp
++ Source/WebCore/plugins/npapi.h
++ Source/WebCore/plugins/nptypes.h
++ Source/WebCore/rendering/RenderLayer.cpp
++ Source/WebCore/rendering/RenderLayer.h
++ Source/WebCore/rendering/RenderMarquee.cpp
++ Source/WebCore/rendering/RenderMarquee.h
++ Source/WebCore/rendering/ScrollBehavior.cpp
++ Source/WebCore/rendering/ScrollBehavior.h
++Copyright: © 2002-2014 Apple Inc. and others
++License: MPL-1.1 or GPL-2+ or LGPL-2.1+
++
++Files: Tools/TestWebKitAPI/Tests/WTF/MD5.cpp
++Copyright: No copyright holders
++License: public-domain
++ This code was written by Colin Plumb in 1993, no copyright is
++ claimed.
++ This code is in the public domain; do with it what you wish.
++
++Files: Source/ThirdParty/qunit/*
++Copyright: © 2011 John Resig, Jörn Zaefferer
++License: Expat or GPL-2
++
++License: BSD-2-clause
++ 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 following disclaimer.
++ 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.
++ .
++ THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
++
++License: BSD-3-clause
++ 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 following disclaimer.
++ 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 name of Ericsson nor the names of its contributors
++ may be used to endorse or promote products derived from this
++ software without specific prior written permission.
++ .
++ 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 COPYRIGHT
++ OWNER 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.
++
++License: Expat
++ Permission is hereby granted, free of charge, to any person obtaining
++ a copy of this software and associated documentation files (the
++ "Software"), to deal in the Software without restriction, including
++ without limitation the rights to use, copy, modify, merge, publish,
++ distribute, sublicense, and/or sell copies of the Software, and to
++ permit persons to whom the Software is furnished to do so, subject to
++ the following conditions:
++ .
++ The above copyright notice and this permission notice shall be
++ included in all copies or substantial portions of the Software.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ SOFTWARE.
++
++License: BSL
++ Permission is hereby granted, free of charge, to any person or
++ organization obtaining a copy of the software and accompanying
++ documentation covered by this license (the "Software") to use,
++ reproduce, display, distribute, execute, and transmit the Software,
++ and to prepare derivative works of the Software, and to permit
++ third-parties to whom the Software is furnished to do so, all subject
++ to the following:
++ .
++ The copyright notices in the Software and this entire statement,
++ including the above license grant, this restriction and the following
++ disclaimer, must be included in all copies of the Software, in whole
++ or in part, and all derivative works of the Software, unless such
++ copies or derivative works are solely in the form of
++ machine-executable object code generated by a source language
++ processor.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
++ NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
++ DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER
++ LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
++ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ THE SOFTWARE.
++
++License: LGPL-2
++ This module is free software; you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License version 2
++ as published by the Free Software Foundation.
++ .
++ This module is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/LGPL-2
++
++License: LGPL-2+
++ This module is free software; you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++ .
++ This module is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/LGPL-2
++
++License: LGPL-2.1
++ This module is free software; you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License version
++ 2.1 as published by the Free Software Foundation.
++ .
++ This module is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/LGPL-2.1
++
++License: LGPL-2.1+
++ This module is free software; you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++ .
++ This module is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/LGPL-2.1
++
++License: GPL-2
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License version 2 as
++ published by the Free Software Foundation.
++ .
++ This program is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/GPL-2
++
++License: GPL-2+
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or (at
++ your option) any later version.
++ .
++ This program is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/GPL-2
++
++License: GPL-3+
++ This program is free software: you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or (at
++ your option) any later version.
++ .
++ This program is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ General Public License for more details.
++ .
++ On Debian systems, the complete text of the license can be found in
++ the file /usr/share/common-licenses/GPL-3
++
++License: MIT-X11
++ Permission is hereby granted, free of charge, to any person obtaining
++ a copy of this software and associated documentation files (the
++ "Software"), to deal in the Software without restriction, including
++ without limitation the rights to use, copy, modify, merge, publish,
++ distribute, and/or sell copies of the Software, and to permit persons
++ to whom the Software is furnished to do so, provided that the above
++ copyright notice(s) and this permission notice appear in all copies
++ of the Software and that both the above copyright notice(s) and this
++ permission notice appear in supporting documentation.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
++ OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
++ HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
++ SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
++ RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
++ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
++ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ .
++ Except as contained in this notice, the name of a copyright holder
++ shall not be used in advertising or otherwise to promote the sale,
++ use or other dealings in this Software without prior written
++ authorization of the copyright holder.
++
++License: MPL-1.1
++ MOZILLA PUBLIC LICENSE
++ Version 1.1
++ .
++ ---------------
++ .
++ 1. Definitions.
++ .
++ 1.0.1. "Commercial Use" means distribution or otherwise making the
++ Covered Code available to a third party.
++ .
++ 1.1. "Contributor" means each entity that creates or contributes to
++ the creation of Modifications.
++ .
++ 1.2. "Contributor Version" means the combination of the Original
++ Code, prior Modifications used by a Contributor, and the Modifications
++ made by that particular Contributor.
++ .
++ 1.3. "Covered Code" means the Original Code or Modifications or the
++ combination of the Original Code and Modifications, in each case
++ including portions thereof.
++ .
++ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
++ accepted in the software development community for the electronic
++ transfer of data.
++ .
++ 1.5. "Executable" means Covered Code in any form other than Source
++ Code.
++ .
++ 1.6. "Initial Developer" means the individual or entity identified
++ as the Initial Developer in the Source Code notice required by Exhibit
++ A.
++ .
++ 1.7. "Larger Work" means a work which combines Covered Code or
++ portions thereof with code not governed by the terms of this License.
++ .
++ 1.8. "License" means this document.
++ .
++ 1.8.1. "Licensable" means having the right to grant, to the maximum
++ extent possible, whether at the time of the initial grant or
++ subsequently acquired, any and all of the rights conveyed herein.
++ .
++ 1.9. "Modifications" means any addition to or deletion from the
++ substance or structure of either the Original Code or any previous
++ Modifications. When Covered Code is released as a series of files, a
++ Modification is:
++ A. Any addition to or deletion from the contents of a file
++ containing Original Code or previous Modifications.
++ .
++ B. Any new file that contains any part of the Original Code or
++ previous Modifications.
++ .
++ 1.10. "Original Code" means Source Code of computer software code
++ which is described in the Source Code notice required by Exhibit A as
++ Original Code, and which, at the time of its release under this
++ License is not already Covered Code governed by this License.
++ .
++ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
++ hereafter acquired, including without limitation, method, process,
++ and apparatus claims, in any patent Licensable by grantor.
++ .
++ 1.11. "Source Code" means the preferred form of the Covered Code for
++ making modifications to it, including all modules it contains, plus
++ any associated interface definition files, scripts used to control
++ compilation and installation of an Executable, or source code
++ differential comparisons against either the Original Code or another
++ well known, available Covered Code of the Contributor's choice. The
++ Source Code can be in a compressed or archival form, provided the
++ appropriate decompression or de-archiving software is widely available
++ for no charge.
++ .
++ 1.12. "You" (or "Your") means an individual or a legal entity
++ exercising rights under, and complying with all of the terms of, this
++ License or a future version of this License issued under Section 6.1.
++ For legal entities, "You" includes any entity which controls, is
++ controlled by, or is under common control with You. For purposes of
++ this definition, "control" means (a) the power, direct or indirect,
++ to cause the direction or management of such entity, whether by
++ contract or otherwise, or (b) ownership of more than fifty percent
++ (50%) of the outstanding shares or beneficial ownership of such
++ entity.
++ .
++ 2. Source Code License.
++ .
++ 2.1. The Initial Developer Grant.
++ The Initial Developer hereby grants You a world-wide, royalty-free,
++ non-exclusive license, subject to third party intellectual property
++ claims:
++ (a) under intellectual property rights (other than patent or
++ trademark) Licensable by Initial Developer to use, reproduce,
++ modify, display, perform, sublicense and distribute the Original
++ Code (or portions thereof) with or without Modifications, and/or
++ as part of a Larger Work; and
++ .
++ (b) under Patents Claims infringed by the making, using or
++ selling of Original Code, to make, have made, use, practice,
++ sell, and offer for sale, and/or otherwise dispose of the
++ Original Code (or portions thereof).
++ .
++ (c) the licenses granted in this Section 2.1(a) and (b) are
++ effective on the date Initial Developer first distributes
++ Original Code under the terms of this License.
++ .
++ (d) Notwithstanding Section 2.1(b) above, no patent license is
++ granted: 1) for code that You delete from the Original Code; 2)
++ separate from the Original Code; or 3) for infringements caused
++ by: i) the modification of the Original Code or ii) the
++ combination of the Original Code with other software or devices.
++ .
++ 2.2. Contributor Grant.
++ Subject to third party intellectual property claims, each Contributor
++ hereby grants You a world-wide, royalty-free, non-exclusive license
++ .
++ (a) under intellectual property rights (other than patent or
++ trademark) Licensable by Contributor, to use, reproduce, modify,
++ display, perform, sublicense and distribute the Modifications
++ created by such Contributor (or portions thereof) either on an
++ unmodified basis, with other Modifications, as Covered Code
++ and/or as part of a Larger Work; and
++ .
++ (b) under Patent Claims infringed by the making, using, or
++ selling of Modifications made by that Contributor either alone
++ and/or in combination with its Contributor Version (or portions
++ of such combination), to make, use, sell, offer for sale, have
++ made, and/or otherwise dispose of: 1) Modifications made by that
++ Contributor (or portions thereof); and 2) the combination of
++ Modifications made by that Contributor with its Contributor
++ Version (or portions of such combination).
++ .
++ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
++ effective on the date Contributor first makes Commercial Use of
++ the Covered Code.
++ (d) Notwithstanding Section 2.2(b) above, no patent license is
++ granted: 1) for any code that Contributor has deleted from the
++ Contributor Version; 2) separate from the Contributor Version;
++ 3) for infringements caused by: i) third party modifications of
++ Contributor Version or ii) the combination of Modifications made
++ by that Contributor with other software (except as part of the
++ Contributor Version) or other devices; or 4) under Patent Claims
++ infringed by Covered Code in the absence of Modifications made by
++ that Contributor.
++ .
++ 3. Distribution Obligations.
++ .
++ 3.1. Application of License.
++ The Modifications which You create or to which You contribute are
++ governed by the terms of this License, including without limitation
++ Section 2.2. The Source Code version of Covered Code may be
++ distributed only under the terms of this License or a future version
++ of this License released under Section 6.1, and You must include a
++ copy of this License with every copy of the Source Code You
++ distribute. You may not offer or impose any terms on any Source Code
++ version that alters or restricts the applicable version of this
++ License or the recipients' rights hereunder. However, You may include
++ an additional document offering the additional rights described in
++ Section 3.5.
++ .
++ 3.2. Availability of Source Code.
++ Any Modification which You create or to which You contribute must be
++ made available in Source Code form under the terms of this License
++ either on the same media as an Executable version or via an accepted
++ Electronic Distribution Mechanism to anyone to whom you made an
++ Executable version available; and if made available via Electronic
++ Distribution Mechanism, must remain available for at least twelve (12)
++ months after the date it initially became available, or at least six
++ (6) months after a subsequent version of that particular Modification
++ has been made available to such recipients. You are responsible for
++ ensuring that the Source Code version remains available even if the
++ Electronic Distribution Mechanism is maintained by a third party.
++ .
++ 3.3. Description of Modifications.
++ You must cause all Covered Code to which You contribute to contain a
++ file documenting the changes You made to create that Covered Code and
++ the date of any change. You must include a prominent statement that
++ the Modification is derived, directly or indirectly, from Original
++ Code provided by the Initial Developer and including the name of the
++ Initial Developer in (a) the Source Code, and (b) in any notice in an
++ Executable version or related documentation in which You describe the
++ origin or ownership of the Covered Code.
++ .
++ 3.4. Intellectual Property Matters
++ (a) Third Party Claims.
++ If Contributor has knowledge that a license under a third party's
++ intellectual property rights is required to exercise the rights
++ granted by such Contributor under Sections 2.1 or 2.2,
++ Contributor must include a text file with the Source Code
++ distribution titled "LEGAL" which describes the claim and the
++ party making the claim in sufficient detail that a recipient will
++ know whom to contact. If Contributor obtains such knowledge after
++ the Modification is made available as described in Section 3.2,
++ Contributor shall promptly modify the LEGAL file in all copies
++ Contributor makes available thereafter and shall take other steps
++ (such as notifying appropriate mailing lists or newsgroups)
++ reasonably calculated to inform those who received the Covered
++ Code that new knowledge has been obtained.
++ .
++ (b) Contributor APIs.
++ If Contributor's Modifications include an application programming
++ interface and Contributor has knowledge of patent licenses which
++ are reasonably necessary to implement that API, Contributor must
++ also include this information in the LEGAL file.
++ .
++ (c) Representations.
++ Contributor represents that, except as disclosed pursuant to
++ Section 3.4(a) above, Contributor believes that Contributor's
++ Modifications are Contributor's original creation(s) and/or
++ Contributor has sufficient rights to grant the rights conveyed by
++ this License.
++ .
++ 3.5. Required Notices.
++ You must duplicate the notice in Exhibit A in each file of the Source
++ Code. If it is not possible to put such notice in a particular Source
++ Code file due to its structure, then You must include such notice in a
++ location (such as a relevant directory) where a user would be likely
++ to look for such a notice. If You created one or more Modification(s)
++ You may add your name as a Contributor to the notice described in
++ Exhibit A. You must also duplicate this License in any documentation
++ for the Source Code where You describe recipients' rights or ownership
++ rights relating to Covered Code. You may choose to offer, and to
++ charge a fee for, warranty, support, indemnity or liability
++ obligations to one or more recipients of Covered Code. However, You
++ may do so only on Your own behalf, and not on behalf of the Initial
++ Developer or any Contributor. You must make it absolutely clear than
++ any such warranty, support, indemnity or liability obligation is
++ offered by You alone, and You hereby agree to indemnify the Initial
++ Developer and every Contributor for any liability incurred by the
++ Initial Developer or such Contributor as a result of warranty,
++ support, indemnity or liability terms You offer.
++ .
++ 3.6. Distribution of Executable Versions.
++ You may distribute Covered Code in Executable form only if the
++ requirements of Section 3.1-3.5 have been met for that Covered Code,
++ and if You include a notice stating that the Source Code version of
++ the Covered Code is available under the terms of this License,
++ including a description of how and where You have fulfilled the
++ obligations of Section 3.2. The notice must be conspicuously included
++ in any notice in an Executable version, related documentation or
++ collateral in which You describe recipients' rights relating to the
++ Covered Code. You may distribute the Executable version of Covered
++ Code or ownership rights under a license of Your choice, which may
++ contain terms different from this License, provided that You are in
++ compliance with the terms of this License and that the license for the
++ Executable version does not attempt to limit or alter the recipient's
++ rights in the Source Code version from the rights set forth in this
++ License. If You distribute the Executable version under a different
++ license You must make it absolutely clear that any terms which differ
++ from this License are offered by You alone, not by the Initial
++ Developer or any Contributor. You hereby agree to indemnify the
++ Initial Developer and every Contributor for any liability incurred by
++ the Initial Developer or such Contributor as a result of any such
++ terms You offer.
++ .
++ 3.7. Larger Works.
++ You may create a Larger Work by combining Covered Code with other code
++ not governed by the terms of this License and distribute the Larger
++ Work as a single product. In such a case, You must make sure the
++ requirements of this License are fulfilled for the Covered Code.
++ .
++ 4. Inability to Comply Due to Statute or Regulation.
++ .
++ If it is impossible for You to comply with any of the terms of this
++ License with respect to some or all of the Covered Code due to
++ statute, judicial order, or regulation then You must: (a) comply with
++ the terms of this License to the maximum extent possible; and (b)
++ describe the limitations and the code they affect. Such description
++ must be included in the LEGAL file described in Section 3.4 and must
++ be included with all distributions of the Source Code. Except to the
++ extent prohibited by statute or regulation, such description must be
++ sufficiently detailed for a recipient of ordinary skill to be able to
++ understand it.
++ .
++ 5. Application of this License.
++ .
++ This License applies to code to which the Initial Developer has
++ attached the notice in Exhibit A and to related Covered Code.
++ .
++ 6. Versions of the License.
++ .
++ 6.1. New Versions.
++ Netscape Communications Corporation ("Netscape") may publish revised
++ and/or new versions of the License from time to time. Each version
++ will be given a distinguishing version number.
++ .
++ 6.2. Effect of New Versions.
++ Once Covered Code has been published under a particular version of the
++ License, You may always continue to use it under the terms of that
++ version. You may also choose to use such Covered Code under the terms
++ of any subsequent version of the License published by Netscape. No one
++ other than Netscape has the right to modify the terms applicable to
++ Covered Code created under this License.
++ .
++ 6.3. Derivative Works.
++ If You create or use a modified version of this License (which you may
++ only do in order to apply it to code which is not already Covered Code
++ governed by this License), You must (a) rename Your license so that
++ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
++ "MPL", "NPL" or any confusingly similar phrase do not appear in your
++ license (except to note that your license differs from this License)
++ and (b) otherwise make it clear that Your version of the license
++ contains terms which differ from the Mozilla Public License and
++ Netscape Public License. (Filling in the name of the Initial
++ Developer, Original Code or Contributor in the notice described in
++ Exhibit A shall not of themselves be deemed to be modifications of
++ this License.)
++ .
++ 7. DISCLAIMER OF WARRANTY.
++ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
++ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
++ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
++ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
++ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
++ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
++ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
++ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
++ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
++ .
++ 8. TERMINATION.
++ .
++ 8.1. This License and the rights granted hereunder will terminate
++ automatically if You fail to comply with terms herein and fail to cure
++ such breach within 30 days of becoming aware of the breach. All
++ sublicenses to the Covered Code which are properly granted shall
++ survive any termination of this License. Provisions which, by their
++ nature, must remain in effect beyond the termination of this License
++ shall survive.
++ .
++ 8.2. If You initiate litigation by asserting a patent infringement
++ claim (excluding declatory judgment actions) against Initial Developer
++ or a Contributor (the Initial Developer or Contributor against whom
++ You file such action is referred to as "Participant") alleging that:
++ .
++ (a) such Participant's Contributor Version directly or indirectly
++ infringes any patent, then any and all rights granted by such
++ Participant to You under Sections 2.1 and/or 2.2 of this License
++ shall, upon 60 days notice from Participant terminate prospectively,
++ unless if within 60 days after receipt of notice You either: (i)
++ agree in writing to pay Participant a mutually agreeable reasonable
++ royalty for Your past and future use of Modifications made by such
++ Participant, or (ii) withdraw Your litigation claim with respect to
++ the Contributor Version against such Participant. If within 60 days
++ of notice, a reasonable royalty and payment arrangement are not
++ mutually agreed upon in writing by the parties or the litigation claim
++ is not withdrawn, the rights granted by Participant to You under
++ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
++ the 60 day notice period specified above.
++ .
++ (b) any software, hardware, or device, other than such Participant's
++ Contributor Version, directly or indirectly infringes any patent, then
++ any rights granted to You by such Participant under Sections 2.1(b)
++ and 2.2(b) are revoked effective as of the date You first made, used,
++ sold, distributed, or had made, Modifications made by that
++ Participant.
++ .
++ 8.3. If You assert a patent infringement claim against Participant
++ alleging that such Participant's Contributor Version directly or
++ indirectly infringes any patent where such claim is resolved (such as
++ by license or settlement) prior to the initiation of patent
++ infringement litigation, then the reasonable value of the licenses
++ granted by such Participant under Sections 2.1 or 2.2 shall be taken
++ into account in determining the amount or value of any payment or
++ license.
++ .
++ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
++ all end user license agreements (excluding distributors and resellers)
++ which have been validly granted by You or any distributor hereunder
++ prior to termination shall survive termination.
++ .
++ 9. LIMITATION OF LIABILITY.
++ .
++ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
++ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
++ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
++ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
++ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
++ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
++ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
++ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
++ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
++ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
++ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
++ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
++ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
++ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
++ .
++ 10. U.S. GOVERNMENT END USERS.
++ .
++ The Covered Code is a "commercial item," as that term is defined in
++ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
++ software" and "commercial computer software documentation," as such
++ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
++ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
++ all U.S. Government End Users acquire Covered Code with only those
++ rights set forth herein.
++ .
++ 11. MISCELLANEOUS.
++ .
++ This License represents the complete agreement concerning subject
++ matter hereof. If any provision of this License is held to be
++ unenforceable, such provision shall be reformed only to the extent
++ necessary to make it enforceable. This License shall be governed by
++ California law provisions (except to the extent applicable law, if
++ any, provides otherwise), excluding its conflict-of-law provisions.
++ With respect to disputes in which at least one party is a citizen of,
++ or an entity chartered or registered to do business in the United
++ States of America, any litigation relating to this License shall be
++ subject to the jurisdiction of the Federal Courts of the Northern
++ District of California, with venue lying in Santa Clara County,
++ California, with the losing party responsible for costs, including
++ without limitation, court costs and reasonable attorneys' fees and
++ expenses. The application of the United Nations Convention on
++ Contracts for the International Sale of Goods is expressly excluded.
++ Any law or regulation which provides that the language of a contract
++ shall be construed against the drafter shall not apply to this
++ License.
++ .
++ 12. RESPONSIBILITY FOR CLAIMS.
++ .
++ As between Initial Developer and the Contributors, each party is
++ responsible for claims and damages arising, directly or indirectly,
++ out of its utilization of rights under this License and You agree to
++ work with Initial Developer and Contributors to distribute such
++ responsibility on an equitable basis. Nothing herein is intended or
++ shall be deemed to constitute any admission of liability.
++ .
++ 13. MULTIPLE-LICENSED CODE.
++ .
++ Initial Developer may designate portions of the Covered Code as
++ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
++ Developer permits you to utilize portions of the Covered Code under
++ Your choice of the NPL or the alternative licenses, if any, specified
++ by the Initial Developer in the file described in Exhibit A.
++ .
++ EXHIBIT A -Mozilla Public License.
++ .
++ ``The contents of this file are subject to the Mozilla Public License
++ Version 1.1 (the "License"); you may not use this file except in
++ compliance with the License. You may obtain a copy of the License at
++ http://www.mozilla.org/MPL/
++ .
++ Software distributed under the License is distributed on an "AS IS"
++ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
++ License for the specific language governing rights and limitations
++ under the License.
++ .
++ The Original Code is ______________________________________.
++ .
++ The Initial Developer of the Original Code is ________________________.
++ Portions created by ______________________ are Copyright (C) ______
++ _______________________. All Rights Reserved.
++ .
++ Contributor(s): ______________________________________.
++ .
++ Alternatively, the contents of this file may be used under the terms
++ of the _____ license (the "[___] License"), in which case the
++ provisions of [______] License are applicable instead of those
++ above. If you wish to allow use of your version of this file only
++ under the terms of the [____] License and not to allow others to use
++ your version of this file under the MPL, indicate your decision by
++ deleting the provisions above and replace them with the notice and
++ other provisions required by the [___] License. If you do not delete
++ the provisions above, a recipient may use your version of this file
++ under either the MPL or the [___] License."
++ .
++ [NOTE: The text of this Exhibit A may differ slightly from the text of
++ the notices in the Source Code files of the Original Code. You should
++ use the text of this Exhibit A rather than the text found in the
++ Original Code Source Code for Your Modifications.]
++
++License: Apache-2.0
++ On Debian systems, the full text of the Apache license version 2 can
++ be found in the file `/usr/share/common-licenses/Apache-2.0'.
++
++License: ISC
++ Permission to use, copy, modify, and distribute this software for any
++ purpose with or without fee is hereby granted, provided that the
++ above copyright notice and this permission notice appear in all
++ copies.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
++ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
++ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
++ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
++ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
++ PERFORMANCE OF THIS SOFTWARE.
--- /dev/null
--- /dev/null
++[DEFAULT]
++debian-branch = experimental
++upstream-branch = webkitgtk-2.6
++pristine-tar = False
++compression = xz
--- /dev/null
--- /dev/null
++usr/lib/*/girepository-1.0/JavaScriptCore-4.0.typelib
--- /dev/null
--- /dev/null
++usr/lib/*/girepository-1.0/WebKit2-4.0.typelib
++usr/lib/*/girepository-1.0/WebKit2WebExtension-4.0.typelib
--- /dev/null
--- /dev/null
++/*!
++ * jQuery JavaScript Library v1.9.1
++ * http://jquery.com/
++ *
++ * Includes Sizzle.js
++ * http://sizzlejs.com/
++ *
++ * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
++ * Released under the MIT license
++ * http://jquery.org/license
++ *
++ * Date: 2013-2-4
++ */
++(function( window, undefined ) {
++
++// Can't do this because several apps including ASP.NET trace
++// the stack via arguments.caller.callee and Firefox dies if
++// you try to trace through "use strict" call chains. (#13335)
++// Support: Firefox 18+
++//"use strict";
++var
++ // The deferred used on DOM ready
++ readyList,
++
++ // A central reference to the root jQuery(document)
++ rootjQuery,
++
++ // Support: IE<9
++ // For `typeof node.method` instead of `node.method !== undefined`
++ core_strundefined = typeof undefined,
++
++ // Use the correct document accordingly with window argument (sandbox)
++ document = window.document,
++ location = window.location,
++
++ // Map over jQuery in case of overwrite
++ _jQuery = window.jQuery,
++
++ // Map over the $ in case of overwrite
++ _$ = window.$,
++
++ // [[Class]] -> type pairs
++ class2type = {},
++
++ // List of deleted data cache ids, so we can reuse them
++ core_deletedIds = [],
++
++ core_version = "1.9.1",
++
++ // Save a reference to some core methods
++ core_concat = core_deletedIds.concat,
++ core_push = core_deletedIds.push,
++ core_slice = core_deletedIds.slice,
++ core_indexOf = core_deletedIds.indexOf,
++ core_toString = class2type.toString,
++ core_hasOwn = class2type.hasOwnProperty,
++ core_trim = core_version.trim,
++
++ // Define a local copy of jQuery
++ jQuery = function( selector, context ) {
++ // The jQuery object is actually just the init constructor 'enhanced'
++ return new jQuery.fn.init( selector, context, rootjQuery );
++ },
++
++ // Used for matching numbers
++ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
++
++ // Used for splitting on whitespace
++ core_rnotwhite = /\S+/g,
++
++ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
++ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
++
++ // A simple way to check for HTML strings
++ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
++ // Strict HTML recognition (#11290: must start with <)
++ rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
++
++ // Match a standalone tag
++ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
++
++ // JSON RegExp
++ rvalidchars = /^[\],:{}\s]*$/,
++ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
++ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
++ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
++
++ // Matches dashed string for camelizing
++ rmsPrefix = /^-ms-/,
++ rdashAlpha = /-([\da-z])/gi,
++
++ // Used by jQuery.camelCase as callback to replace()
++ fcamelCase = function( all, letter ) {
++ return letter.toUpperCase();
++ },
++
++ // The ready event handler
++ completed = function( event ) {
++
++ // readyState === "complete" is good enough for us to call the dom ready in oldIE
++ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
++ detach();
++ jQuery.ready();
++ }
++ },
++ // Clean-up method for dom ready events
++ detach = function() {
++ if ( document.addEventListener ) {
++ document.removeEventListener( "DOMContentLoaded", completed, false );
++ window.removeEventListener( "load", completed, false );
++
++ } else {
++ document.detachEvent( "onreadystatechange", completed );
++ window.detachEvent( "onload", completed );
++ }
++ };
++
++jQuery.fn = jQuery.prototype = {
++ // The current version of jQuery being used
++ jquery: core_version,
++
++ constructor: jQuery,
++ init: function( selector, context, rootjQuery ) {
++ var match, elem;
++
++ // HANDLE: $(""), $(null), $(undefined), $(false)
++ if ( !selector ) {
++ return this;
++ }
++
++ // Handle HTML strings
++ if ( typeof selector === "string" ) {
++ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
++ // Assume that strings that start and end with <> are HTML and skip the regex check
++ match = [ null, selector, null ];
++
++ } else {
++ match = rquickExpr.exec( selector );
++ }
++
++ // Match html or make sure no context is specified for #id
++ if ( match && (match[1] || !context) ) {
++
++ // HANDLE: $(html) -> $(array)
++ if ( match[1] ) {
++ context = context instanceof jQuery ? context[0] : context;
++
++ // scripts is true for back-compat
++ jQuery.merge( this, jQuery.parseHTML(
++ match[1],
++ context && context.nodeType ? context.ownerDocument || context : document,
++ true
++ ) );
++
++ // HANDLE: $(html, props)
++ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
++ for ( match in context ) {
++ // Properties of context are called as methods if possible
++ if ( jQuery.isFunction( this[ match ] ) ) {
++ this[ match ]( context[ match ] );
++
++ // ...and otherwise set as attributes
++ } else {
++ this.attr( match, context[ match ] );
++ }
++ }
++ }
++
++ return this;
++
++ // HANDLE: $(#id)
++ } else {
++ elem = document.getElementById( match[2] );
++
++ // Check parentNode to catch when Blackberry 4.6 returns
++ // nodes that are no longer in the document #6963
++ if ( elem && elem.parentNode ) {
++ // Handle the case where IE and Opera return items
++ // by name instead of ID
++ if ( elem.id !== match[2] ) {
++ return rootjQuery.find( selector );
++ }
++
++ // Otherwise, we inject the element directly into the jQuery object
++ this.length = 1;
++ this[0] = elem;
++ }
++
++ this.context = document;
++ this.selector = selector;
++ return this;
++ }
++
++ // HANDLE: $(expr, $(...))
++ } else if ( !context || context.jquery ) {
++ return ( context || rootjQuery ).find( selector );
++
++ // HANDLE: $(expr, context)
++ // (which is just equivalent to: $(context).find(expr)
++ } else {
++ return this.constructor( context ).find( selector );
++ }
++
++ // HANDLE: $(DOMElement)
++ } else if ( selector.nodeType ) {
++ this.context = this[0] = selector;
++ this.length = 1;
++ return this;
++
++ // HANDLE: $(function)
++ // Shortcut for document ready
++ } else if ( jQuery.isFunction( selector ) ) {
++ return rootjQuery.ready( selector );
++ }
++
++ if ( selector.selector !== undefined ) {
++ this.selector = selector.selector;
++ this.context = selector.context;
++ }
++
++ return jQuery.makeArray( selector, this );
++ },
++
++ // Start with an empty selector
++ selector: "",
++
++ // The default length of a jQuery object is 0
++ length: 0,
++
++ // The number of elements contained in the matched element set
++ size: function() {
++ return this.length;
++ },
++
++ toArray: function() {
++ return core_slice.call( this );
++ },
++
++ // Get the Nth element in the matched element set OR
++ // Get the whole matched element set as a clean array
++ get: function( num ) {
++ return num == null ?
++
++ // Return a 'clean' array
++ this.toArray() :
++
++ // Return just the object
++ ( num < 0 ? this[ this.length + num ] : this[ num ] );
++ },
++
++ // Take an array of elements and push it onto the stack
++ // (returning the new matched element set)
++ pushStack: function( elems ) {
++
++ // Build a new jQuery matched element set
++ var ret = jQuery.merge( this.constructor(), elems );
++
++ // Add the old object onto the stack (as a reference)
++ ret.prevObject = this;
++ ret.context = this.context;
++
++ // Return the newly-formed element set
++ return ret;
++ },
++
++ // Execute a callback for every element in the matched set.
++ // (You can seed the arguments with an array of args, but this is
++ // only used internally.)
++ each: function( callback, args ) {
++ return jQuery.each( this, callback, args );
++ },
++
++ ready: function( fn ) {
++ // Add the callback
++ jQuery.ready.promise().done( fn );
++
++ return this;
++ },
++
++ slice: function() {
++ return this.pushStack( core_slice.apply( this, arguments ) );
++ },
++
++ first: function() {
++ return this.eq( 0 );
++ },
++
++ last: function() {
++ return this.eq( -1 );
++ },
++
++ eq: function( i ) {
++ var len = this.length,
++ j = +i + ( i < 0 ? len : 0 );
++ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
++ },
++
++ map: function( callback ) {
++ return this.pushStack( jQuery.map(this, function( elem, i ) {
++ return callback.call( elem, i, elem );
++ }));
++ },
++
++ end: function() {
++ return this.prevObject || this.constructor(null);
++ },
++
++ // For internal use only.
++ // Behaves like an Array's method, not like a jQuery method.
++ push: core_push,
++ sort: [].sort,
++ splice: [].splice
++};
++
++// Give the init function the jQuery prototype for later instantiation
++jQuery.fn.init.prototype = jQuery.fn;
++
++jQuery.extend = jQuery.fn.extend = function() {
++ var src, copyIsArray, copy, name, options, clone,
++ target = arguments[0] || {},
++ i = 1,
++ length = arguments.length,
++ deep = false;
++
++ // Handle a deep copy situation
++ if ( typeof target === "boolean" ) {
++ deep = target;
++ target = arguments[1] || {};
++ // skip the boolean and the target
++ i = 2;
++ }
++
++ // Handle case when target is a string or something (possible in deep copy)
++ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
++ target = {};
++ }
++
++ // extend jQuery itself if only one argument is passed
++ if ( length === i ) {
++ target = this;
++ --i;
++ }
++
++ for ( ; i < length; i++ ) {
++ // Only deal with non-null/undefined values
++ if ( (options = arguments[ i ]) != null ) {
++ // Extend the base object
++ for ( name in options ) {
++ src = target[ name ];
++ copy = options[ name ];
++
++ // Prevent never-ending loop
++ if ( target === copy ) {
++ continue;
++ }
++
++ // Recurse if we're merging plain objects or arrays
++ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
++ if ( copyIsArray ) {
++ copyIsArray = false;
++ clone = src && jQuery.isArray(src) ? src : [];
++
++ } else {
++ clone = src && jQuery.isPlainObject(src) ? src : {};
++ }
++
++ // Never move original objects, clone them
++ target[ name ] = jQuery.extend( deep, clone, copy );
++
++ // Don't bring in undefined values
++ } else if ( copy !== undefined ) {
++ target[ name ] = copy;
++ }
++ }
++ }
++ }
++
++ // Return the modified object
++ return target;
++};
++
++jQuery.extend({
++ noConflict: function( deep ) {
++ if ( window.$ === jQuery ) {
++ window.$ = _$;
++ }
++
++ if ( deep && window.jQuery === jQuery ) {
++ window.jQuery = _jQuery;
++ }
++
++ return jQuery;
++ },
++
++ // Is the DOM ready to be used? Set to true once it occurs.
++ isReady: false,
++
++ // A counter to track how many items to wait for before
++ // the ready event fires. See #6781
++ readyWait: 1,
++
++ // Hold (or release) the ready event
++ holdReady: function( hold ) {
++ if ( hold ) {
++ jQuery.readyWait++;
++ } else {
++ jQuery.ready( true );
++ }
++ },
++
++ // Handle when the DOM is ready
++ ready: function( wait ) {
++
++ // Abort if there are pending holds or we're already ready
++ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
++ return;
++ }
++
++ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
++ if ( !document.body ) {
++ return setTimeout( jQuery.ready );
++ }
++
++ // Remember that the DOM is ready
++ jQuery.isReady = true;
++
++ // If a normal DOM Ready event fired, decrement, and wait if need be
++ if ( wait !== true && --jQuery.readyWait > 0 ) {
++ return;
++ }
++
++ // If there are functions bound, to execute
++ readyList.resolveWith( document, [ jQuery ] );
++
++ // Trigger any bound ready events
++ if ( jQuery.fn.trigger ) {
++ jQuery( document ).trigger("ready").off("ready");
++ }
++ },
++
++ // See test/unit/core.js for details concerning isFunction.
++ // Since version 1.3, DOM methods and functions like alert
++ // aren't supported. They return false on IE (#2968).
++ isFunction: function( obj ) {
++ return jQuery.type(obj) === "function";
++ },
++
++ isArray: Array.isArray || function( obj ) {
++ return jQuery.type(obj) === "array";
++ },
++
++ isWindow: function( obj ) {
++ return obj != null && obj == obj.window;
++ },
++
++ isNumeric: function( obj ) {
++ return !isNaN( parseFloat(obj) ) && isFinite( obj );
++ },
++
++ type: function( obj ) {
++ if ( obj == null ) {
++ return String( obj );
++ }
++ return typeof obj === "object" || typeof obj === "function" ?
++ class2type[ core_toString.call(obj) ] || "object" :
++ typeof obj;
++ },
++
++ isPlainObject: function( obj ) {
++ // Must be an Object.
++ // Because of IE, we also have to check the presence of the constructor property.
++ // Make sure that DOM nodes and window objects don't pass through, as well
++ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
++ return false;
++ }
++
++ try {
++ // Not own constructor property must be Object
++ if ( obj.constructor &&
++ !core_hasOwn.call(obj, "constructor") &&
++ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
++ return false;
++ }
++ } catch ( e ) {
++ // IE8,9 Will throw exceptions on certain host objects #9897
++ return false;
++ }
++
++ // Own properties are enumerated firstly, so to speed up,
++ // if last one is own, then all properties are own.
++
++ var key;
++ for ( key in obj ) {}
++
++ return key === undefined || core_hasOwn.call( obj, key );
++ },
++
++ isEmptyObject: function( obj ) {
++ var name;
++ for ( name in obj ) {
++ return false;
++ }
++ return true;
++ },
++
++ error: function( msg ) {
++ throw new Error( msg );
++ },
++
++ // data: string of html
++ // context (optional): If specified, the fragment will be created in this context, defaults to document
++ // keepScripts (optional): If true, will include scripts passed in the html string
++ parseHTML: function( data, context, keepScripts ) {
++ if ( !data || typeof data !== "string" ) {
++ return null;
++ }
++ if ( typeof context === "boolean" ) {
++ keepScripts = context;
++ context = false;
++ }
++ context = context || document;
++
++ var parsed = rsingleTag.exec( data ),
++ scripts = !keepScripts && [];
++
++ // Single tag
++ if ( parsed ) {
++ return [ context.createElement( parsed[1] ) ];
++ }
++
++ parsed = jQuery.buildFragment( [ data ], context, scripts );
++ if ( scripts ) {
++ jQuery( scripts ).remove();
++ }
++ return jQuery.merge( [], parsed.childNodes );
++ },
++
++ parseJSON: function( data ) {
++ // Attempt to parse using the native JSON parser first
++ if ( window.JSON && window.JSON.parse ) {
++ return window.JSON.parse( data );
++ }
++
++ if ( data === null ) {
++ return data;
++ }
++
++ if ( typeof data === "string" ) {
++
++ // Make sure leading/trailing whitespace is removed (IE can't handle it)
++ data = jQuery.trim( data );
++
++ if ( data ) {
++ // Make sure the incoming data is actual JSON
++ // Logic borrowed from http://json.org/json2.js
++ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
++ .replace( rvalidtokens, "]" )
++ .replace( rvalidbraces, "")) ) {
++
++ return ( new Function( "return " + data ) )();
++ }
++ }
++ }
++
++ jQuery.error( "Invalid JSON: " + data );
++ },
++
++ // Cross-browser xml parsing
++ parseXML: function( data ) {
++ var xml, tmp;
++ if ( !data || typeof data !== "string" ) {
++ return null;
++ }
++ try {
++ if ( window.DOMParser ) { // Standard
++ tmp = new DOMParser();
++ xml = tmp.parseFromString( data , "text/xml" );
++ } else { // IE
++ xml = new ActiveXObject( "Microsoft.XMLDOM" );
++ xml.async = "false";
++ xml.loadXML( data );
++ }
++ } catch( e ) {
++ xml = undefined;
++ }
++ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
++ jQuery.error( "Invalid XML: " + data );
++ }
++ return xml;
++ },
++
++ noop: function() {},
++
++ // Evaluates a script in a global context
++ // Workarounds based on findings by Jim Driscoll
++ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
++ globalEval: function( data ) {
++ if ( data && jQuery.trim( data ) ) {
++ // We use execScript on Internet Explorer
++ // We use an anonymous function so that context is window
++ // rather than jQuery in Firefox
++ ( window.execScript || function( data ) {
++ window[ "eval" ].call( window, data );
++ } )( data );
++ }
++ },
++
++ // Convert dashed to camelCase; used by the css and data modules
++ // Microsoft forgot to hump their vendor prefix (#9572)
++ camelCase: function( string ) {
++ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
++ },
++
++ nodeName: function( elem, name ) {
++ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
++ },
++
++ // args is for internal usage only
++ each: function( obj, callback, args ) {
++ var value,
++ i = 0,
++ length = obj.length,
++ isArray = isArraylike( obj );
++
++ if ( args ) {
++ if ( isArray ) {
++ for ( ; i < length; i++ ) {
++ value = callback.apply( obj[ i ], args );
++
++ if ( value === false ) {
++ break;
++ }
++ }
++ } else {
++ for ( i in obj ) {
++ value = callback.apply( obj[ i ], args );
++
++ if ( value === false ) {
++ break;
++ }
++ }
++ }
++
++ // A special, fast, case for the most common use of each
++ } else {
++ if ( isArray ) {
++ for ( ; i < length; i++ ) {
++ value = callback.call( obj[ i ], i, obj[ i ] );
++
++ if ( value === false ) {
++ break;
++ }
++ }
++ } else {
++ for ( i in obj ) {
++ value = callback.call( obj[ i ], i, obj[ i ] );
++
++ if ( value === false ) {
++ break;
++ }
++ }
++ }
++ }
++
++ return obj;
++ },
++
++ // Use native String.trim function wherever possible
++ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
++ function( text ) {
++ return text == null ?
++ "" :
++ core_trim.call( text );
++ } :
++
++ // Otherwise use our own trimming functionality
++ function( text ) {
++ return text == null ?
++ "" :
++ ( text + "" ).replace( rtrim, "" );
++ },
++
++ // results is for internal usage only
++ makeArray: function( arr, results ) {
++ var ret = results || [];
++
++ if ( arr != null ) {
++ if ( isArraylike( Object(arr) ) ) {
++ jQuery.merge( ret,
++ typeof arr === "string" ?
++ [ arr ] : arr
++ );
++ } else {
++ core_push.call( ret, arr );
++ }
++ }
++
++ return ret;
++ },
++
++ inArray: function( elem, arr, i ) {
++ var len;
++
++ if ( arr ) {
++ if ( core_indexOf ) {
++ return core_indexOf.call( arr, elem, i );
++ }
++
++ len = arr.length;
++ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
++
++ for ( ; i < len; i++ ) {
++ // Skip accessing in sparse arrays
++ if ( i in arr && arr[ i ] === elem ) {
++ return i;
++ }
++ }
++ }
++
++ return -1;
++ },
++
++ merge: function( first, second ) {
++ var l = second.length,
++ i = first.length,
++ j = 0;
++
++ if ( typeof l === "number" ) {
++ for ( ; j < l; j++ ) {
++ first[ i++ ] = second[ j ];
++ }
++ } else {
++ while ( second[j] !== undefined ) {
++ first[ i++ ] = second[ j++ ];
++ }
++ }
++
++ first.length = i;
++
++ return first;
++ },
++
++ grep: function( elems, callback, inv ) {
++ var retVal,
++ ret = [],
++ i = 0,
++ length = elems.length;
++ inv = !!inv;
++
++ // Go through the array, only saving the items
++ // that pass the validator function
++ for ( ; i < length; i++ ) {
++ retVal = !!callback( elems[ i ], i );
++ if ( inv !== retVal ) {
++ ret.push( elems[ i ] );
++ }
++ }
++
++ return ret;
++ },
++
++ // arg is for internal usage only
++ map: function( elems, callback, arg ) {
++ var value,
++ i = 0,
++ length = elems.length,
++ isArray = isArraylike( elems ),
++ ret = [];
++
++ // Go through the array, translating each of the items to their
++ if ( isArray ) {
++ for ( ; i < length; i++ ) {
++ value = callback( elems[ i ], i, arg );
++
++ if ( value != null ) {
++ ret[ ret.length ] = value;
++ }
++ }
++
++ // Go through every key on the object,
++ } else {
++ for ( i in elems ) {
++ value = callback( elems[ i ], i, arg );
++
++ if ( value != null ) {
++ ret[ ret.length ] = value;
++ }
++ }
++ }
++
++ // Flatten any nested arrays
++ return core_concat.apply( [], ret );
++ },
++
++ // A global GUID counter for objects
++ guid: 1,
++
++ // Bind a function to a context, optionally partially applying any
++ // arguments.
++ proxy: function( fn, context ) {
++ var args, proxy, tmp;
++
++ if ( typeof context === "string" ) {
++ tmp = fn[ context ];
++ context = fn;
++ fn = tmp;
++ }
++
++ // Quick check to determine if target is callable, in the spec
++ // this throws a TypeError, but we will just return undefined.
++ if ( !jQuery.isFunction( fn ) ) {
++ return undefined;
++ }
++
++ // Simulated bind
++ args = core_slice.call( arguments, 2 );
++ proxy = function() {
++ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
++ };
++
++ // Set the guid of unique handler to the same of original handler, so it can be removed
++ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
++
++ return proxy;
++ },
++
++ // Multifunctional method to get and set values of a collection
++ // The value/s can optionally be executed if it's a function
++ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
++ var i = 0,
++ length = elems.length,
++ bulk = key == null;
++
++ // Sets many values
++ if ( jQuery.type( key ) === "object" ) {
++ chainable = true;
++ for ( i in key ) {
++ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
++ }
++
++ // Sets one value
++ } else if ( value !== undefined ) {
++ chainable = true;
++
++ if ( !jQuery.isFunction( value ) ) {
++ raw = true;
++ }
++
++ if ( bulk ) {
++ // Bulk operations run against the entire set
++ if ( raw ) {
++ fn.call( elems, value );
++ fn = null;
++
++ // ...except when executing function values
++ } else {
++ bulk = fn;
++ fn = function( elem, key, value ) {
++ return bulk.call( jQuery( elem ), value );
++ };
++ }
++ }
++
++ if ( fn ) {
++ for ( ; i < length; i++ ) {
++ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
++ }
++ }
++ }
++
++ return chainable ?
++ elems :
++
++ // Gets
++ bulk ?
++ fn.call( elems ) :
++ length ? fn( elems[0], key ) : emptyGet;
++ },
++
++ now: function() {
++ return ( new Date() ).getTime();
++ }
++});
++
++jQuery.ready.promise = function( obj ) {
++ if ( !readyList ) {
++
++ readyList = jQuery.Deferred();
++
++ // Catch cases where $(document).ready() is called after the browser event has already occurred.
++ // we once tried to use readyState "interactive" here, but it caused issues like the one
++ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
++ if ( document.readyState === "complete" ) {
++ // Handle it asynchronously to allow scripts the opportunity to delay ready
++ setTimeout( jQuery.ready );
++
++ // Standards-based browsers support DOMContentLoaded
++ } else if ( document.addEventListener ) {
++ // Use the handy event callback
++ document.addEventListener( "DOMContentLoaded", completed, false );
++
++ // A fallback to window.onload, that will always work
++ window.addEventListener( "load", completed, false );
++
++ // If IE event model is used
++ } else {
++ // Ensure firing before onload, maybe late but safe also for iframes
++ document.attachEvent( "onreadystatechange", completed );
++
++ // A fallback to window.onload, that will always work
++ window.attachEvent( "onload", completed );
++
++ // If IE and not a frame
++ // continually check to see if the document is ready
++ var top = false;
++
++ try {
++ top = window.frameElement == null && document.documentElement;
++ } catch(e) {}
++
++ if ( top && top.doScroll ) {
++ (function doScrollCheck() {
++ if ( !jQuery.isReady ) {
++
++ try {
++ // Use the trick by Diego Perini
++ // http://javascript.nwbox.com/IEContentLoaded/
++ top.doScroll("left");
++ } catch(e) {
++ return setTimeout( doScrollCheck, 50 );
++ }
++
++ // detach all dom ready events
++ detach();
++
++ // and execute any waiting functions
++ jQuery.ready();
++ }
++ })();
++ }
++ }
++ }
++ return readyList.promise( obj );
++};
++
++// Populate the class2type map
++jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
++ class2type[ "[object " + name + "]" ] = name.toLowerCase();
++});
++
++function isArraylike( obj ) {
++ var length = obj.length,
++ type = jQuery.type( obj );
++
++ if ( jQuery.isWindow( obj ) ) {
++ return false;
++ }
++
++ if ( obj.nodeType === 1 && length ) {
++ return true;
++ }
++
++ return type === "array" || type !== "function" &&
++ ( length === 0 ||
++ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
++}
++
++// All jQuery objects should point back to these
++rootjQuery = jQuery(document);
++// String to Object options format cache
++var optionsCache = {};
++
++// Convert String-formatted options into Object-formatted ones and store in cache
++function createOptions( options ) {
++ var object = optionsCache[ options ] = {};
++ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
++ object[ flag ] = true;
++ });
++ return object;
++}
++
++/*
++ * Create a callback list using the following parameters:
++ *
++ * options: an optional list of space-separated options that will change how
++ * the callback list behaves or a more traditional option object
++ *
++ * By default a callback list will act like an event callback list and can be
++ * "fired" multiple times.
++ *
++ * Possible options:
++ *
++ * once: will ensure the callback list can only be fired once (like a Deferred)
++ *
++ * memory: will keep track of previous values and will call any callback added
++ * after the list has been fired right away with the latest "memorized"
++ * values (like a Deferred)
++ *
++ * unique: will ensure a callback can only be added once (no duplicate in the list)
++ *
++ * stopOnFalse: interrupt callings when a callback returns false
++ *
++ */
++jQuery.Callbacks = function( options ) {
++
++ // Convert options from String-formatted to Object-formatted if needed
++ // (we check in cache first)
++ options = typeof options === "string" ?
++ ( optionsCache[ options ] || createOptions( options ) ) :
++ jQuery.extend( {}, options );
++
++ var // Flag to know if list is currently firing
++ firing,
++ // Last fire value (for non-forgettable lists)
++ memory,
++ // Flag to know if list was already fired
++ fired,
++ // End of the loop when firing
++ firingLength,
++ // Index of currently firing callback (modified by remove if needed)
++ firingIndex,
++ // First callback to fire (used internally by add and fireWith)
++ firingStart,
++ // Actual callback list
++ list = [],
++ // Stack of fire calls for repeatable lists
++ stack = !options.once && [],
++ // Fire callbacks
++ fire = function( data ) {
++ memory = options.memory && data;
++ fired = true;
++ firingIndex = firingStart || 0;
++ firingStart = 0;
++ firingLength = list.length;
++ firing = true;
++ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
++ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
++ memory = false; // To prevent further calls using add
++ break;
++ }
++ }
++ firing = false;
++ if ( list ) {
++ if ( stack ) {
++ if ( stack.length ) {
++ fire( stack.shift() );
++ }
++ } else if ( memory ) {
++ list = [];
++ } else {
++ self.disable();
++ }
++ }
++ },
++ // Actual Callbacks object
++ self = {
++ // Add a callback or a collection of callbacks to the list
++ add: function() {
++ if ( list ) {
++ // First, we save the current length
++ var start = list.length;
++ (function add( args ) {
++ jQuery.each( args, function( _, arg ) {
++ var type = jQuery.type( arg );
++ if ( type === "function" ) {
++ if ( !options.unique || !self.has( arg ) ) {
++ list.push( arg );
++ }
++ } else if ( arg && arg.length && type !== "string" ) {
++ // Inspect recursively
++ add( arg );
++ }
++ });
++ })( arguments );
++ // Do we need to add the callbacks to the
++ // current firing batch?
++ if ( firing ) {
++ firingLength = list.length;
++ // With memory, if we're not firing then
++ // we should call right away
++ } else if ( memory ) {
++ firingStart = start;
++ fire( memory );
++ }
++ }
++ return this;
++ },
++ // Remove a callback from the list
++ remove: function() {
++ if ( list ) {
++ jQuery.each( arguments, function( _, arg ) {
++ var index;
++ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
++ list.splice( index, 1 );
++ // Handle firing indexes
++ if ( firing ) {
++ if ( index <= firingLength ) {
++ firingLength--;
++ }
++ if ( index <= firingIndex ) {
++ firingIndex--;
++ }
++ }
++ }
++ });
++ }
++ return this;
++ },
++ // Check if a given callback is in the list.
++ // If no argument is given, return whether or not list has callbacks attached.
++ has: function( fn ) {
++ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
++ },
++ // Remove all callbacks from the list
++ empty: function() {
++ list = [];
++ return this;
++ },
++ // Have the list do nothing anymore
++ disable: function() {
++ list = stack = memory = undefined;
++ return this;
++ },
++ // Is it disabled?
++ disabled: function() {
++ return !list;
++ },
++ // Lock the list in its current state
++ lock: function() {
++ stack = undefined;
++ if ( !memory ) {
++ self.disable();
++ }
++ return this;
++ },
++ // Is it locked?
++ locked: function() {
++ return !stack;
++ },
++ // Call all callbacks with the given context and arguments
++ fireWith: function( context, args ) {
++ args = args || [];
++ args = [ context, args.slice ? args.slice() : args ];
++ if ( list && ( !fired || stack ) ) {
++ if ( firing ) {
++ stack.push( args );
++ } else {
++ fire( args );
++ }
++ }
++ return this;
++ },
++ // Call all the callbacks with the given arguments
++ fire: function() {
++ self.fireWith( this, arguments );
++ return this;
++ },
++ // To know if the callbacks have already been called at least once
++ fired: function() {
++ return !!fired;
++ }
++ };
++
++ return self;
++};
++jQuery.extend({
++
++ Deferred: function( func ) {
++ var tuples = [
++ // action, add listener, listener list, final state
++ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
++ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
++ [ "notify", "progress", jQuery.Callbacks("memory") ]
++ ],
++ state = "pending",
++ promise = {
++ state: function() {
++ return state;
++ },
++ always: function() {
++ deferred.done( arguments ).fail( arguments );
++ return this;
++ },
++ then: function( /* fnDone, fnFail, fnProgress */ ) {
++ var fns = arguments;
++ return jQuery.Deferred(function( newDefer ) {
++ jQuery.each( tuples, function( i, tuple ) {
++ var action = tuple[ 0 ],
++ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
++ // deferred[ done | fail | progress ] for forwarding actions to newDefer
++ deferred[ tuple[1] ](function() {
++ var returned = fn && fn.apply( this, arguments );
++ if ( returned && jQuery.isFunction( returned.promise ) ) {
++ returned.promise()
++ .done( newDefer.resolve )
++ .fail( newDefer.reject )
++ .progress( newDefer.notify );
++ } else {
++ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
++ }
++ });
++ });
++ fns = null;
++ }).promise();
++ },
++ // Get a promise for this deferred
++ // If obj is provided, the promise aspect is added to the object
++ promise: function( obj ) {
++ return obj != null ? jQuery.extend( obj, promise ) : promise;
++ }
++ },
++ deferred = {};
++
++ // Keep pipe for back-compat
++ promise.pipe = promise.then;
++
++ // Add list-specific methods
++ jQuery.each( tuples, function( i, tuple ) {
++ var list = tuple[ 2 ],
++ stateString = tuple[ 3 ];
++
++ // promise[ done | fail | progress ] = list.add
++ promise[ tuple[1] ] = list.add;
++
++ // Handle state
++ if ( stateString ) {
++ list.add(function() {
++ // state = [ resolved | rejected ]
++ state = stateString;
++
++ // [ reject_list | resolve_list ].disable; progress_list.lock
++ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
++ }
++
++ // deferred[ resolve | reject | notify ]
++ deferred[ tuple[0] ] = function() {
++ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
++ return this;
++ };
++ deferred[ tuple[0] + "With" ] = list.fireWith;
++ });
++
++ // Make the deferred a promise
++ promise.promise( deferred );
++
++ // Call given func if any
++ if ( func ) {
++ func.call( deferred, deferred );
++ }
++
++ // All done!
++ return deferred;
++ },
++
++ // Deferred helper
++ when: function( subordinate /* , ..., subordinateN */ ) {
++ var i = 0,
++ resolveValues = core_slice.call( arguments ),
++ length = resolveValues.length,
++
++ // the count of uncompleted subordinates
++ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
++
++ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
++ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
++
++ // Update function for both resolve and progress values
++ updateFunc = function( i, contexts, values ) {
++ return function( value ) {
++ contexts[ i ] = this;
++ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
++ if( values === progressValues ) {
++ deferred.notifyWith( contexts, values );
++ } else if ( !( --remaining ) ) {
++ deferred.resolveWith( contexts, values );
++ }
++ };
++ },
++
++ progressValues, progressContexts, resolveContexts;
++
++ // add listeners to Deferred subordinates; treat others as resolved
++ if ( length > 1 ) {
++ progressValues = new Array( length );
++ progressContexts = new Array( length );
++ resolveContexts = new Array( length );
++ for ( ; i < length; i++ ) {
++ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
++ resolveValues[ i ].promise()
++ .done( updateFunc( i, resolveContexts, resolveValues ) )
++ .fail( deferred.reject )
++ .progress( updateFunc( i, progressContexts, progressValues ) );
++ } else {
++ --remaining;
++ }
++ }
++ }
++
++ // if we're not waiting on anything, resolve the master
++ if ( !remaining ) {
++ deferred.resolveWith( resolveContexts, resolveValues );
++ }
++
++ return deferred.promise();
++ }
++});
++jQuery.support = (function() {
++
++ var support, all, a,
++ input, select, fragment,
++ opt, eventName, isSupported, i,
++ div = document.createElement("div");
++
++ // Setup
++ div.setAttribute( "className", "t" );
++ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
++
++ // Support tests won't run in some limited or non-browser environments
++ all = div.getElementsByTagName("*");
++ a = div.getElementsByTagName("a")[ 0 ];
++ if ( !all || !a || !all.length ) {
++ return {};
++ }
++
++ // First batch of tests
++ select = document.createElement("select");
++ opt = select.appendChild( document.createElement("option") );
++ input = div.getElementsByTagName("input")[ 0 ];
++
++ a.style.cssText = "top:1px;float:left;opacity:.5";
++ support = {
++ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
++ getSetAttribute: div.className !== "t",
++
++ // IE strips leading whitespace when .innerHTML is used
++ leadingWhitespace: div.firstChild.nodeType === 3,
++
++ // Make sure that tbody elements aren't automatically inserted
++ // IE will insert them into empty tables
++ tbody: !div.getElementsByTagName("tbody").length,
++
++ // Make sure that link elements get serialized correctly by innerHTML
++ // This requires a wrapper element in IE
++ htmlSerialize: !!div.getElementsByTagName("link").length,
++
++ // Get the style information from getAttribute
++ // (IE uses .cssText instead)
++ style: /top/.test( a.getAttribute("style") ),
++
++ // Make sure that URLs aren't manipulated
++ // (IE normalizes it by default)
++ hrefNormalized: a.getAttribute("href") === "/a",
++
++ // Make sure that element opacity exists
++ // (IE uses filter instead)
++ // Use a regex to work around a WebKit issue. See #5145
++ opacity: /^0.5/.test( a.style.opacity ),
++
++ // Verify style float existence
++ // (IE uses styleFloat instead of cssFloat)
++ cssFloat: !!a.style.cssFloat,
++
++ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
++ checkOn: !!input.value,
++
++ // Make sure that a selected-by-default option has a working selected property.
++ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
++ optSelected: opt.selected,
++
++ // Tests for enctype support on a form (#6743)
++ enctype: !!document.createElement("form").enctype,
++
++ // Makes sure cloning an html5 element does not cause problems
++ // Where outerHTML is undefined, this still works
++ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
++
++ // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
++ boxModel: document.compatMode === "CSS1Compat",
++
++ // Will be defined later
++ deleteExpando: true,
++ noCloneEvent: true,
++ inlineBlockNeedsLayout: false,
++ shrinkWrapBlocks: false,
++ reliableMarginRight: true,
++ boxSizingReliable: true,
++ pixelPosition: false
++ };
++
++ // Make sure checked status is properly cloned
++ input.checked = true;
++ support.noCloneChecked = input.cloneNode( true ).checked;
++
++ // Make sure that the options inside disabled selects aren't marked as disabled
++ // (WebKit marks them as disabled)
++ select.disabled = true;
++ support.optDisabled = !opt.disabled;
++
++ // Support: IE<9
++ try {
++ delete div.test;
++ } catch( e ) {
++ support.deleteExpando = false;
++ }
++
++ // Check if we can trust getAttribute("value")
++ input = document.createElement("input");
++ input.setAttribute( "value", "" );
++ support.input = input.getAttribute( "value" ) === "";
++
++ // Check if an input maintains its value after becoming a radio
++ input.value = "t";
++ input.setAttribute( "type", "radio" );
++ support.radioValue = input.value === "t";
++
++ // #11217 - WebKit loses check when the name is after the checked attribute
++ input.setAttribute( "checked", "t" );
++ input.setAttribute( "name", "t" );
++
++ fragment = document.createDocumentFragment();
++ fragment.appendChild( input );
++
++ // Check if a disconnected checkbox will retain its checked
++ // value of true after appended to the DOM (IE6/7)
++ support.appendChecked = input.checked;
++
++ // WebKit doesn't clone checked state correctly in fragments
++ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
++
++ // Support: IE<9
++ // Opera does not clone events (and typeof div.attachEvent === undefined).
++ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
++ if ( div.attachEvent ) {
++ div.attachEvent( "onclick", function() {
++ support.noCloneEvent = false;
++ });
++
++ div.cloneNode( true ).click();
++ }
++
++ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
++ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
++ for ( i in { submit: true, change: true, focusin: true }) {
++ div.setAttribute( eventName = "on" + i, "t" );
++
++ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
++ }
++
++ div.style.backgroundClip = "content-box";
++ div.cloneNode( true ).style.backgroundClip = "";
++ support.clearCloneStyle = div.style.backgroundClip === "content-box";
++
++ // Run tests that need a body at doc ready
++ jQuery(function() {
++ var container, marginDiv, tds,
++ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
++ body = document.getElementsByTagName("body")[0];
++
++ if ( !body ) {
++ // Return for frameset docs that don't have a body
++ return;
++ }
++
++ container = document.createElement("div");
++ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
++
++ body.appendChild( container ).appendChild( div );
++
++ // Support: IE8
++ // Check if table cells still have offsetWidth/Height when they are set
++ // to display:none and there are still other visible table cells in a
++ // table row; if so, offsetWidth/Height are not reliable for use when
++ // determining if an element has been hidden directly using
++ // display:none (it is still safe to use offsets if a parent element is
++ // hidden; don safety goggles and see bug #4512 for more information).
++ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
++ tds = div.getElementsByTagName("td");
++ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
++ isSupported = ( tds[ 0 ].offsetHeight === 0 );
++
++ tds[ 0 ].style.display = "";
++ tds[ 1 ].style.display = "none";
++
++ // Support: IE8
++ // Check if empty table cells still have offsetWidth/Height
++ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
++
++ // Check box-sizing and margin behavior
++ div.innerHTML = "";
++ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
++ support.boxSizing = ( div.offsetWidth === 4 );
++ support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
++
++ // Use window.getComputedStyle because jsdom on node.js will break without it.
++ if ( window.getComputedStyle ) {
++ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
++ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
++
++ // Check if div with explicit width and no margin-right incorrectly
++ // gets computed margin-right based on width of container. (#3333)
++ // Fails in WebKit before Feb 2011 nightlies
++ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
++ marginDiv = div.appendChild( document.createElement("div") );
++ marginDiv.style.cssText = div.style.cssText = divReset;
++ marginDiv.style.marginRight = marginDiv.style.width = "0";
++ div.style.width = "1px";
++
++ support.reliableMarginRight =
++ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
++ }
++
++ if ( typeof div.style.zoom !== core_strundefined ) {
++ // Support: IE<8
++ // Check if natively block-level elements act like inline-block
++ // elements when setting their display to 'inline' and giving
++ // them layout
++ div.innerHTML = "";
++ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
++ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
++
++ // Support: IE6
++ // Check if elements with layout shrink-wrap their children
++ div.style.display = "block";
++ div.innerHTML = "<div></div>";
++ div.firstChild.style.width = "5px";
++ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
++
++ if ( support.inlineBlockNeedsLayout ) {
++ // Prevent IE 6 from affecting layout for positioned elements #11048
++ // Prevent IE from shrinking the body in IE 7 mode #12869
++ // Support: IE<8
++ body.style.zoom = 1;
++ }
++ }
++
++ body.removeChild( container );
++
++ // Null elements to avoid leaks in IE
++ container = div = tds = marginDiv = null;
++ });
++
++ // Null elements to avoid leaks in IE
++ all = select = fragment = opt = a = input = null;
++
++ return support;
++})();
++
++var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
++ rmultiDash = /([A-Z])/g;
++
++function internalData( elem, name, data, pvt /* Internal Use Only */ ){
++ if ( !jQuery.acceptData( elem ) ) {
++ return;
++ }
++
++ var thisCache, ret,
++ internalKey = jQuery.expando,
++ getByName = typeof name === "string",
++
++ // We have to handle DOM nodes and JS objects differently because IE6-7
++ // can't GC object references properly across the DOM-JS boundary
++ isNode = elem.nodeType,
++
++ // Only DOM nodes need the global jQuery cache; JS object data is
++ // attached directly to the object so GC can occur automatically
++ cache = isNode ? jQuery.cache : elem,
++
++ // Only defining an ID for JS objects if its cache already exists allows
++ // the code to shortcut on the same path as a DOM node with no cache
++ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
++
++ // Avoid doing any more work than we need to when trying to get data on an
++ // object that has no data at all
++ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
++ return;
++ }
++
++ if ( !id ) {
++ // Only DOM nodes need a new unique ID for each element since their data
++ // ends up in the global cache
++ if ( isNode ) {
++ elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
++ } else {
++ id = internalKey;
++ }
++ }
++
++ if ( !cache[ id ] ) {
++ cache[ id ] = {};
++
++ // Avoids exposing jQuery metadata on plain JS objects when the object
++ // is serialized using JSON.stringify
++ if ( !isNode ) {
++ cache[ id ].toJSON = jQuery.noop;
++ }
++ }
++
++ // An object can be passed to jQuery.data instead of a key/value pair; this gets
++ // shallow copied over onto the existing cache
++ if ( typeof name === "object" || typeof name === "function" ) {
++ if ( pvt ) {
++ cache[ id ] = jQuery.extend( cache[ id ], name );
++ } else {
++ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
++ }
++ }
++
++ thisCache = cache[ id ];
++
++ // jQuery data() is stored in a separate object inside the object's internal data
++ // cache in order to avoid key collisions between internal data and user-defined
++ // data.
++ if ( !pvt ) {
++ if ( !thisCache.data ) {
++ thisCache.data = {};
++ }
++
++ thisCache = thisCache.data;
++ }
++
++ if ( data !== undefined ) {
++ thisCache[ jQuery.camelCase( name ) ] = data;
++ }
++
++ // Check for both converted-to-camel and non-converted data property names
++ // If a data property was specified
++ if ( getByName ) {
++
++ // First Try to find as-is property data
++ ret = thisCache[ name ];
++
++ // Test for null|undefined property data
++ if ( ret == null ) {
++
++ // Try to find the camelCased property
++ ret = thisCache[ jQuery.camelCase( name ) ];
++ }
++ } else {
++ ret = thisCache;
++ }
++
++ return ret;
++}
++
++function internalRemoveData( elem, name, pvt ) {
++ if ( !jQuery.acceptData( elem ) ) {
++ return;
++ }
++
++ var i, l, thisCache,
++ isNode = elem.nodeType,
++
++ // See jQuery.data for more information
++ cache = isNode ? jQuery.cache : elem,
++ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
++
++ // If there is already no cache entry for this object, there is no
++ // purpose in continuing
++ if ( !cache[ id ] ) {
++ return;
++ }
++
++ if ( name ) {
++
++ thisCache = pvt ? cache[ id ] : cache[ id ].data;
++
++ if ( thisCache ) {
++
++ // Support array or space separated string names for data keys
++ if ( !jQuery.isArray( name ) ) {
++
++ // try the string as a key before any manipulation
++ if ( name in thisCache ) {
++ name = [ name ];
++ } else {
++
++ // split the camel cased version by spaces unless a key with the spaces exists
++ name = jQuery.camelCase( name );
++ if ( name in thisCache ) {
++ name = [ name ];
++ } else {
++ name = name.split(" ");
++ }
++ }
++ } else {
++ // If "name" is an array of keys...
++ // When data is initially created, via ("key", "val") signature,
++ // keys will be converted to camelCase.
++ // Since there is no way to tell _how_ a key was added, remove
++ // both plain key and camelCase key. #12786
++ // This will only penalize the array argument path.
++ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
++ }
++
++ for ( i = 0, l = name.length; i < l; i++ ) {
++ delete thisCache[ name[i] ];
++ }
++
++ // If there is no data left in the cache, we want to continue
++ // and let the cache object itself get destroyed
++ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
++ return;
++ }
++ }
++ }
++
++ // See jQuery.data for more information
++ if ( !pvt ) {
++ delete cache[ id ].data;
++
++ // Don't destroy the parent cache unless the internal data object
++ // had been the only thing left in it
++ if ( !isEmptyDataObject( cache[ id ] ) ) {
++ return;
++ }
++ }
++
++ // Destroy the cache
++ if ( isNode ) {
++ jQuery.cleanData( [ elem ], true );
++
++ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
++ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
++ delete cache[ id ];
++
++ // When all else fails, null
++ } else {
++ cache[ id ] = null;
++ }
++}
++
++jQuery.extend({
++ cache: {},
++
++ // Unique for each copy of jQuery on the page
++ // Non-digits removed to match rinlinejQuery
++ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
++
++ // The following elements throw uncatchable exceptions if you
++ // attempt to add expando properties to them.
++ noData: {
++ "embed": true,
++ // Ban all objects except for Flash (which handle expandos)
++ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
++ "applet": true
++ },
++
++ hasData: function( elem ) {
++ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
++ return !!elem && !isEmptyDataObject( elem );
++ },
++
++ data: function( elem, name, data ) {
++ return internalData( elem, name, data );
++ },
++
++ removeData: function( elem, name ) {
++ return internalRemoveData( elem, name );
++ },
++
++ // For internal use only.
++ _data: function( elem, name, data ) {
++ return internalData( elem, name, data, true );
++ },
++
++ _removeData: function( elem, name ) {
++ return internalRemoveData( elem, name, true );
++ },
++
++ // A method for determining if a DOM node can handle the data expando
++ acceptData: function( elem ) {
++ // Do not set data on non-element because it will not be cleared (#8335).
++ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
++ return false;
++ }
++
++ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
++
++ // nodes accept data unless otherwise specified; rejection can be conditional
++ return !noData || noData !== true && elem.getAttribute("classid") === noData;
++ }
++});
++
++jQuery.fn.extend({
++ data: function( key, value ) {
++ var attrs, name,
++ elem = this[0],
++ i = 0,
++ data = null;
++
++ // Gets all values
++ if ( key === undefined ) {
++ if ( this.length ) {
++ data = jQuery.data( elem );
++
++ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
++ attrs = elem.attributes;
++ for ( ; i < attrs.length; i++ ) {
++ name = attrs[i].name;
++
++ if ( !name.indexOf( "data-" ) ) {
++ name = jQuery.camelCase( name.slice(5) );
++
++ dataAttr( elem, name, data[ name ] );
++ }
++ }
++ jQuery._data( elem, "parsedAttrs", true );
++ }
++ }
++
++ return data;
++ }
++
++ // Sets multiple values
++ if ( typeof key === "object" ) {
++ return this.each(function() {
++ jQuery.data( this, key );
++ });
++ }
++
++ return jQuery.access( this, function( value ) {
++
++ if ( value === undefined ) {
++ // Try to fetch any internally stored data first
++ return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
++ }
++
++ this.each(function() {
++ jQuery.data( this, key, value );
++ });
++ }, null, value, arguments.length > 1, null, true );
++ },
++
++ removeData: function( key ) {
++ return this.each(function() {
++ jQuery.removeData( this, key );
++ });
++ }
++});
++
++function dataAttr( elem, key, data ) {
++ // If nothing was found internally, try to fetch any
++ // data from the HTML5 data-* attribute
++ if ( data === undefined && elem.nodeType === 1 ) {
++
++ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
++
++ data = elem.getAttribute( name );
++
++ if ( typeof data === "string" ) {
++ try {
++ data = data === "true" ? true :
++ data === "false" ? false :
++ data === "null" ? null :
++ // Only convert to a number if it doesn't change the string
++ +data + "" === data ? +data :
++ rbrace.test( data ) ? jQuery.parseJSON( data ) :
++ data;
++ } catch( e ) {}
++
++ // Make sure we set the data so it isn't changed later
++ jQuery.data( elem, key, data );
++
++ } else {
++ data = undefined;
++ }
++ }
++
++ return data;
++}
++
++// checks a cache object for emptiness
++function isEmptyDataObject( obj ) {
++ var name;
++ for ( name in obj ) {
++
++ // if the public data object is empty, the private is still empty
++ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
++ continue;
++ }
++ if ( name !== "toJSON" ) {
++ return false;
++ }
++ }
++
++ return true;
++}
++jQuery.extend({
++ queue: function( elem, type, data ) {
++ var queue;
++
++ if ( elem ) {
++ type = ( type || "fx" ) + "queue";
++ queue = jQuery._data( elem, type );
++
++ // Speed up dequeue by getting out quickly if this is just a lookup
++ if ( data ) {
++ if ( !queue || jQuery.isArray(data) ) {
++ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
++ } else {
++ queue.push( data );
++ }
++ }
++ return queue || [];
++ }
++ },
++
++ dequeue: function( elem, type ) {
++ type = type || "fx";
++
++ var queue = jQuery.queue( elem, type ),
++ startLength = queue.length,
++ fn = queue.shift(),
++ hooks = jQuery._queueHooks( elem, type ),
++ next = function() {
++ jQuery.dequeue( elem, type );
++ };
++
++ // If the fx queue is dequeued, always remove the progress sentinel
++ if ( fn === "inprogress" ) {
++ fn = queue.shift();
++ startLength--;
++ }
++
++ hooks.cur = fn;
++ if ( fn ) {
++
++ // Add a progress sentinel to prevent the fx queue from being
++ // automatically dequeued
++ if ( type === "fx" ) {
++ queue.unshift( "inprogress" );
++ }
++
++ // clear up the last queue stop function
++ delete hooks.stop;
++ fn.call( elem, next, hooks );
++ }
++
++ if ( !startLength && hooks ) {
++ hooks.empty.fire();
++ }
++ },
++
++ // not intended for public consumption - generates a queueHooks object, or returns the current one
++ _queueHooks: function( elem, type ) {
++ var key = type + "queueHooks";
++ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
++ empty: jQuery.Callbacks("once memory").add(function() {
++ jQuery._removeData( elem, type + "queue" );
++ jQuery._removeData( elem, key );
++ })
++ });
++ }
++});
++
++jQuery.fn.extend({
++ queue: function( type, data ) {
++ var setter = 2;
++
++ if ( typeof type !== "string" ) {
++ data = type;
++ type = "fx";
++ setter--;
++ }
++
++ if ( arguments.length < setter ) {
++ return jQuery.queue( this[0], type );
++ }
++
++ return data === undefined ?
++ this :
++ this.each(function() {
++ var queue = jQuery.queue( this, type, data );
++
++ // ensure a hooks for this queue
++ jQuery._queueHooks( this, type );
++
++ if ( type === "fx" && queue[0] !== "inprogress" ) {
++ jQuery.dequeue( this, type );
++ }
++ });
++ },
++ dequeue: function( type ) {
++ return this.each(function() {
++ jQuery.dequeue( this, type );
++ });
++ },
++ // Based off of the plugin by Clint Helfers, with permission.
++ // http://blindsignals.com/index.php/2009/07/jquery-delay/
++ delay: function( time, type ) {
++ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
++ type = type || "fx";
++
++ return this.queue( type, function( next, hooks ) {
++ var timeout = setTimeout( next, time );
++ hooks.stop = function() {
++ clearTimeout( timeout );
++ };
++ });
++ },
++ clearQueue: function( type ) {
++ return this.queue( type || "fx", [] );
++ },
++ // Get a promise resolved when queues of a certain type
++ // are emptied (fx is the type by default)
++ promise: function( type, obj ) {
++ var tmp,
++ count = 1,
++ defer = jQuery.Deferred(),
++ elements = this,
++ i = this.length,
++ resolve = function() {
++ if ( !( --count ) ) {
++ defer.resolveWith( elements, [ elements ] );
++ }
++ };
++
++ if ( typeof type !== "string" ) {
++ obj = type;
++ type = undefined;
++ }
++ type = type || "fx";
++
++ while( i-- ) {
++ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
++ if ( tmp && tmp.empty ) {
++ count++;
++ tmp.empty.add( resolve );
++ }
++ }
++ resolve();
++ return defer.promise( obj );
++ }
++});
++var nodeHook, boolHook,
++ rclass = /[\t\r\n]/g,
++ rreturn = /\r/g,
++ rfocusable = /^(?:input|select|textarea|button|object)$/i,
++ rclickable = /^(?:a|area)$/i,
++ rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
++ ruseDefault = /^(?:checked|selected)$/i,
++ getSetAttribute = jQuery.support.getSetAttribute,
++ getSetInput = jQuery.support.input;
++
++jQuery.fn.extend({
++ attr: function( name, value ) {
++ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
++ },
++
++ removeAttr: function( name ) {
++ return this.each(function() {
++ jQuery.removeAttr( this, name );
++ });
++ },
++
++ prop: function( name, value ) {
++ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
++ },
++
++ removeProp: function( name ) {
++ name = jQuery.propFix[ name ] || name;
++ return this.each(function() {
++ // try/catch handles cases where IE balks (such as removing a property on window)
++ try {
++ this[ name ] = undefined;
++ delete this[ name ];
++ } catch( e ) {}
++ });
++ },
++
++ addClass: function( value ) {
++ var classes, elem, cur, clazz, j,
++ i = 0,
++ len = this.length,
++ proceed = typeof value === "string" && value;
++
++ if ( jQuery.isFunction( value ) ) {
++ return this.each(function( j ) {
++ jQuery( this ).addClass( value.call( this, j, this.className ) );
++ });
++ }
++
++ if ( proceed ) {
++ // The disjunction here is for better compressibility (see removeClass)
++ classes = ( value || "" ).match( core_rnotwhite ) || [];
++
++ for ( ; i < len; i++ ) {
++ elem = this[ i ];
++ cur = elem.nodeType === 1 && ( elem.className ?
++ ( " " + elem.className + " " ).replace( rclass, " " ) :
++ " "
++ );
++
++ if ( cur ) {
++ j = 0;
++ while ( (clazz = classes[j++]) ) {
++ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
++ cur += clazz + " ";
++ }
++ }
++ elem.className = jQuery.trim( cur );
++
++ }
++ }
++ }
++
++ return this;
++ },
++
++ removeClass: function( value ) {
++ var classes, elem, cur, clazz, j,
++ i = 0,
++ len = this.length,
++ proceed = arguments.length === 0 || typeof value === "string" && value;
++
++ if ( jQuery.isFunction( value ) ) {
++ return this.each(function( j ) {
++ jQuery( this ).removeClass( value.call( this, j, this.className ) );
++ });
++ }
++ if ( proceed ) {
++ classes = ( value || "" ).match( core_rnotwhite ) || [];
++
++ for ( ; i < len; i++ ) {
++ elem = this[ i ];
++ // This expression is here for better compressibility (see addClass)
++ cur = elem.nodeType === 1 && ( elem.className ?
++ ( " " + elem.className + " " ).replace( rclass, " " ) :
++ ""
++ );
++
++ if ( cur ) {
++ j = 0;
++ while ( (clazz = classes[j++]) ) {
++ // Remove *all* instances
++ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
++ cur = cur.replace( " " + clazz + " ", " " );
++ }
++ }
++ elem.className = value ? jQuery.trim( cur ) : "";
++ }
++ }
++ }
++
++ return this;
++ },
++
++ toggleClass: function( value, stateVal ) {
++ var type = typeof value,
++ isBool = typeof stateVal === "boolean";
++
++ if ( jQuery.isFunction( value ) ) {
++ return this.each(function( i ) {
++ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
++ });
++ }
++
++ return this.each(function() {
++ if ( type === "string" ) {
++ // toggle individual class names
++ var className,
++ i = 0,
++ self = jQuery( this ),
++ state = stateVal,
++ classNames = value.match( core_rnotwhite ) || [];
++
++ while ( (className = classNames[ i++ ]) ) {
++ // check each className given, space separated list
++ state = isBool ? state : !self.hasClass( className );
++ self[ state ? "addClass" : "removeClass" ]( className );
++ }
++
++ // Toggle whole class name
++ } else if ( type === core_strundefined || type === "boolean" ) {
++ if ( this.className ) {
++ // store className if set
++ jQuery._data( this, "__className__", this.className );
++ }
++
++ // If the element has a class name or if we're passed "false",
++ // then remove the whole classname (if there was one, the above saved it).
++ // Otherwise bring back whatever was previously saved (if anything),
++ // falling back to the empty string if nothing was stored.
++ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
++ }
++ });
++ },
++
++ hasClass: function( selector ) {
++ var className = " " + selector + " ",
++ i = 0,
++ l = this.length;
++ for ( ; i < l; i++ ) {
++ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
++ return true;
++ }
++ }
++
++ return false;
++ },
++
++ val: function( value ) {
++ var ret, hooks, isFunction,
++ elem = this[0];
++
++ if ( !arguments.length ) {
++ if ( elem ) {
++ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
++
++ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
++ return ret;
++ }
++
++ ret = elem.value;
++
++ return typeof ret === "string" ?
++ // handle most common string cases
++ ret.replace(rreturn, "") :
++ // handle cases where value is null/undef or number
++ ret == null ? "" : ret;
++ }
++
++ return;
++ }
++
++ isFunction = jQuery.isFunction( value );
++
++ return this.each(function( i ) {
++ var val,
++ self = jQuery(this);
++
++ if ( this.nodeType !== 1 ) {
++ return;
++ }
++
++ if ( isFunction ) {
++ val = value.call( this, i, self.val() );
++ } else {
++ val = value;
++ }
++
++ // Treat null/undefined as ""; convert numbers to string
++ if ( val == null ) {
++ val = "";
++ } else if ( typeof val === "number" ) {
++ val += "";
++ } else if ( jQuery.isArray( val ) ) {
++ val = jQuery.map(val, function ( value ) {
++ return value == null ? "" : value + "";
++ });
++ }
++
++ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
++
++ // If set returns undefined, fall back to normal setting
++ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
++ this.value = val;
++ }
++ });
++ }
++});
++
++jQuery.extend({
++ valHooks: {
++ option: {
++ get: function( elem ) {
++ // attributes.value is undefined in Blackberry 4.7 but
++ // uses .value. See #6932
++ var val = elem.attributes.value;
++ return !val || val.specified ? elem.value : elem.text;
++ }
++ },
++ select: {
++ get: function( elem ) {
++ var value, option,
++ options = elem.options,
++ index = elem.selectedIndex,
++ one = elem.type === "select-one" || index < 0,
++ values = one ? null : [],
++ max = one ? index + 1 : options.length,
++ i = index < 0 ?
++ max :
++ one ? index : 0;
++
++ // Loop through all the selected options
++ for ( ; i < max; i++ ) {
++ option = options[ i ];
++
++ // oldIE doesn't update selected after form reset (#2551)
++ if ( ( option.selected || i === index ) &&
++ // Don't return options that are disabled or in a disabled optgroup
++ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
++ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
++
++ // Get the specific value for the option
++ value = jQuery( option ).val();
++
++ // We don't need an array for one selects
++ if ( one ) {
++ return value;
++ }
++
++ // Multi-Selects return an array
++ values.push( value );
++ }
++ }
++
++ return values;
++ },
++
++ set: function( elem, value ) {
++ var values = jQuery.makeArray( value );
++
++ jQuery(elem).find("option").each(function() {
++ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
++ });
++
++ if ( !values.length ) {
++ elem.selectedIndex = -1;
++ }
++ return values;
++ }
++ }
++ },
++
++ attr: function( elem, name, value ) {
++ var hooks, notxml, ret,
++ nType = elem.nodeType;
++
++ // don't get/set attributes on text, comment and attribute nodes
++ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
++ return;
++ }
++
++ // Fallback to prop when attributes are not supported
++ if ( typeof elem.getAttribute === core_strundefined ) {
++ return jQuery.prop( elem, name, value );
++ }
++
++ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
++
++ // All attributes are lowercase
++ // Grab necessary hook if one is defined
++ if ( notxml ) {
++ name = name.toLowerCase();
++ hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
++ }
++
++ if ( value !== undefined ) {
++
++ if ( value === null ) {
++ jQuery.removeAttr( elem, name );
++
++ } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
++ return ret;
++
++ } else {
++ elem.setAttribute( name, value + "" );
++ return value;
++ }
++
++ } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
++ return ret;
++
++ } else {
++
++ // In IE9+, Flash objects don't have .getAttribute (#12945)
++ // Support: IE9+
++ if ( typeof elem.getAttribute !== core_strundefined ) {
++ ret = elem.getAttribute( name );
++ }
++
++ // Non-existent attributes return null, we normalize to undefined
++ return ret == null ?
++ undefined :
++ ret;
++ }
++ },
++
++ removeAttr: function( elem, value ) {
++ var name, propName,
++ i = 0,
++ attrNames = value && value.match( core_rnotwhite );
++
++ if ( attrNames && elem.nodeType === 1 ) {
++ while ( (name = attrNames[i++]) ) {
++ propName = jQuery.propFix[ name ] || name;
++
++ // Boolean attributes get special treatment (#10870)
++ if ( rboolean.test( name ) ) {
++ // Set corresponding property to false for boolean attributes
++ // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8
++ if ( !getSetAttribute && ruseDefault.test( name ) ) {
++ elem[ jQuery.camelCase( "default-" + name ) ] =
++ elem[ propName ] = false;
++ } else {
++ elem[ propName ] = false;
++ }
++
++ // See #9699 for explanation of this approach (setting first, then removal)
++ } else {
++ jQuery.attr( elem, name, "" );
++ }
++
++ elem.removeAttribute( getSetAttribute ? name : propName );
++ }
++ }
++ },
++
++ attrHooks: {
++ type: {
++ set: function( elem, value ) {
++ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
++ // Setting the type on a radio button after the value resets the value in IE6-9
++ // Reset value to default in case type is set after value during creation
++ var val = elem.value;
++ elem.setAttribute( "type", value );
++ if ( val ) {
++ elem.value = val;
++ }
++ return value;
++ }
++ }
++ }
++ },
++
++ propFix: {
++ tabindex: "tabIndex",
++ readonly: "readOnly",
++ "for": "htmlFor",
++ "class": "className",
++ maxlength: "maxLength",
++ cellspacing: "cellSpacing",
++ cellpadding: "cellPadding",
++ rowspan: "rowSpan",
++ colspan: "colSpan",
++ usemap: "useMap",
++ frameborder: "frameBorder",
++ contenteditable: "contentEditable"
++ },
++
++ prop: function( elem, name, value ) {
++ var ret, hooks, notxml,
++ nType = elem.nodeType;
++
++ // don't get/set properties on text, comment and attribute nodes
++ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
++ return;
++ }
++
++ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
++
++ if ( notxml ) {
++ // Fix name and attach hooks
++ name = jQuery.propFix[ name ] || name;
++ hooks = jQuery.propHooks[ name ];
++ }
++
++ if ( value !== undefined ) {
++ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
++ return ret;
++
++ } else {
++ return ( elem[ name ] = value );
++ }
++
++ } else {
++ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
++ return ret;
++
++ } else {
++ return elem[ name ];
++ }
++ }
++ },
++
++ propHooks: {
++ tabIndex: {
++ get: function( elem ) {
++ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
++ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
++ var attributeNode = elem.getAttributeNode("tabindex");
++
++ return attributeNode && attributeNode.specified ?
++ parseInt( attributeNode.value, 10 ) :
++ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
++ 0 :
++ undefined;
++ }
++ }
++ }
++});
++
++// Hook for boolean attributes
++boolHook = {
++ get: function( elem, name ) {
++ var
++ // Use .prop to determine if this attribute is understood as boolean
++ prop = jQuery.prop( elem, name ),
++
++ // Fetch it accordingly
++ attr = typeof prop === "boolean" && elem.getAttribute( name ),
++ detail = typeof prop === "boolean" ?
++
++ getSetInput && getSetAttribute ?
++ attr != null :
++ // oldIE fabricates an empty string for missing boolean attributes
++ // and conflates checked/selected into attroperties
++ ruseDefault.test( name ) ?
++ elem[ jQuery.camelCase( "default-" + name ) ] :
++ !!attr :
++
++ // fetch an attribute node for properties not recognized as boolean
++ elem.getAttributeNode( name );
++
++ return detail && detail.value !== false ?
++ name.toLowerCase() :
++ undefined;
++ },
++ set: function( elem, value, name ) {
++ if ( value === false ) {
++ // Remove boolean attributes when set to false
++ jQuery.removeAttr( elem, name );
++ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
++ // IE<8 needs the *property* name
++ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
++
++ // Use defaultChecked and defaultSelected for oldIE
++ } else {
++ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
++ }
++
++ return name;
++ }
++};
++
++// fix oldIE value attroperty
++if ( !getSetInput || !getSetAttribute ) {
++ jQuery.attrHooks.value = {
++ get: function( elem, name ) {
++ var ret = elem.getAttributeNode( name );
++ return jQuery.nodeName( elem, "input" ) ?
++
++ // Ignore the value *property* by using defaultValue
++ elem.defaultValue :
++
++ ret && ret.specified ? ret.value : undefined;
++ },
++ set: function( elem, value, name ) {
++ if ( jQuery.nodeName( elem, "input" ) ) {
++ // Does not return so that setAttribute is also used
++ elem.defaultValue = value;
++ } else {
++ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
++ return nodeHook && nodeHook.set( elem, value, name );
++ }
++ }
++ };
++}
++
++// IE6/7 do not support getting/setting some attributes with get/setAttribute
++if ( !getSetAttribute ) {
++
++ // Use this for any attribute in IE6/7
++ // This fixes almost every IE6/7 issue
++ nodeHook = jQuery.valHooks.button = {
++ get: function( elem, name ) {
++ var ret = elem.getAttributeNode( name );
++ return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
++ ret.value :
++ undefined;
++ },
++ set: function( elem, value, name ) {
++ // Set the existing or create a new attribute node
++ var ret = elem.getAttributeNode( name );
++ if ( !ret ) {
++ elem.setAttributeNode(
++ (ret = elem.ownerDocument.createAttribute( name ))
++ );
++ }
++
++ ret.value = value += "";
++
++ // Break association with cloned elements by also using setAttribute (#9646)
++ return name === "value" || value === elem.getAttribute( name ) ?
++ value :
++ undefined;
++ }
++ };
++
++ // Set contenteditable to false on removals(#10429)
++ // Setting to empty string throws an error as an invalid value
++ jQuery.attrHooks.contenteditable = {
++ get: nodeHook.get,
++ set: function( elem, value, name ) {
++ nodeHook.set( elem, value === "" ? false : value, name );
++ }
++ };
++
++ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
++ // This is for removals
++ jQuery.each([ "width", "height" ], function( i, name ) {
++ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
++ set: function( elem, value ) {
++ if ( value === "" ) {
++ elem.setAttribute( name, "auto" );
++ return value;
++ }
++ }
++ });
++ });
++}
++
++
++// Some attributes require a special call on IE
++// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
++if ( !jQuery.support.hrefNormalized ) {
++ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
++ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
++ get: function( elem ) {
++ var ret = elem.getAttribute( name, 2 );
++ return ret == null ? undefined : ret;
++ }
++ });
++ });
++
++ // href/src property should get the full normalized URL (#10299/#12915)
++ jQuery.each([ "href", "src" ], function( i, name ) {
++ jQuery.propHooks[ name ] = {
++ get: function( elem ) {
++ return elem.getAttribute( name, 4 );
++ }
++ };
++ });
++}
++
++if ( !jQuery.support.style ) {
++ jQuery.attrHooks.style = {
++ get: function( elem ) {
++ // Return undefined in the case of empty string
++ // Note: IE uppercases css property names, but if we were to .toLowerCase()
++ // .cssText, that would destroy case senstitivity in URL's, like in "background"
++ return elem.style.cssText || undefined;
++ },
++ set: function( elem, value ) {
++ return ( elem.style.cssText = value + "" );
++ }
++ };
++}
++
++// Safari mis-reports the default selected property of an option
++// Accessing the parent's selectedIndex property fixes it
++if ( !jQuery.support.optSelected ) {
++ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
++ get: function( elem ) {
++ var parent = elem.parentNode;
++
++ if ( parent ) {
++ parent.selectedIndex;
++
++ // Make sure that it also works with optgroups, see #5701
++ if ( parent.parentNode ) {
++ parent.parentNode.selectedIndex;
++ }
++ }
++ return null;
++ }
++ });
++}
++
++// IE6/7 call enctype encoding
++if ( !jQuery.support.enctype ) {
++ jQuery.propFix.enctype = "encoding";
++}
++
++// Radios and checkboxes getter/setter
++if ( !jQuery.support.checkOn ) {
++ jQuery.each([ "radio", "checkbox" ], function() {
++ jQuery.valHooks[ this ] = {
++ get: function( elem ) {
++ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
++ return elem.getAttribute("value") === null ? "on" : elem.value;
++ }
++ };
++ });
++}
++jQuery.each([ "radio", "checkbox" ], function() {
++ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
++ set: function( elem, value ) {
++ if ( jQuery.isArray( value ) ) {
++ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
++ }
++ }
++ });
++});
++var rformElems = /^(?:input|select|textarea)$/i,
++ rkeyEvent = /^key/,
++ rmouseEvent = /^(?:mouse|contextmenu)|click/,
++ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
++ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
++
++function returnTrue() {
++ return true;
++}
++
++function returnFalse() {
++ return false;
++}
++
++/*
++ * Helper functions for managing events -- not part of the public interface.
++ * Props to Dean Edwards' addEvent library for many of the ideas.
++ */
++jQuery.event = {
++
++ global: {},
++
++ add: function( elem, types, handler, data, selector ) {
++ var tmp, events, t, handleObjIn,
++ special, eventHandle, handleObj,
++ handlers, type, namespaces, origType,
++ elemData = jQuery._data( elem );
++
++ // Don't attach events to noData or text/comment nodes (but allow plain objects)
++ if ( !elemData ) {
++ return;
++ }
++
++ // Caller can pass in an object of custom data in lieu of the handler
++ if ( handler.handler ) {
++ handleObjIn = handler;
++ handler = handleObjIn.handler;
++ selector = handleObjIn.selector;
++ }
++
++ // Make sure that the handler has a unique ID, used to find/remove it later
++ if ( !handler.guid ) {
++ handler.guid = jQuery.guid++;
++ }
++
++ // Init the element's event structure and main handler, if this is the first
++ if ( !(events = elemData.events) ) {
++ events = elemData.events = {};
++ }
++ if ( !(eventHandle = elemData.handle) ) {
++ eventHandle = elemData.handle = function( e ) {
++ // Discard the second event of a jQuery.event.trigger() and
++ // when an event is called after a page has unloaded
++ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
++ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
++ undefined;
++ };
++ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
++ eventHandle.elem = elem;
++ }
++
++ // Handle multiple events separated by a space
++ // jQuery(...).bind("mouseover mouseout", fn);
++ types = ( types || "" ).match( core_rnotwhite ) || [""];
++ t = types.length;
++ while ( t-- ) {
++ tmp = rtypenamespace.exec( types[t] ) || [];
++ type = origType = tmp[1];
++ namespaces = ( tmp[2] || "" ).split( "." ).sort();
++
++ // If event changes its type, use the special event handlers for the changed type
++ special = jQuery.event.special[ type ] || {};
++
++ // If selector defined, determine special event api type, otherwise given type
++ type = ( selector ? special.delegateType : special.bindType ) || type;
++
++ // Update special based on newly reset type
++ special = jQuery.event.special[ type ] || {};
++
++ // handleObj is passed to all event handlers
++ handleObj = jQuery.extend({
++ type: type,
++ origType: origType,
++ data: data,
++ handler: handler,
++ guid: handler.guid,
++ selector: selector,
++ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
++ namespace: namespaces.join(".")
++ }, handleObjIn );
++
++ // Init the event handler queue if we're the first
++ if ( !(handlers = events[ type ]) ) {
++ handlers = events[ type ] = [];
++ handlers.delegateCount = 0;
++
++ // Only use addEventListener/attachEvent if the special events handler returns false
++ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
++ // Bind the global event handler to the element
++ if ( elem.addEventListener ) {
++ elem.addEventListener( type, eventHandle, false );
++
++ } else if ( elem.attachEvent ) {
++ elem.attachEvent( "on" + type, eventHandle );
++ }
++ }
++ }
++
++ if ( special.add ) {
++ special.add.call( elem, handleObj );
++
++ if ( !handleObj.handler.guid ) {
++ handleObj.handler.guid = handler.guid;
++ }
++ }
++
++ // Add to the element's handler list, delegates in front
++ if ( selector ) {
++ handlers.splice( handlers.delegateCount++, 0, handleObj );
++ } else {
++ handlers.push( handleObj );
++ }
++
++ // Keep track of which events have ever been used, for event optimization
++ jQuery.event.global[ type ] = true;
++ }
++
++ // Nullify elem to prevent memory leaks in IE
++ elem = null;
++ },
++
++ // Detach an event or set of events from an element
++ remove: function( elem, types, handler, selector, mappedTypes ) {
++ var j, handleObj, tmp,
++ origCount, t, events,
++ special, handlers, type,
++ namespaces, origType,
++ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
++
++ if ( !elemData || !(events = elemData.events) ) {
++ return;
++ }
++
++ // Once for each type.namespace in types; type may be omitted
++ types = ( types || "" ).match( core_rnotwhite ) || [""];
++ t = types.length;
++ while ( t-- ) {
++ tmp = rtypenamespace.exec( types[t] ) || [];
++ type = origType = tmp[1];
++ namespaces = ( tmp[2] || "" ).split( "." ).sort();
++
++ // Unbind all events (on this namespace, if provided) for the element
++ if ( !type ) {
++ for ( type in events ) {
++ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
++ }
++ continue;
++ }
++
++ special = jQuery.event.special[ type ] || {};
++ type = ( selector ? special.delegateType : special.bindType ) || type;
++ handlers = events[ type ] || [];
++ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
++
++ // Remove matching events
++ origCount = j = handlers.length;
++ while ( j-- ) {
++ handleObj = handlers[ j ];
++
++ if ( ( mappedTypes || origType === handleObj.origType ) &&
++ ( !handler || handler.guid === handleObj.guid ) &&
++ ( !tmp || tmp.test( handleObj.namespace ) ) &&
++ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
++ handlers.splice( j, 1 );
++
++ if ( handleObj.selector ) {
++ handlers.delegateCount--;
++ }
++ if ( special.remove ) {
++ special.remove.call( elem, handleObj );
++ }
++ }
++ }
++
++ // Remove generic event handler if we removed something and no more handlers exist
++ // (avoids potential for endless recursion during removal of special event handlers)
++ if ( origCount && !handlers.length ) {
++ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
++ jQuery.removeEvent( elem, type, elemData.handle );
++ }
++
++ delete events[ type ];
++ }
++ }
++
++ // Remove the expando if it's no longer used
++ if ( jQuery.isEmptyObject( events ) ) {
++ delete elemData.handle;
++
++ // removeData also checks for emptiness and clears the expando if empty
++ // so use it instead of delete
++ jQuery._removeData( elem, "events" );
++ }
++ },
++
++ trigger: function( event, data, elem, onlyHandlers ) {
++ var handle, ontype, cur,
++ bubbleType, special, tmp, i,
++ eventPath = [ elem || document ],
++ type = core_hasOwn.call( event, "type" ) ? event.type : event,
++ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
++
++ cur = tmp = elem = elem || document;
++
++ // Don't do events on text and comment nodes
++ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
++ return;
++ }
++
++ // focus/blur morphs to focusin/out; ensure we're not firing them right now
++ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
++ return;
++ }
++
++ if ( type.indexOf(".") >= 0 ) {
++ // Namespaced trigger; create a regexp to match event type in handle()
++ namespaces = type.split(".");
++ type = namespaces.shift();
++ namespaces.sort();
++ }
++ ontype = type.indexOf(":") < 0 && "on" + type;
++
++ // Caller can pass in a jQuery.Event object, Object, or just an event type string
++ event = event[ jQuery.expando ] ?
++ event :
++ new jQuery.Event( type, typeof event === "object" && event );
++
++ event.isTrigger = true;
++ event.namespace = namespaces.join(".");
++ event.namespace_re = event.namespace ?
++ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
++ null;
++
++ // Clean up the event in case it is being reused
++ event.result = undefined;
++ if ( !event.target ) {
++ event.target = elem;
++ }
++
++ // Clone any incoming data and prepend the event, creating the handler arg list
++ data = data == null ?
++ [ event ] :
++ jQuery.makeArray( data, [ event ] );
++
++ // Allow special events to draw outside the lines
++ special = jQuery.event.special[ type ] || {};
++ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
++ return;
++ }
++
++ // Determine event propagation path in advance, per W3C events spec (#9951)
++ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
++ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
++
++ bubbleType = special.delegateType || type;
++ if ( !rfocusMorph.test( bubbleType + type ) ) {
++ cur = cur.parentNode;
++ }
++ for ( ; cur; cur = cur.parentNode ) {
++ eventPath.push( cur );
++ tmp = cur;
++ }
++
++ // Only add window if we got to document (e.g., not plain obj or detached DOM)
++ if ( tmp === (elem.ownerDocument || document) ) {
++ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
++ }
++ }
++
++ // Fire handlers on the event path
++ i = 0;
++ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
++
++ event.type = i > 1 ?
++ bubbleType :
++ special.bindType || type;
++
++ // jQuery handler
++ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
++ if ( handle ) {
++ handle.apply( cur, data );
++ }
++
++ // Native handler
++ handle = ontype && cur[ ontype ];
++ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
++ event.preventDefault();
++ }
++ }
++ event.type = type;
++
++ // If nobody prevented the default action, do it now
++ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
++
++ if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
++ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
++
++ // Call a native DOM method on the target with the same name name as the event.
++ // Can't use an .isFunction() check here because IE6/7 fails that test.
++ // Don't do default actions on window, that's where global variables be (#6170)
++ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
++
++ // Don't re-trigger an onFOO event when we call its FOO() method
++ tmp = elem[ ontype ];
++
++ if ( tmp ) {
++ elem[ ontype ] = null;
++ }
++
++ // Prevent re-triggering of the same event, since we already bubbled it above
++ jQuery.event.triggered = type;
++ try {
++ elem[ type ]();
++ } catch ( e ) {
++ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
++ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
++ }
++ jQuery.event.triggered = undefined;
++
++ if ( tmp ) {
++ elem[ ontype ] = tmp;
++ }
++ }
++ }
++ }
++
++ return event.result;
++ },
++
++ dispatch: function( event ) {
++
++ // Make a writable jQuery.Event from the native event object
++ event = jQuery.event.fix( event );
++
++ var i, ret, handleObj, matched, j,
++ handlerQueue = [],
++ args = core_slice.call( arguments ),
++ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
++ special = jQuery.event.special[ event.type ] || {};
++
++ // Use the fix-ed jQuery.Event rather than the (read-only) native event
++ args[0] = event;
++ event.delegateTarget = this;
++
++ // Call the preDispatch hook for the mapped type, and let it bail if desired
++ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
++ return;
++ }
++
++ // Determine handlers
++ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
++
++ // Run delegates first; they may want to stop propagation beneath us
++ i = 0;
++ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
++ event.currentTarget = matched.elem;
++
++ j = 0;
++ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
++
++ // Triggered event must either 1) have no namespace, or
++ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
++ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
++
++ event.handleObj = handleObj;
++ event.data = handleObj.data;
++
++ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
++ .apply( matched.elem, args );
++
++ if ( ret !== undefined ) {
++ if ( (event.result = ret) === false ) {
++ event.preventDefault();
++ event.stopPropagation();
++ }
++ }
++ }
++ }
++ }
++
++ // Call the postDispatch hook for the mapped type
++ if ( special.postDispatch ) {
++ special.postDispatch.call( this, event );
++ }
++
++ return event.result;
++ },
++
++ handlers: function( event, handlers ) {
++ var sel, handleObj, matches, i,
++ handlerQueue = [],
++ delegateCount = handlers.delegateCount,
++ cur = event.target;
++
++ // Find delegate handlers
++ // Black-hole SVG <use> instance trees (#13180)
++ // Avoid non-left-click bubbling in Firefox (#3861)
++ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
++
++ for ( ; cur != this; cur = cur.parentNode || this ) {
++
++ // Don't check non-elements (#13208)
++ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
++ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
++ matches = [];
++ for ( i = 0; i < delegateCount; i++ ) {
++ handleObj = handlers[ i ];
++
++ // Don't conflict with Object.prototype properties (#13203)
++ sel = handleObj.selector + " ";
++
++ if ( matches[ sel ] === undefined ) {
++ matches[ sel ] = handleObj.needsContext ?
++ jQuery( sel, this ).index( cur ) >= 0 :
++ jQuery.find( sel, this, null, [ cur ] ).length;
++ }
++ if ( matches[ sel ] ) {
++ matches.push( handleObj );
++ }
++ }
++ if ( matches.length ) {
++ handlerQueue.push({ elem: cur, handlers: matches });
++ }
++ }
++ }
++ }
++
++ // Add the remaining (directly-bound) handlers
++ if ( delegateCount < handlers.length ) {
++ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
++ }
++
++ return handlerQueue;
++ },
++
++ fix: function( event ) {
++ if ( event[ jQuery.expando ] ) {
++ return event;
++ }
++
++ // Create a writable copy of the event object and normalize some properties
++ var i, prop, copy,
++ type = event.type,
++ originalEvent = event,
++ fixHook = this.fixHooks[ type ];
++
++ if ( !fixHook ) {
++ this.fixHooks[ type ] = fixHook =
++ rmouseEvent.test( type ) ? this.mouseHooks :
++ rkeyEvent.test( type ) ? this.keyHooks :
++ {};
++ }
++ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
++
++ event = new jQuery.Event( originalEvent );
++
++ i = copy.length;
++ while ( i-- ) {
++ prop = copy[ i ];
++ event[ prop ] = originalEvent[ prop ];
++ }
++
++ // Support: IE<9
++ // Fix target property (#1925)
++ if ( !event.target ) {
++ event.target = originalEvent.srcElement || document;
++ }
++
++ // Support: Chrome 23+, Safari?
++ // Target should not be a text node (#504, #13143)
++ if ( event.target.nodeType === 3 ) {
++ event.target = event.target.parentNode;
++ }
++
++ // Support: IE<9
++ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
++ event.metaKey = !!event.metaKey;
++
++ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
++ },
++
++ // Includes some event props shared by KeyEvent and MouseEvent
++ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
++
++ fixHooks: {},
++
++ keyHooks: {
++ props: "char charCode key keyCode".split(" "),
++ filter: function( event, original ) {
++
++ // Add which for key events
++ if ( event.which == null ) {
++ event.which = original.charCode != null ? original.charCode : original.keyCode;
++ }
++
++ return event;
++ }
++ },
++
++ mouseHooks: {
++ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
++ filter: function( event, original ) {
++ var body, eventDoc, doc,
++ button = original.button,
++ fromElement = original.fromElement;
++
++ // Calculate pageX/Y if missing and clientX/Y available
++ if ( event.pageX == null && original.clientX != null ) {
++ eventDoc = event.target.ownerDocument || document;
++ doc = eventDoc.documentElement;
++ body = eventDoc.body;
++
++ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
++ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
++ }
++
++ // Add relatedTarget, if necessary
++ if ( !event.relatedTarget && fromElement ) {
++ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
++ }
++
++ // Add which for click: 1 === left; 2 === middle; 3 === right
++ // Note: button is not normalized, so don't use it
++ if ( !event.which && button !== undefined ) {
++ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
++ }
++
++ return event;
++ }
++ },
++
++ special: {
++ load: {
++ // Prevent triggered image.load events from bubbling to window.load
++ noBubble: true
++ },
++ click: {
++ // For checkbox, fire native event so checked state will be right
++ trigger: function() {
++ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
++ this.click();
++ return false;
++ }
++ }
++ },
++ focus: {
++ // Fire native event if possible so blur/focus sequence is correct
++ trigger: function() {
++ if ( this !== document.activeElement && this.focus ) {
++ try {
++ this.focus();
++ return false;
++ } catch ( e ) {
++ // Support: IE<9
++ // If we error on focus to hidden element (#1486, #12518),
++ // let .trigger() run the handlers
++ }
++ }
++ },
++ delegateType: "focusin"
++ },
++ blur: {
++ trigger: function() {
++ if ( this === document.activeElement && this.blur ) {
++ this.blur();
++ return false;
++ }
++ },
++ delegateType: "focusout"
++ },
++
++ beforeunload: {
++ postDispatch: function( event ) {
++
++ // Even when returnValue equals to undefined Firefox will still show alert
++ if ( event.result !== undefined ) {
++ event.originalEvent.returnValue = event.result;
++ }
++ }
++ }
++ },
++
++ simulate: function( type, elem, event, bubble ) {
++ // Piggyback on a donor event to simulate a different one.
++ // Fake originalEvent to avoid donor's stopPropagation, but if the
++ // simulated event prevents default then we do the same on the donor.
++ var e = jQuery.extend(
++ new jQuery.Event(),
++ event,
++ { type: type,
++ isSimulated: true,
++ originalEvent: {}
++ }
++ );
++ if ( bubble ) {
++ jQuery.event.trigger( e, null, elem );
++ } else {
++ jQuery.event.dispatch.call( elem, e );
++ }
++ if ( e.isDefaultPrevented() ) {
++ event.preventDefault();
++ }
++ }
++};
++
++jQuery.removeEvent = document.removeEventListener ?
++ function( elem, type, handle ) {
++ if ( elem.removeEventListener ) {
++ elem.removeEventListener( type, handle, false );
++ }
++ } :
++ function( elem, type, handle ) {
++ var name = "on" + type;
++
++ if ( elem.detachEvent ) {
++
++ // #8545, #7054, preventing memory leaks for custom events in IE6-8
++ // detachEvent needed property on element, by name of that event, to properly expose it to GC
++ if ( typeof elem[ name ] === core_strundefined ) {
++ elem[ name ] = null;
++ }
++
++ elem.detachEvent( name, handle );
++ }
++ };
++
++jQuery.Event = function( src, props ) {
++ // Allow instantiation without the 'new' keyword
++ if ( !(this instanceof jQuery.Event) ) {
++ return new jQuery.Event( src, props );
++ }
++
++ // Event object
++ if ( src && src.type ) {
++ this.originalEvent = src;
++ this.type = src.type;
++
++ // Events bubbling up the document may have been marked as prevented
++ // by a handler lower down the tree; reflect the correct value.
++ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
++ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
++
++ // Event type
++ } else {
++ this.type = src;
++ }
++
++ // Put explicitly provided properties onto the event object
++ if ( props ) {
++ jQuery.extend( this, props );
++ }
++
++ // Create a timestamp if incoming event doesn't have one
++ this.timeStamp = src && src.timeStamp || jQuery.now();
++
++ // Mark it as fixed
++ this[ jQuery.expando ] = true;
++};
++
++// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
++// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
++jQuery.Event.prototype = {
++ isDefaultPrevented: returnFalse,
++ isPropagationStopped: returnFalse,
++ isImmediatePropagationStopped: returnFalse,
++
++ preventDefault: function() {
++ var e = this.originalEvent;
++
++ this.isDefaultPrevented = returnTrue;
++ if ( !e ) {
++ return;
++ }
++
++ // If preventDefault exists, run it on the original event
++ if ( e.preventDefault ) {
++ e.preventDefault();
++
++ // Support: IE
++ // Otherwise set the returnValue property of the original event to false
++ } else {
++ e.returnValue = false;
++ }
++ },
++ stopPropagation: function() {
++ var e = this.originalEvent;
++
++ this.isPropagationStopped = returnTrue;
++ if ( !e ) {
++ return;
++ }
++ // If stopPropagation exists, run it on the original event
++ if ( e.stopPropagation ) {
++ e.stopPropagation();
++ }
++
++ // Support: IE
++ // Set the cancelBubble property of the original event to true
++ e.cancelBubble = true;
++ },
++ stopImmediatePropagation: function() {
++ this.isImmediatePropagationStopped = returnTrue;
++ this.stopPropagation();
++ }
++};
++
++// Create mouseenter/leave events using mouseover/out and event-time checks
++jQuery.each({
++ mouseenter: "mouseover",
++ mouseleave: "mouseout"
++}, function( orig, fix ) {
++ jQuery.event.special[ orig ] = {
++ delegateType: fix,
++ bindType: fix,
++
++ handle: function( event ) {
++ var ret,
++ target = this,
++ related = event.relatedTarget,
++ handleObj = event.handleObj;
++
++ // For mousenter/leave call the handler if related is outside the target.
++ // NB: No relatedTarget if the mouse left/entered the browser window
++ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
++ event.type = handleObj.origType;
++ ret = handleObj.handler.apply( this, arguments );
++ event.type = fix;
++ }
++ return ret;
++ }
++ };
++});
++
++// IE submit delegation
++if ( !jQuery.support.submitBubbles ) {
++
++ jQuery.event.special.submit = {
++ setup: function() {
++ // Only need this for delegated form submit events
++ if ( jQuery.nodeName( this, "form" ) ) {
++ return false;
++ }
++
++ // Lazy-add a submit handler when a descendant form may potentially be submitted
++ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
++ // Node name check avoids a VML-related crash in IE (#9807)
++ var elem = e.target,
++ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
++ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
++ jQuery.event.add( form, "submit._submit", function( event ) {
++ event._submit_bubble = true;
++ });
++ jQuery._data( form, "submitBubbles", true );
++ }
++ });
++ // return undefined since we don't need an event listener
++ },
++
++ postDispatch: function( event ) {
++ // If form was submitted by the user, bubble the event up the tree
++ if ( event._submit_bubble ) {
++ delete event._submit_bubble;
++ if ( this.parentNode && !event.isTrigger ) {
++ jQuery.event.simulate( "submit", this.parentNode, event, true );
++ }
++ }
++ },
++
++ teardown: function() {
++ // Only need this for delegated form submit events
++ if ( jQuery.nodeName( this, "form" ) ) {
++ return false;
++ }
++
++ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
++ jQuery.event.remove( this, "._submit" );
++ }
++ };
++}
++
++// IE change delegation and checkbox/radio fix
++if ( !jQuery.support.changeBubbles ) {
++
++ jQuery.event.special.change = {
++
++ setup: function() {
++
++ if ( rformElems.test( this.nodeName ) ) {
++ // IE doesn't fire change on a check/radio until blur; trigger it on click
++ // after a propertychange. Eat the blur-change in special.change.handle.
++ // This still fires onchange a second time for check/radio after blur.
++ if ( this.type === "checkbox" || this.type === "radio" ) {
++ jQuery.event.add( this, "propertychange._change", function( event ) {
++ if ( event.originalEvent.propertyName === "checked" ) {
++ this._just_changed = true;
++ }
++ });
++ jQuery.event.add( this, "click._change", function( event ) {
++ if ( this._just_changed && !event.isTrigger ) {
++ this._just_changed = false;
++ }
++ // Allow triggered, simulated change events (#11500)
++ jQuery.event.simulate( "change", this, event, true );
++ });
++ }
++ return false;
++ }
++ // Delegated event; lazy-add a change handler on descendant inputs
++ jQuery.event.add( this, "beforeactivate._change", function( e ) {
++ var elem = e.target;
++
++ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
++ jQuery.event.add( elem, "change._change", function( event ) {
++ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
++ jQuery.event.simulate( "change", this.parentNode, event, true );
++ }
++ });
++ jQuery._data( elem, "changeBubbles", true );
++ }
++ });
++ },
++
++ handle: function( event ) {
++ var elem = event.target;
++
++ // Swallow native change events from checkbox/radio, we already triggered them above
++ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
++ return event.handleObj.handler.apply( this, arguments );
++ }
++ },
++
++ teardown: function() {
++ jQuery.event.remove( this, "._change" );
++
++ return !rformElems.test( this.nodeName );
++ }
++ };
++}
++
++// Create "bubbling" focus and blur events
++if ( !jQuery.support.focusinBubbles ) {
++ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
++
++ // Attach a single capturing handler while someone wants focusin/focusout
++ var attaches = 0,
++ handler = function( event ) {
++ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
++ };
++
++ jQuery.event.special[ fix ] = {
++ setup: function() {
++ if ( attaches++ === 0 ) {
++ document.addEventListener( orig, handler, true );
++ }
++ },
++ teardown: function() {
++ if ( --attaches === 0 ) {
++ document.removeEventListener( orig, handler, true );
++ }
++ }
++ };
++ });
++}
++
++jQuery.fn.extend({
++
++ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
++ var type, origFn;
++
++ // Types can be a map of types/handlers
++ if ( typeof types === "object" ) {
++ // ( types-Object, selector, data )
++ if ( typeof selector !== "string" ) {
++ // ( types-Object, data )
++ data = data || selector;
++ selector = undefined;
++ }
++ for ( type in types ) {
++ this.on( type, selector, data, types[ type ], one );
++ }
++ return this;
++ }
++
++ if ( data == null && fn == null ) {
++ // ( types, fn )
++ fn = selector;
++ data = selector = undefined;
++ } else if ( fn == null ) {
++ if ( typeof selector === "string" ) {
++ // ( types, selector, fn )
++ fn = data;
++ data = undefined;
++ } else {
++ // ( types, data, fn )
++ fn = data;
++ data = selector;
++ selector = undefined;
++ }
++ }
++ if ( fn === false ) {
++ fn = returnFalse;
++ } else if ( !fn ) {
++ return this;
++ }
++
++ if ( one === 1 ) {
++ origFn = fn;
++ fn = function( event ) {
++ // Can use an empty set, since event contains the info
++ jQuery().off( event );
++ return origFn.apply( this, arguments );
++ };
++ // Use same guid so caller can remove using origFn
++ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
++ }
++ return this.each( function() {
++ jQuery.event.add( this, types, fn, data, selector );
++ });
++ },
++ one: function( types, selector, data, fn ) {
++ return this.on( types, selector, data, fn, 1 );
++ },
++ off: function( types, selector, fn ) {
++ var handleObj, type;
++ if ( types && types.preventDefault && types.handleObj ) {
++ // ( event ) dispatched jQuery.Event
++ handleObj = types.handleObj;
++ jQuery( types.delegateTarget ).off(
++ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
++ handleObj.selector,
++ handleObj.handler
++ );
++ return this;
++ }
++ if ( typeof types === "object" ) {
++ // ( types-object [, selector] )
++ for ( type in types ) {
++ this.off( type, selector, types[ type ] );
++ }
++ return this;
++ }
++ if ( selector === false || typeof selector === "function" ) {
++ // ( types [, fn] )
++ fn = selector;
++ selector = undefined;
++ }
++ if ( fn === false ) {
++ fn = returnFalse;
++ }
++ return this.each(function() {
++ jQuery.event.remove( this, types, fn, selector );
++ });
++ },
++
++ bind: function( types, data, fn ) {
++ return this.on( types, null, data, fn );
++ },
++ unbind: function( types, fn ) {
++ return this.off( types, null, fn );
++ },
++
++ delegate: function( selector, types, data, fn ) {
++ return this.on( types, selector, data, fn );
++ },
++ undelegate: function( selector, types, fn ) {
++ // ( namespace ) or ( selector, types [, fn] )
++ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
++ },
++
++ trigger: function( type, data ) {
++ return this.each(function() {
++ jQuery.event.trigger( type, data, this );
++ });
++ },
++ triggerHandler: function( type, data ) {
++ var elem = this[0];
++ if ( elem ) {
++ return jQuery.event.trigger( type, data, elem, true );
++ }
++ }
++});
++/*!
++ * Sizzle CSS Selector Engine
++ * Copyright 2012 jQuery Foundation and other contributors
++ * Released under the MIT license
++ * http://sizzlejs.com/
++ */
++(function( window, undefined ) {
++
++var i,
++ cachedruns,
++ Expr,
++ getText,
++ isXML,
++ compile,
++ hasDuplicate,
++ outermostContext,
++
++ // Local document vars
++ setDocument,
++ document,
++ docElem,
++ documentIsXML,
++ rbuggyQSA,
++ rbuggyMatches,
++ matches,
++ contains,
++ sortOrder,
++
++ // Instance-specific data
++ expando = "sizzle" + -(new Date()),
++ preferredDoc = window.document,
++ support = {},
++ dirruns = 0,
++ done = 0,
++ classCache = createCache(),
++ tokenCache = createCache(),
++ compilerCache = createCache(),
++
++ // General-purpose constants
++ strundefined = typeof undefined,
++ MAX_NEGATIVE = 1 << 31,
++
++ // Array methods
++ arr = [],
++ pop = arr.pop,
++ push = arr.push,
++ slice = arr.slice,
++ // Use a stripped-down indexOf if we can't use a native one
++ indexOf = arr.indexOf || function( elem ) {
++ var i = 0,
++ len = this.length;
++ for ( ; i < len; i++ ) {
++ if ( this[i] === elem ) {
++ return i;
++ }
++ }
++ return -1;
++ },
++
++
++ // Regular expressions
++
++ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
++ whitespace = "[\\x20\\t\\r\\n\\f]",
++ // http://www.w3.org/TR/css3-syntax/#characters
++ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
++
++ // Loosely modeled on CSS identifier characters
++ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
++ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
++ identifier = characterEncoding.replace( "w", "w#" ),
++
++ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
++ operators = "([*^$|!~]?=)",
++ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
++ "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
++
++ // Prefer arguments quoted,
++ // then not containing pseudos/brackets,
++ // then attribute selectors/non-parenthetical expressions,
++ // then anything else
++ // These preferences are here to reduce the number of selectors
++ // needing tokenize in the PSEUDO preFilter
++ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
++
++ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
++ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
++
++ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
++ rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
++ rpseudo = new RegExp( pseudos ),
++ ridentifier = new RegExp( "^" + identifier + "$" ),
++
++ matchExpr = {
++ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
++ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
++ "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
++ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
++ "ATTR": new RegExp( "^" + attributes ),
++ "PSEUDO": new RegExp( "^" + pseudos ),
++ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
++ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
++ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
++ // For use in libraries implementing .is()
++ // We use this for POS matching in `select`
++ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
++ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
++ },
++
++ rsibling = /[\x20\t\r\n\f]*[+~]/,
++
++ rnative = /^[^{]+\{\s*\[native code/,
++
++ // Easily-parseable/retrievable ID or TAG or CLASS selectors
++ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
++
++ rinputs = /^(?:input|select|textarea|button)$/i,
++ rheader = /^h\d$/i,
++
++ rescape = /'|\\/g,
++ rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
++
++ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
++ runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
++ funescape = function( _, escaped ) {
++ var high = "0x" + escaped - 0x10000;
++ // NaN means non-codepoint
++ return high !== high ?
++ escaped :
++ // BMP codepoint
++ high < 0 ?
++ String.fromCharCode( high + 0x10000 ) :
++ // Supplemental Plane codepoint (surrogate pair)
++ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
++ };
++
++// Use a stripped-down slice if we can't use a native one
++try {
++ slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
++} catch ( e ) {
++ slice = function( i ) {
++ var elem,
++ results = [];
++ while ( (elem = this[i++]) ) {
++ results.push( elem );
++ }
++ return results;
++ };
++}
++
++/**
++ * For feature detection
++ * @param {Function} fn The function to test for native support
++ */
++function isNative( fn ) {
++ return rnative.test( fn + "" );
++}
++
++/**
++ * Create key-value caches of limited size
++ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
++ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
++ * deleting the oldest entry
++ */
++function createCache() {
++ var cache,
++ keys = [];
++
++ return (cache = function( key, value ) {
++ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
++ if ( keys.push( key += " " ) > Expr.cacheLength ) {
++ // Only keep the most recent entries
++ delete cache[ keys.shift() ];
++ }
++ return (cache[ key ] = value);
++ });
++}
++
++/**
++ * Mark a function for special use by Sizzle
++ * @param {Function} fn The function to mark
++ */
++function markFunction( fn ) {
++ fn[ expando ] = true;
++ return fn;
++}
++
++/**
++ * Support testing using an element
++ * @param {Function} fn Passed the created div and expects a boolean result
++ */
++function assert( fn ) {
++ var div = document.createElement("div");
++
++ try {
++ return fn( div );
++ } catch (e) {
++ return false;
++ } finally {
++ // release memory in IE
++ div = null;
++ }
++}
++
++function Sizzle( selector, context, results, seed ) {
++ var match, elem, m, nodeType,
++ // QSA vars
++ i, groups, old, nid, newContext, newSelector;
++
++ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
++ setDocument( context );
++ }
++
++ context = context || document;
++ results = results || [];
++
++ if ( !selector || typeof selector !== "string" ) {
++ return results;
++ }
++
++ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
++ return [];
++ }
++
++ if ( !documentIsXML && !seed ) {
++
++ // Shortcuts
++ if ( (match = rquickExpr.exec( selector )) ) {
++ // Speed-up: Sizzle("#ID")
++ if ( (m = match[1]) ) {
++ if ( nodeType === 9 ) {
++ elem = context.getElementById( m );
++ // Check parentNode to catch when Blackberry 4.6 returns
++ // nodes that are no longer in the document #6963
++ if ( elem && elem.parentNode ) {
++ // Handle the case where IE, Opera, and Webkit return items
++ // by name instead of ID
++ if ( elem.id === m ) {
++ results.push( elem );
++ return results;
++ }
++ } else {
++ return results;
++ }
++ } else {
++ // Context is not a document
++ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
++ contains( context, elem ) && elem.id === m ) {
++ results.push( elem );
++ return results;
++ }
++ }
++
++ // Speed-up: Sizzle("TAG")
++ } else if ( match[2] ) {
++ push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
++ return results;
++
++ // Speed-up: Sizzle(".CLASS")
++ } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {
++ push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
++ return results;
++ }
++ }
++
++ // QSA path
++ if ( support.qsa && !rbuggyQSA.test(selector) ) {
++ old = true;
++ nid = expando;
++ newContext = context;
++ newSelector = nodeType === 9 && selector;
++
++ // qSA works strangely on Element-rooted queries
++ // We can work around this by specifying an extra ID on the root
++ // and working up from there (Thanks to Andrew Dupont for the technique)
++ // IE 8 doesn't work on object elements
++ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
++ groups = tokenize( selector );
++
++ if ( (old = context.getAttribute("id")) ) {
++ nid = old.replace( rescape, "\\$&" );
++ } else {
++ context.setAttribute( "id", nid );
++ }
++ nid = "[id='" + nid + "'] ";
++
++ i = groups.length;
++ while ( i-- ) {
++ groups[i] = nid + toSelector( groups[i] );
++ }
++ newContext = rsibling.test( selector ) && context.parentNode || context;
++ newSelector = groups.join(",");
++ }
++
++ if ( newSelector ) {
++ try {
++ push.apply( results, slice.call( newContext.querySelectorAll(
++ newSelector
++ ), 0 ) );
++ return results;
++ } catch(qsaError) {
++ } finally {
++ if ( !old ) {
++ context.removeAttribute("id");
++ }
++ }
++ }
++ }
++ }
++
++ // All others
++ return select( selector.replace( rtrim, "$1" ), context, results, seed );
++}
++
++/**
++ * Detect xml
++ * @param {Element|Object} elem An element or a document
++ */
++isXML = Sizzle.isXML = function( elem ) {
++ // documentElement is verified for cases where it doesn't yet exist
++ // (such as loading iframes in IE - #4833)
++ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
++ return documentElement ? documentElement.nodeName !== "HTML" : false;
++};
++
++/**
++ * Sets document-related variables once based on the current document
++ * @param {Element|Object} [doc] An element or document object to use to set the document
++ * @returns {Object} Returns the current document
++ */
++setDocument = Sizzle.setDocument = function( node ) {
++ var doc = node ? node.ownerDocument || node : preferredDoc;
++
++ // If no document and documentElement is available, return
++ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
++ return document;
++ }
++
++ // Set our document
++ document = doc;
++ docElem = doc.documentElement;
++
++ // Support tests
++ documentIsXML = isXML( doc );
++
++ // Check if getElementsByTagName("*") returns only elements
++ support.tagNameNoComments = assert(function( div ) {
++ div.appendChild( doc.createComment("") );
++ return !div.getElementsByTagName("*").length;
++ });
++
++ // Check if attributes should be retrieved by attribute nodes
++ support.attributes = assert(function( div ) {
++ div.innerHTML = "<select></select>";
++ var type = typeof div.lastChild.getAttribute("multiple");
++ // IE8 returns a string for some attributes even when not present
++ return type !== "boolean" && type !== "string";
++ });
++
++ // Check if getElementsByClassName can be trusted
++ support.getByClassName = assert(function( div ) {
++ // Opera can't find a second classname (in 9.6)
++ div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
++ if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
++ return false;
++ }
++
++ // Safari 3.2 caches class attributes and doesn't catch changes
++ div.lastChild.className = "e";
++ return div.getElementsByClassName("e").length === 2;
++ });
++
++ // Check if getElementById returns elements by name
++ // Check if getElementsByName privileges form controls or returns elements by ID
++ support.getByName = assert(function( div ) {
++ // Inject content
++ div.id = expando + 0;
++ div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
++ docElem.insertBefore( div, docElem.firstChild );
++
++ // Test
++ var pass = doc.getElementsByName &&
++ // buggy browsers will return fewer than the correct 2
++ doc.getElementsByName( expando ).length === 2 +
++ // buggy browsers will return more than the correct 0
++ doc.getElementsByName( expando + 0 ).length;
++ support.getIdNotName = !doc.getElementById( expando );
++
++ // Cleanup
++ docElem.removeChild( div );
++
++ return pass;
++ });
++
++ // IE6/7 return modified attributes
++ Expr.attrHandle = assert(function( div ) {
++ div.innerHTML = "<a href='#'></a>";
++ return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
++ div.firstChild.getAttribute("href") === "#";
++ }) ?
++ {} :
++ {
++ "href": function( elem ) {
++ return elem.getAttribute( "href", 2 );
++ },
++ "type": function( elem ) {
++ return elem.getAttribute("type");
++ }
++ };
++
++ // ID find and filter
++ if ( support.getIdNotName ) {
++ Expr.find["ID"] = function( id, context ) {
++ if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
++ var m = context.getElementById( id );
++ // Check parentNode to catch when Blackberry 4.6 returns
++ // nodes that are no longer in the document #6963
++ return m && m.parentNode ? [m] : [];
++ }
++ };
++ Expr.filter["ID"] = function( id ) {
++ var attrId = id.replace( runescape, funescape );
++ return function( elem ) {
++ return elem.getAttribute("id") === attrId;
++ };
++ };
++ } else {
++ Expr.find["ID"] = function( id, context ) {
++ if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
++ var m = context.getElementById( id );
++
++ return m ?
++ m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
++ [m] :
++ undefined :
++ [];
++ }
++ };
++ Expr.filter["ID"] = function( id ) {
++ var attrId = id.replace( runescape, funescape );
++ return function( elem ) {
++ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
++ return node && node.value === attrId;
++ };
++ };
++ }
++
++ // Tag
++ Expr.find["TAG"] = support.tagNameNoComments ?
++ function( tag, context ) {
++ if ( typeof context.getElementsByTagName !== strundefined ) {
++ return context.getElementsByTagName( tag );
++ }
++ } :
++ function( tag, context ) {
++ var elem,
++ tmp = [],
++ i = 0,
++ results = context.getElementsByTagName( tag );
++
++ // Filter out possible comments
++ if ( tag === "*" ) {
++ while ( (elem = results[i++]) ) {
++ if ( elem.nodeType === 1 ) {
++ tmp.push( elem );
++ }
++ }
++
++ return tmp;
++ }
++ return results;
++ };
++
++ // Name
++ Expr.find["NAME"] = support.getByName && function( tag, context ) {
++ if ( typeof context.getElementsByName !== strundefined ) {
++ return context.getElementsByName( name );
++ }
++ };
++
++ // Class
++ Expr.find["CLASS"] = support.getByClassName && function( className, context ) {
++ if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {
++ return context.getElementsByClassName( className );
++ }
++ };
++
++ // QSA and matchesSelector support
++
++ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
++ rbuggyMatches = [];
++
++ // qSa(:focus) reports false when true (Chrome 21),
++ // no need to also add to buggyMatches since matches checks buggyQSA
++ // A support test would require too much code (would include document ready)
++ rbuggyQSA = [ ":focus" ];
++
++ if ( (support.qsa = isNative(doc.querySelectorAll)) ) {
++ // Build QSA regex
++ // Regex strategy adopted from Diego Perini
++ assert(function( div ) {
++ // Select is set to empty string on purpose
++ // This is to test IE's treatment of not explictly
++ // setting a boolean content attribute,
++ // since its presence should be enough
++ // http://bugs.jquery.com/ticket/12359
++ div.innerHTML = "<select><option selected=''></option></select>";
++
++ // IE8 - Some boolean attributes are not treated correctly
++ if ( !div.querySelectorAll("[selected]").length ) {
++ rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
++ }
++
++ // Webkit/Opera - :checked should return selected option elements
++ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
++ // IE8 throws error here and will not see later tests
++ if ( !div.querySelectorAll(":checked").length ) {
++ rbuggyQSA.push(":checked");
++ }
++ });
++
++ assert(function( div ) {
++
++ // Opera 10-12/IE8 - ^= $= *= and empty values
++ // Should not select anything
++ div.innerHTML = "<input type='hidden' i=''/>";
++ if ( div.querySelectorAll("[i^='']").length ) {
++ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
++ }
++
++ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
++ // IE8 throws error here and will not see later tests
++ if ( !div.querySelectorAll(":enabled").length ) {
++ rbuggyQSA.push( ":enabled", ":disabled" );
++ }
++
++ // Opera 10-11 does not throw on post-comma invalid pseudos
++ div.querySelectorAll("*,:x");
++ rbuggyQSA.push(",.*:");
++ });
++ }
++
++ if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||
++ docElem.mozMatchesSelector ||
++ docElem.webkitMatchesSelector ||
++ docElem.oMatchesSelector ||
++ docElem.msMatchesSelector) )) ) {
++
++ assert(function( div ) {
++ // Check to see if it's possible to do matchesSelector
++ // on a disconnected node (IE 9)
++ support.disconnectedMatch = matches.call( div, "div" );
++
++ // This should fail with an exception
++ // Gecko does not error, returns false instead
++ matches.call( div, "[s!='']:x" );
++ rbuggyMatches.push( "!=", pseudos );
++ });
++ }
++
++ rbuggyQSA = new RegExp( rbuggyQSA.join("|") );
++ rbuggyMatches = new RegExp( rbuggyMatches.join("|") );
++
++ // Element contains another
++ // Purposefully does not implement inclusive descendent
++ // As in, an element does not contain itself
++ contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
++ function( a, b ) {
++ var adown = a.nodeType === 9 ? a.documentElement : a,
++ bup = b && b.parentNode;
++ return a === bup || !!( bup && bup.nodeType === 1 && (
++ adown.contains ?
++ adown.contains( bup ) :
++ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
++ ));
++ } :
++ function( a, b ) {
++ if ( b ) {
++ while ( (b = b.parentNode) ) {
++ if ( b === a ) {
++ return true;
++ }
++ }
++ }
++ return false;
++ };
++
++ // Document order sorting
++ sortOrder = docElem.compareDocumentPosition ?
++ function( a, b ) {
++ var compare;
++
++ if ( a === b ) {
++ hasDuplicate = true;
++ return 0;
++ }
++
++ if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {
++ if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {
++ if ( a === doc || contains( preferredDoc, a ) ) {
++ return -1;
++ }
++ if ( b === doc || contains( preferredDoc, b ) ) {
++ return 1;
++ }
++ return 0;
++ }
++ return compare & 4 ? -1 : 1;
++ }
++
++ return a.compareDocumentPosition ? -1 : 1;
++ } :
++ function( a, b ) {
++ var cur,
++ i = 0,
++ aup = a.parentNode,
++ bup = b.parentNode,
++ ap = [ a ],
++ bp = [ b ];
++
++ // Exit early if the nodes are identical
++ if ( a === b ) {
++ hasDuplicate = true;
++ return 0;
++
++ // Parentless nodes are either documents or disconnected
++ } else if ( !aup || !bup ) {
++ return a === doc ? -1 :
++ b === doc ? 1 :
++ aup ? -1 :
++ bup ? 1 :
++ 0;
++
++ // If the nodes are siblings, we can do a quick check
++ } else if ( aup === bup ) {
++ return siblingCheck( a, b );
++ }
++
++ // Otherwise we need full lists of their ancestors for comparison
++ cur = a;
++ while ( (cur = cur.parentNode) ) {
++ ap.unshift( cur );
++ }
++ cur = b;
++ while ( (cur = cur.parentNode) ) {
++ bp.unshift( cur );
++ }
++
++ // Walk down the tree looking for a discrepancy
++ while ( ap[i] === bp[i] ) {
++ i++;
++ }
++
++ return i ?
++ // Do a sibling check if the nodes have a common ancestor
++ siblingCheck( ap[i], bp[i] ) :
++
++ // Otherwise nodes in our document sort first
++ ap[i] === preferredDoc ? -1 :
++ bp[i] === preferredDoc ? 1 :
++ 0;
++ };
++
++ // Always assume the presence of duplicates if sort doesn't
++ // pass them to our comparison function (as in Google Chrome).
++ hasDuplicate = false;
++ [0, 0].sort( sortOrder );
++ support.detectDuplicates = hasDuplicate;
++
++ return document;
++};
++
++Sizzle.matches = function( expr, elements ) {
++ return Sizzle( expr, null, null, elements );
++};
++
++Sizzle.matchesSelector = function( elem, expr ) {
++ // Set document vars if needed
++ if ( ( elem.ownerDocument || elem ) !== document ) {
++ setDocument( elem );
++ }
++
++ // Make sure that attribute selectors are quoted
++ expr = expr.replace( rattributeQuotes, "='$1']" );
++
++ // rbuggyQSA always contains :focus, so no need for an existence check
++ if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {
++ try {
++ var ret = matches.call( elem, expr );
++
++ // IE 9's matchesSelector returns false on disconnected nodes
++ if ( ret || support.disconnectedMatch ||
++ // As well, disconnected nodes are said to be in a document
++ // fragment in IE 9
++ elem.document && elem.document.nodeType !== 11 ) {
++ return ret;
++ }
++ } catch(e) {}
++ }
++
++ return Sizzle( expr, document, null, [elem] ).length > 0;
++};
++
++Sizzle.contains = function( context, elem ) {
++ // Set document vars if needed
++ if ( ( context.ownerDocument || context ) !== document ) {
++ setDocument( context );
++ }
++ return contains( context, elem );
++};
++
++Sizzle.attr = function( elem, name ) {
++ var val;
++
++ // Set document vars if needed
++ if ( ( elem.ownerDocument || elem ) !== document ) {
++ setDocument( elem );
++ }
++
++ if ( !documentIsXML ) {
++ name = name.toLowerCase();
++ }
++ if ( (val = Expr.attrHandle[ name ]) ) {
++ return val( elem );
++ }
++ if ( documentIsXML || support.attributes ) {
++ return elem.getAttribute( name );
++ }
++ return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?
++ name :
++ val && val.specified ? val.value : null;
++};
++
++Sizzle.error = function( msg ) {
++ throw new Error( "Syntax error, unrecognized expression: " + msg );
++};
++
++// Document sorting and removing duplicates
++Sizzle.uniqueSort = function( results ) {
++ var elem,
++ duplicates = [],
++ i = 1,
++ j = 0;
++
++ // Unless we *know* we can detect duplicates, assume their presence
++ hasDuplicate = !support.detectDuplicates;
++ results.sort( sortOrder );
++
++ if ( hasDuplicate ) {
++ for ( ; (elem = results[i]); i++ ) {
++ if ( elem === results[ i - 1 ] ) {
++ j = duplicates.push( i );
++ }
++ }
++ while ( j-- ) {
++ results.splice( duplicates[ j ], 1 );
++ }
++ }
++
++ return results;
++};
++
++function siblingCheck( a, b ) {
++ var cur = b && a,
++ diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
++
++ // Use IE sourceIndex if available on both nodes
++ if ( diff ) {
++ return diff;
++ }
++
++ // Check if b follows a
++ if ( cur ) {
++ while ( (cur = cur.nextSibling) ) {
++ if ( cur === b ) {
++ return -1;
++ }
++ }
++ }
++
++ return a ? 1 : -1;
++}
++
++// Returns a function to use in pseudos for input types
++function createInputPseudo( type ) {
++ return function( elem ) {
++ var name = elem.nodeName.toLowerCase();
++ return name === "input" && elem.type === type;
++ };
++}
++
++// Returns a function to use in pseudos for buttons
++function createButtonPseudo( type ) {
++ return function( elem ) {
++ var name = elem.nodeName.toLowerCase();
++ return (name === "input" || name === "button") && elem.type === type;
++ };
++}
++
++// Returns a function to use in pseudos for positionals
++function createPositionalPseudo( fn ) {
++ return markFunction(function( argument ) {
++ argument = +argument;
++ return markFunction(function( seed, matches ) {
++ var j,
++ matchIndexes = fn( [], seed.length, argument ),
++ i = matchIndexes.length;
++
++ // Match elements found at the specified indexes
++ while ( i-- ) {
++ if ( seed[ (j = matchIndexes[i]) ] ) {
++ seed[j] = !(matches[j] = seed[j]);
++ }
++ }
++ });
++ });
++}
++
++/**
++ * Utility function for retrieving the text value of an array of DOM nodes
++ * @param {Array|Element} elem
++ */
++getText = Sizzle.getText = function( elem ) {
++ var node,
++ ret = "",
++ i = 0,
++ nodeType = elem.nodeType;
++
++ if ( !nodeType ) {
++ // If no nodeType, this is expected to be an array
++ for ( ; (node = elem[i]); i++ ) {
++ // Do not traverse comment nodes
++ ret += getText( node );
++ }
++ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
++ // Use textContent for elements
++ // innerText usage removed for consistency of new lines (see #11153)
++ if ( typeof elem.textContent === "string" ) {
++ return elem.textContent;
++ } else {
++ // Traverse its children
++ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
++ ret += getText( elem );
++ }
++ }
++ } else if ( nodeType === 3 || nodeType === 4 ) {
++ return elem.nodeValue;
++ }
++ // Do not include comment or processing instruction nodes
++
++ return ret;
++};
++
++Expr = Sizzle.selectors = {
++
++ // Can be adjusted by the user
++ cacheLength: 50,
++
++ createPseudo: markFunction,
++
++ match: matchExpr,
++
++ find: {},
++
++ relative: {
++ ">": { dir: "parentNode", first: true },
++ " ": { dir: "parentNode" },
++ "+": { dir: "previousSibling", first: true },
++ "~": { dir: "previousSibling" }
++ },
++
++ preFilter: {
++ "ATTR": function( match ) {
++ match[1] = match[1].replace( runescape, funescape );
++
++ // Move the given value to match[3] whether quoted or unquoted
++ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
++
++ if ( match[2] === "~=" ) {
++ match[3] = " " + match[3] + " ";
++ }
++
++ return match.slice( 0, 4 );
++ },
++
++ "CHILD": function( match ) {
++ /* matches from matchExpr["CHILD"]
++ 1 type (only|nth|...)
++ 2 what (child|of-type)
++ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
++ 4 xn-component of xn+y argument ([+-]?\d*n|)
++ 5 sign of xn-component
++ 6 x of xn-component
++ 7 sign of y-component
++ 8 y of y-component
++ */
++ match[1] = match[1].toLowerCase();
++
++ if ( match[1].slice( 0, 3 ) === "nth" ) {
++ // nth-* requires argument
++ if ( !match[3] ) {
++ Sizzle.error( match[0] );
++ }
++
++ // numeric x and y parameters for Expr.filter.CHILD
++ // remember that false/true cast respectively to 0/1
++ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
++ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
++
++ // other types prohibit arguments
++ } else if ( match[3] ) {
++ Sizzle.error( match[0] );
++ }
++
++ return match;
++ },
++
++ "PSEUDO": function( match ) {
++ var excess,
++ unquoted = !match[5] && match[2];
++
++ if ( matchExpr["CHILD"].test( match[0] ) ) {
++ return null;
++ }
++
++ // Accept quoted arguments as-is
++ if ( match[4] ) {
++ match[2] = match[4];
++
++ // Strip excess characters from unquoted arguments
++ } else if ( unquoted && rpseudo.test( unquoted ) &&
++ // Get excess from tokenize (recursively)
++ (excess = tokenize( unquoted, true )) &&
++ // advance to the next closing parenthesis
++ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
++
++ // excess is a negative index
++ match[0] = match[0].slice( 0, excess );
++ match[2] = unquoted.slice( 0, excess );
++ }
++
++ // Return only captures needed by the pseudo filter method (type and argument)
++ return match.slice( 0, 3 );
++ }
++ },
++
++ filter: {
++
++ "TAG": function( nodeName ) {
++ if ( nodeName === "*" ) {
++ return function() { return true; };
++ }
++
++ nodeName = nodeName.replace( runescape, funescape ).toLowerCase();
++ return function( elem ) {
++ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
++ };
++ },
++
++ "CLASS": function( className ) {
++ var pattern = classCache[ className + " " ];
++
++ return pattern ||
++ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
++ classCache( className, function( elem ) {
++ return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
++ });
++ },
++
++ "ATTR": function( name, operator, check ) {
++ return function( elem ) {
++ var result = Sizzle.attr( elem, name );
++
++ if ( result == null ) {
++ return operator === "!=";
++ }
++ if ( !operator ) {
++ return true;
++ }
++
++ result += "";
++
++ return operator === "=" ? result === check :
++ operator === "!=" ? result !== check :
++ operator === "^=" ? check && result.indexOf( check ) === 0 :
++ operator === "*=" ? check && result.indexOf( check ) > -1 :
++ operator === "$=" ? check && result.slice( -check.length ) === check :
++ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
++ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
++ false;
++ };
++ },
++
++ "CHILD": function( type, what, argument, first, last ) {
++ var simple = type.slice( 0, 3 ) !== "nth",
++ forward = type.slice( -4 ) !== "last",
++ ofType = what === "of-type";
++
++ return first === 1 && last === 0 ?
++
++ // Shortcut for :nth-*(n)
++ function( elem ) {
++ return !!elem.parentNode;
++ } :
++
++ function( elem, context, xml ) {
++ var cache, outerCache, node, diff, nodeIndex, start,
++ dir = simple !== forward ? "nextSibling" : "previousSibling",
++ parent = elem.parentNode,
++ name = ofType && elem.nodeName.toLowerCase(),
++ useCache = !xml && !ofType;
++
++ if ( parent ) {
++
++ // :(first|last|only)-(child|of-type)
++ if ( simple ) {
++ while ( dir ) {
++ node = elem;
++ while ( (node = node[ dir ]) ) {
++ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
++ return false;
++ }
++ }
++ // Reverse direction for :only-* (if we haven't yet done so)
++ start = dir = type === "only" && !start && "nextSibling";
++ }
++ return true;
++ }
++
++ start = [ forward ? parent.firstChild : parent.lastChild ];
++
++ // non-xml :nth-child(...) stores cache data on `parent`
++ if ( forward && useCache ) {
++ // Seek `elem` from a previously-cached index
++ outerCache = parent[ expando ] || (parent[ expando ] = {});
++ cache = outerCache[ type ] || [];
++ nodeIndex = cache[0] === dirruns && cache[1];
++ diff = cache[0] === dirruns && cache[2];
++ node = nodeIndex && parent.childNodes[ nodeIndex ];
++
++ while ( (node = ++nodeIndex && node && node[ dir ] ||
++
++ // Fallback to seeking `elem` from the start
++ (diff = nodeIndex = 0) || start.pop()) ) {
++
++ // When found, cache indexes on `parent` and break
++ if ( node.nodeType === 1 && ++diff && node === elem ) {
++ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
++ break;
++ }
++ }
++
++ // Use previously-cached element index if available
++ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
++ diff = cache[1];
++
++ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
++ } else {
++ // Use the same loop as above to seek `elem` from the start
++ while ( (node = ++nodeIndex && node && node[ dir ] ||
++ (diff = nodeIndex = 0) || start.pop()) ) {
++
++ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
++ // Cache the index of each encountered element
++ if ( useCache ) {
++ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
++ }
++
++ if ( node === elem ) {
++ break;
++ }
++ }
++ }
++ }
++
++ // Incorporate the offset, then check against cycle size
++ diff -= last;
++ return diff === first || ( diff % first === 0 && diff / first >= 0 );
++ }
++ };
++ },
++
++ "PSEUDO": function( pseudo, argument ) {
++ // pseudo-class names are case-insensitive
++ // http://www.w3.org/TR/selectors/#pseudo-classes
++ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
++ // Remember that setFilters inherits from pseudos
++ var args,
++ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
++ Sizzle.error( "unsupported pseudo: " + pseudo );
++
++ // The user may use createPseudo to indicate that
++ // arguments are needed to create the filter function
++ // just as Sizzle does
++ if ( fn[ expando ] ) {
++ return fn( argument );
++ }
++
++ // But maintain support for old signatures
++ if ( fn.length > 1 ) {
++ args = [ pseudo, pseudo, "", argument ];
++ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
++ markFunction(function( seed, matches ) {
++ var idx,
++ matched = fn( seed, argument ),
++ i = matched.length;
++ while ( i-- ) {
++ idx = indexOf.call( seed, matched[i] );
++ seed[ idx ] = !( matches[ idx ] = matched[i] );
++ }
++ }) :
++ function( elem ) {
++ return fn( elem, 0, args );
++ };
++ }
++
++ return fn;
++ }
++ },
++
++ pseudos: {
++ // Potentially complex pseudos
++ "not": markFunction(function( selector ) {
++ // Trim the selector passed to compile
++ // to avoid treating leading and trailing
++ // spaces as combinators
++ var input = [],
++ results = [],
++ matcher = compile( selector.replace( rtrim, "$1" ) );
++
++ return matcher[ expando ] ?
++ markFunction(function( seed, matches, context, xml ) {
++ var elem,
++ unmatched = matcher( seed, null, xml, [] ),
++ i = seed.length;
++
++ // Match elements unmatched by `matcher`
++ while ( i-- ) {
++ if ( (elem = unmatched[i]) ) {
++ seed[i] = !(matches[i] = elem);
++ }
++ }
++ }) :
++ function( elem, context, xml ) {
++ input[0] = elem;
++ matcher( input, null, xml, results );
++ return !results.pop();
++ };
++ }),
++
++ "has": markFunction(function( selector ) {
++ return function( elem ) {
++ return Sizzle( selector, elem ).length > 0;
++ };
++ }),
++
++ "contains": markFunction(function( text ) {
++ return function( elem ) {
++ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
++ };
++ }),
++
++ // "Whether an element is represented by a :lang() selector
++ // is based solely on the element's language value
++ // being equal to the identifier C,
++ // or beginning with the identifier C immediately followed by "-".
++ // The matching of C against the element's language value is performed case-insensitively.
++ // The identifier C does not have to be a valid language name."
++ // http://www.w3.org/TR/selectors/#lang-pseudo
++ "lang": markFunction( function( lang ) {
++ // lang value must be a valid identifider
++ if ( !ridentifier.test(lang || "") ) {
++ Sizzle.error( "unsupported lang: " + lang );
++ }
++ lang = lang.replace( runescape, funescape ).toLowerCase();
++ return function( elem ) {
++ var elemLang;
++ do {
++ if ( (elemLang = documentIsXML ?
++ elem.getAttribute("xml:lang") || elem.getAttribute("lang") :
++ elem.lang) ) {
++
++ elemLang = elemLang.toLowerCase();
++ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
++ }
++ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
++ return false;
++ };
++ }),
++
++ // Miscellaneous
++ "target": function( elem ) {
++ var hash = window.location && window.location.hash;
++ return hash && hash.slice( 1 ) === elem.id;
++ },
++
++ "root": function( elem ) {
++ return elem === docElem;
++ },
++
++ "focus": function( elem ) {
++ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
++ },
++
++ // Boolean properties
++ "enabled": function( elem ) {
++ return elem.disabled === false;
++ },
++
++ "disabled": function( elem ) {
++ return elem.disabled === true;
++ },
++
++ "checked": function( elem ) {
++ // In CSS3, :checked should return both checked and selected elements
++ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
++ var nodeName = elem.nodeName.toLowerCase();
++ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
++ },
++
++ "selected": function( elem ) {
++ // Accessing this property makes selected-by-default
++ // options in Safari work properly
++ if ( elem.parentNode ) {
++ elem.parentNode.selectedIndex;
++ }
++
++ return elem.selected === true;
++ },
++
++ // Contents
++ "empty": function( elem ) {
++ // http://www.w3.org/TR/selectors/#empty-pseudo
++ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
++ // not comment, processing instructions, or others
++ // Thanks to Diego Perini for the nodeName shortcut
++ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
++ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
++ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
++ return false;
++ }
++ }
++ return true;
++ },
++
++ "parent": function( elem ) {
++ return !Expr.pseudos["empty"]( elem );
++ },
++
++ // Element/input types
++ "header": function( elem ) {
++ return rheader.test( elem.nodeName );
++ },
++
++ "input": function( elem ) {
++ return rinputs.test( elem.nodeName );
++ },
++
++ "button": function( elem ) {
++ var name = elem.nodeName.toLowerCase();
++ return name === "input" && elem.type === "button" || name === "button";
++ },
++
++ "text": function( elem ) {
++ var attr;
++ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
++ // use getAttribute instead to test this case
++ return elem.nodeName.toLowerCase() === "input" &&
++ elem.type === "text" &&
++ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
++ },
++
++ // Position-in-collection
++ "first": createPositionalPseudo(function() {
++ return [ 0 ];
++ }),
++
++ "last": createPositionalPseudo(function( matchIndexes, length ) {
++ return [ length - 1 ];
++ }),
++
++ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
++ return [ argument < 0 ? argument + length : argument ];
++ }),
++
++ "even": createPositionalPseudo(function( matchIndexes, length ) {
++ var i = 0;
++ for ( ; i < length; i += 2 ) {
++ matchIndexes.push( i );
++ }
++ return matchIndexes;
++ }),
++
++ "odd": createPositionalPseudo(function( matchIndexes, length ) {
++ var i = 1;
++ for ( ; i < length; i += 2 ) {
++ matchIndexes.push( i );
++ }
++ return matchIndexes;
++ }),
++
++ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
++ var i = argument < 0 ? argument + length : argument;
++ for ( ; --i >= 0; ) {
++ matchIndexes.push( i );
++ }
++ return matchIndexes;
++ }),
++
++ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
++ var i = argument < 0 ? argument + length : argument;
++ for ( ; ++i < length; ) {
++ matchIndexes.push( i );
++ }
++ return matchIndexes;
++ })
++ }
++};
++
++// Add button/input type pseudos
++for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
++ Expr.pseudos[ i ] = createInputPseudo( i );
++}
++for ( i in { submit: true, reset: true } ) {
++ Expr.pseudos[ i ] = createButtonPseudo( i );
++}
++
++function tokenize( selector, parseOnly ) {
++ var matched, match, tokens, type,
++ soFar, groups, preFilters,
++ cached = tokenCache[ selector + " " ];
++
++ if ( cached ) {
++ return parseOnly ? 0 : cached.slice( 0 );
++ }
++
++ soFar = selector;
++ groups = [];
++ preFilters = Expr.preFilter;
++
++ while ( soFar ) {
++
++ // Comma and first run
++ if ( !matched || (match = rcomma.exec( soFar )) ) {
++ if ( match ) {
++ // Don't consume trailing commas as valid
++ soFar = soFar.slice( match[0].length ) || soFar;
++ }
++ groups.push( tokens = [] );
++ }
++
++ matched = false;
++
++ // Combinators
++ if ( (match = rcombinators.exec( soFar )) ) {
++ matched = match.shift();
++ tokens.push( {
++ value: matched,
++ // Cast descendant combinators to space
++ type: match[0].replace( rtrim, " " )
++ } );
++ soFar = soFar.slice( matched.length );
++ }
++
++ // Filters
++ for ( type in Expr.filter ) {
++ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
++ (match = preFilters[ type ]( match ))) ) {
++ matched = match.shift();
++ tokens.push( {
++ value: matched,
++ type: type,
++ matches: match
++ } );
++ soFar = soFar.slice( matched.length );
++ }
++ }
++
++ if ( !matched ) {
++ break;
++ }
++ }
++
++ // Return the length of the invalid excess
++ // if we're just parsing
++ // Otherwise, throw an error or return tokens
++ return parseOnly ?
++ soFar.length :
++ soFar ?
++ Sizzle.error( selector ) :
++ // Cache the tokens
++ tokenCache( selector, groups ).slice( 0 );
++}
++
++function toSelector( tokens ) {
++ var i = 0,
++ len = tokens.length,
++ selector = "";
++ for ( ; i < len; i++ ) {
++ selector += tokens[i].value;
++ }
++ return selector;
++}
++
++function addCombinator( matcher, combinator, base ) {
++ var dir = combinator.dir,
++ checkNonElements = base && dir === "parentNode",
++ doneName = done++;
++
++ return combinator.first ?
++ // Check against closest ancestor/preceding element
++ function( elem, context, xml ) {
++ while ( (elem = elem[ dir ]) ) {
++ if ( elem.nodeType === 1 || checkNonElements ) {
++ return matcher( elem, context, xml );
++ }
++ }
++ } :
++
++ // Check against all ancestor/preceding elements
++ function( elem, context, xml ) {
++ var data, cache, outerCache,
++ dirkey = dirruns + " " + doneName;
++
++ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
++ if ( xml ) {
++ while ( (elem = elem[ dir ]) ) {
++ if ( elem.nodeType === 1 || checkNonElements ) {
++ if ( matcher( elem, context, xml ) ) {
++ return true;
++ }
++ }
++ }
++ } else {
++ while ( (elem = elem[ dir ]) ) {
++ if ( elem.nodeType === 1 || checkNonElements ) {
++ outerCache = elem[ expando ] || (elem[ expando ] = {});
++ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
++ if ( (data = cache[1]) === true || data === cachedruns ) {
++ return data === true;
++ }
++ } else {
++ cache = outerCache[ dir ] = [ dirkey ];
++ cache[1] = matcher( elem, context, xml ) || cachedruns;
++ if ( cache[1] === true ) {
++ return true;
++ }
++ }
++ }
++ }
++ }
++ };
++}
++
++function elementMatcher( matchers ) {
++ return matchers.length > 1 ?
++ function( elem, context, xml ) {
++ var i = matchers.length;
++ while ( i-- ) {
++ if ( !matchers[i]( elem, context, xml ) ) {
++ return false;
++ }
++ }
++ return true;
++ } :
++ matchers[0];
++}
++
++function condense( unmatched, map, filter, context, xml ) {
++ var elem,
++ newUnmatched = [],
++ i = 0,
++ len = unmatched.length,
++ mapped = map != null;
++
++ for ( ; i < len; i++ ) {
++ if ( (elem = unmatched[i]) ) {
++ if ( !filter || filter( elem, context, xml ) ) {
++ newUnmatched.push( elem );
++ if ( mapped ) {
++ map.push( i );
++ }
++ }
++ }
++ }
++
++ return newUnmatched;
++}
++
++function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
++ if ( postFilter && !postFilter[ expando ] ) {
++ postFilter = setMatcher( postFilter );
++ }
++ if ( postFinder && !postFinder[ expando ] ) {
++ postFinder = setMatcher( postFinder, postSelector );
++ }
++ return markFunction(function( seed, results, context, xml ) {
++ var temp, i, elem,
++ preMap = [],
++ postMap = [],
++ preexisting = results.length,
++
++ // Get initial elements from seed or context
++ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
++
++ // Prefilter to get matcher input, preserving a map for seed-results synchronization
++ matcherIn = preFilter && ( seed || !selector ) ?
++ condense( elems, preMap, preFilter, context, xml ) :
++ elems,
++
++ matcherOut = matcher ?
++ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
++ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
++
++ // ...intermediate processing is necessary
++ [] :
++
++ // ...otherwise use results directly
++ results :
++ matcherIn;
++
++ // Find primary matches
++ if ( matcher ) {
++ matcher( matcherIn, matcherOut, context, xml );
++ }
++
++ // Apply postFilter
++ if ( postFilter ) {
++ temp = condense( matcherOut, postMap );
++ postFilter( temp, [], context, xml );
++
++ // Un-match failing elements by moving them back to matcherIn
++ i = temp.length;
++ while ( i-- ) {
++ if ( (elem = temp[i]) ) {
++ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
++ }
++ }
++ }
++
++ if ( seed ) {
++ if ( postFinder || preFilter ) {
++ if ( postFinder ) {
++ // Get the final matcherOut by condensing this intermediate into postFinder contexts
++ temp = [];
++ i = matcherOut.length;
++ while ( i-- ) {
++ if ( (elem = matcherOut[i]) ) {
++ // Restore matcherIn since elem is not yet a final match
++ temp.push( (matcherIn[i] = elem) );
++ }
++ }
++ postFinder( null, (matcherOut = []), temp, xml );
++ }
++
++ // Move matched elements from seed to results to keep them synchronized
++ i = matcherOut.length;
++ while ( i-- ) {
++ if ( (elem = matcherOut[i]) &&
++ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
++
++ seed[temp] = !(results[temp] = elem);
++ }
++ }
++ }
++
++ // Add elements to results, through postFinder if defined
++ } else {
++ matcherOut = condense(
++ matcherOut === results ?
++ matcherOut.splice( preexisting, matcherOut.length ) :
++ matcherOut
++ );
++ if ( postFinder ) {
++ postFinder( null, results, matcherOut, xml );
++ } else {
++ push.apply( results, matcherOut );
++ }
++ }
++ });
++}
++
++function matcherFromTokens( tokens ) {
++ var checkContext, matcher, j,
++ len = tokens.length,
++ leadingRelative = Expr.relative[ tokens[0].type ],
++ implicitRelative = leadingRelative || Expr.relative[" "],
++ i = leadingRelative ? 1 : 0,
++
++ // The foundational matcher ensures that elements are reachable from top-level context(s)
++ matchContext = addCombinator( function( elem ) {
++ return elem === checkContext;
++ }, implicitRelative, true ),
++ matchAnyContext = addCombinator( function( elem ) {
++ return indexOf.call( checkContext, elem ) > -1;
++ }, implicitRelative, true ),
++ matchers = [ function( elem, context, xml ) {
++ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
++ (checkContext = context).nodeType ?
++ matchContext( elem, context, xml ) :
++ matchAnyContext( elem, context, xml ) );
++ } ];
++
++ for ( ; i < len; i++ ) {
++ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
++ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
++ } else {
++ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
++
++ // Return special upon seeing a positional matcher
++ if ( matcher[ expando ] ) {
++ // Find the next relative operator (if any) for proper handling
++ j = ++i;
++ for ( ; j < len; j++ ) {
++ if ( Expr.relative[ tokens[j].type ] ) {
++ break;
++ }
++ }
++ return setMatcher(
++ i > 1 && elementMatcher( matchers ),
++ i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
++ matcher,
++ i < j && matcherFromTokens( tokens.slice( i, j ) ),
++ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
++ j < len && toSelector( tokens )
++ );
++ }
++ matchers.push( matcher );
++ }
++ }
++
++ return elementMatcher( matchers );
++}
++
++function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
++ // A counter to specify which element is currently being matched
++ var matcherCachedRuns = 0,
++ bySet = setMatchers.length > 0,
++ byElement = elementMatchers.length > 0,
++ superMatcher = function( seed, context, xml, results, expandContext ) {
++ var elem, j, matcher,
++ setMatched = [],
++ matchedCount = 0,
++ i = "0",
++ unmatched = seed && [],
++ outermost = expandContext != null,
++ contextBackup = outermostContext,
++ // We must always have either seed elements or context
++ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
++ // Use integer dirruns iff this is the outermost matcher
++ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
++
++ if ( outermost ) {
++ outermostContext = context !== document && context;
++ cachedruns = matcherCachedRuns;
++ }
++
++ // Add elements passing elementMatchers directly to results
++ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
++ for ( ; (elem = elems[i]) != null; i++ ) {
++ if ( byElement && elem ) {
++ j = 0;
++ while ( (matcher = elementMatchers[j++]) ) {
++ if ( matcher( elem, context, xml ) ) {
++ results.push( elem );
++ break;
++ }
++ }
++ if ( outermost ) {
++ dirruns = dirrunsUnique;
++ cachedruns = ++matcherCachedRuns;
++ }
++ }
++
++ // Track unmatched elements for set filters
++ if ( bySet ) {
++ // They will have gone through all possible matchers
++ if ( (elem = !matcher && elem) ) {
++ matchedCount--;
++ }
++
++ // Lengthen the array for every element, matched or not
++ if ( seed ) {
++ unmatched.push( elem );
++ }
++ }
++ }
++
++ // Apply set filters to unmatched elements
++ matchedCount += i;
++ if ( bySet && i !== matchedCount ) {
++ j = 0;
++ while ( (matcher = setMatchers[j++]) ) {
++ matcher( unmatched, setMatched, context, xml );
++ }
++
++ if ( seed ) {
++ // Reintegrate element matches to eliminate the need for sorting
++ if ( matchedCount > 0 ) {
++ while ( i-- ) {
++ if ( !(unmatched[i] || setMatched[i]) ) {
++ setMatched[i] = pop.call( results );
++ }
++ }
++ }
++
++ // Discard index placeholder values to get only actual matches
++ setMatched = condense( setMatched );
++ }
++
++ // Add matches to results
++ push.apply( results, setMatched );
++
++ // Seedless set matches succeeding multiple successful matchers stipulate sorting
++ if ( outermost && !seed && setMatched.length > 0 &&
++ ( matchedCount + setMatchers.length ) > 1 ) {
++
++ Sizzle.uniqueSort( results );
++ }
++ }
++
++ // Override manipulation of globals by nested matchers
++ if ( outermost ) {
++ dirruns = dirrunsUnique;
++ outermostContext = contextBackup;
++ }
++
++ return unmatched;
++ };
++
++ return bySet ?
++ markFunction( superMatcher ) :
++ superMatcher;
++}
++
++compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
++ var i,
++ setMatchers = [],
++ elementMatchers = [],
++ cached = compilerCache[ selector + " " ];
++
++ if ( !cached ) {
++ // Generate a function of recursive functions that can be used to check each element
++ if ( !group ) {
++ group = tokenize( selector );
++ }
++ i = group.length;
++ while ( i-- ) {
++ cached = matcherFromTokens( group[i] );
++ if ( cached[ expando ] ) {
++ setMatchers.push( cached );
++ } else {
++ elementMatchers.push( cached );
++ }
++ }
++
++ // Cache the compiled function
++ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
++ }
++ return cached;
++};
++
++function multipleContexts( selector, contexts, results ) {
++ var i = 0,
++ len = contexts.length;
++ for ( ; i < len; i++ ) {
++ Sizzle( selector, contexts[i], results );
++ }
++ return results;
++}
++
++function select( selector, context, results, seed ) {
++ var i, tokens, token, type, find,
++ match = tokenize( selector );
++
++ if ( !seed ) {
++ // Try to minimize operations if there is only one group
++ if ( match.length === 1 ) {
++
++ // Take a shortcut and set the context if the root selector is an ID
++ tokens = match[0] = match[0].slice( 0 );
++ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
++ context.nodeType === 9 && !documentIsXML &&
++ Expr.relative[ tokens[1].type ] ) {
++
++ context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];
++ if ( !context ) {
++ return results;
++ }
++
++ selector = selector.slice( tokens.shift().value.length );
++ }
++
++ // Fetch a seed set for right-to-left matching
++ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
++ while ( i-- ) {
++ token = tokens[i];
++
++ // Abort if we hit a combinator
++ if ( Expr.relative[ (type = token.type) ] ) {
++ break;
++ }
++ if ( (find = Expr.find[ type ]) ) {
++ // Search, expanding context for leading sibling combinators
++ if ( (seed = find(
++ token.matches[0].replace( runescape, funescape ),
++ rsibling.test( tokens[0].type ) && context.parentNode || context
++ )) ) {
++
++ // If seed is empty or no tokens remain, we can return early
++ tokens.splice( i, 1 );
++ selector = seed.length && toSelector( tokens );
++ if ( !selector ) {
++ push.apply( results, slice.call( seed, 0 ) );
++ return results;
++ }
++
++ break;
++ }
++ }
++ }
++ }
++ }
++
++ // Compile and execute a filtering function
++ // Provide `match` to avoid retokenization if we modified the selector above
++ compile( selector, match )(
++ seed,
++ context,
++ documentIsXML,
++ results,
++ rsibling.test( selector )
++ );
++ return results;
++}
++
++// Deprecated
++Expr.pseudos["nth"] = Expr.pseudos["eq"];
++
++// Easy API for creating new setFilters
++function setFilters() {}
++Expr.filters = setFilters.prototype = Expr.pseudos;
++Expr.setFilters = new setFilters();
++
++// Initialize with the default document
++setDocument();
++
++// Override sizzle attribute retrieval
++Sizzle.attr = jQuery.attr;
++jQuery.find = Sizzle;
++jQuery.expr = Sizzle.selectors;
++jQuery.expr[":"] = jQuery.expr.pseudos;
++jQuery.unique = Sizzle.uniqueSort;
++jQuery.text = Sizzle.getText;
++jQuery.isXMLDoc = Sizzle.isXML;
++jQuery.contains = Sizzle.contains;
++
++
++})( window );
++var runtil = /Until$/,
++ rparentsprev = /^(?:parents|prev(?:Until|All))/,
++ isSimple = /^.[^:#\[\.,]*$/,
++ rneedsContext = jQuery.expr.match.needsContext,
++ // methods guaranteed to produce a unique set when starting from a unique set
++ guaranteedUnique = {
++ children: true,
++ contents: true,
++ next: true,
++ prev: true
++ };
++
++jQuery.fn.extend({
++ find: function( selector ) {
++ var i, ret, self,
++ len = this.length;
++
++ if ( typeof selector !== "string" ) {
++ self = this;
++ return this.pushStack( jQuery( selector ).filter(function() {
++ for ( i = 0; i < len; i++ ) {
++ if ( jQuery.contains( self[ i ], this ) ) {
++ return true;
++ }
++ }
++ }) );
++ }
++
++ ret = [];
++ for ( i = 0; i < len; i++ ) {
++ jQuery.find( selector, this[ i ], ret );
++ }
++
++ // Needed because $( selector, context ) becomes $( context ).find( selector )
++ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
++ ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
++ return ret;
++ },
++
++ has: function( target ) {
++ var i,
++ targets = jQuery( target, this ),
++ len = targets.length;
++
++ return this.filter(function() {
++ for ( i = 0; i < len; i++ ) {
++ if ( jQuery.contains( this, targets[i] ) ) {
++ return true;
++ }
++ }
++ });
++ },
++
++ not: function( selector ) {
++ return this.pushStack( winnow(this, selector, false) );
++ },
++
++ filter: function( selector ) {
++ return this.pushStack( winnow(this, selector, true) );
++ },
++
++ is: function( selector ) {
++ return !!selector && (
++ typeof selector === "string" ?
++ // If this is a positional/relative selector, check membership in the returned set
++ // so $("p:first").is("p:last") won't return true for a doc with two "p".
++ rneedsContext.test( selector ) ?
++ jQuery( selector, this.context ).index( this[0] ) >= 0 :
++ jQuery.filter( selector, this ).length > 0 :
++ this.filter( selector ).length > 0 );
++ },
++
++ closest: function( selectors, context ) {
++ var cur,
++ i = 0,
++ l = this.length,
++ ret = [],
++ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
++ jQuery( selectors, context || this.context ) :
++ 0;
++
++ for ( ; i < l; i++ ) {
++ cur = this[i];
++
++ while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
++ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
++ ret.push( cur );
++ break;
++ }
++ cur = cur.parentNode;
++ }
++ }
++
++ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
++ },
++
++ // Determine the position of an element within
++ // the matched set of elements
++ index: function( elem ) {
++
++ // No argument, return index in parent
++ if ( !elem ) {
++ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
++ }
++
++ // index in selector
++ if ( typeof elem === "string" ) {
++ return jQuery.inArray( this[0], jQuery( elem ) );
++ }
++
++ // Locate the position of the desired element
++ return jQuery.inArray(
++ // If it receives a jQuery object, the first element is used
++ elem.jquery ? elem[0] : elem, this );
++ },
++
++ add: function( selector, context ) {
++ var set = typeof selector === "string" ?
++ jQuery( selector, context ) :
++ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
++ all = jQuery.merge( this.get(), set );
++
++ return this.pushStack( jQuery.unique(all) );
++ },
++
++ addBack: function( selector ) {
++ return this.add( selector == null ?
++ this.prevObject : this.prevObject.filter(selector)
++ );
++ }
++});
++
++jQuery.fn.andSelf = jQuery.fn.addBack;
++
++function sibling( cur, dir ) {
++ do {
++ cur = cur[ dir ];
++ } while ( cur && cur.nodeType !== 1 );
++
++ return cur;
++}
++
++jQuery.each({
++ parent: function( elem ) {
++ var parent = elem.parentNode;
++ return parent && parent.nodeType !== 11 ? parent : null;
++ },
++ parents: function( elem ) {
++ return jQuery.dir( elem, "parentNode" );
++ },
++ parentsUntil: function( elem, i, until ) {
++ return jQuery.dir( elem, "parentNode", until );
++ },
++ next: function( elem ) {
++ return sibling( elem, "nextSibling" );
++ },
++ prev: function( elem ) {
++ return sibling( elem, "previousSibling" );
++ },
++ nextAll: function( elem ) {
++ return jQuery.dir( elem, "nextSibling" );
++ },
++ prevAll: function( elem ) {
++ return jQuery.dir( elem, "previousSibling" );
++ },
++ nextUntil: function( elem, i, until ) {
++ return jQuery.dir( elem, "nextSibling", until );
++ },
++ prevUntil: function( elem, i, until ) {
++ return jQuery.dir( elem, "previousSibling", until );
++ },
++ siblings: function( elem ) {
++ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
++ },
++ children: function( elem ) {
++ return jQuery.sibling( elem.firstChild );
++ },
++ contents: function( elem ) {
++ return jQuery.nodeName( elem, "iframe" ) ?
++ elem.contentDocument || elem.contentWindow.document :
++ jQuery.merge( [], elem.childNodes );
++ }
++}, function( name, fn ) {
++ jQuery.fn[ name ] = function( until, selector ) {
++ var ret = jQuery.map( this, fn, until );
++
++ if ( !runtil.test( name ) ) {
++ selector = until;
++ }
++
++ if ( selector && typeof selector === "string" ) {
++ ret = jQuery.filter( selector, ret );
++ }
++
++ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
++
++ if ( this.length > 1 && rparentsprev.test( name ) ) {
++ ret = ret.reverse();
++ }
++
++ return this.pushStack( ret );
++ };
++});
++
++jQuery.extend({
++ filter: function( expr, elems, not ) {
++ if ( not ) {
++ expr = ":not(" + expr + ")";
++ }
++
++ return elems.length === 1 ?
++ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
++ jQuery.find.matches(expr, elems);
++ },
++
++ dir: function( elem, dir, until ) {
++ var matched = [],
++ cur = elem[ dir ];
++
++ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
++ if ( cur.nodeType === 1 ) {
++ matched.push( cur );
++ }
++ cur = cur[dir];
++ }
++ return matched;
++ },
++
++ sibling: function( n, elem ) {
++ var r = [];
++
++ for ( ; n; n = n.nextSibling ) {
++ if ( n.nodeType === 1 && n !== elem ) {
++ r.push( n );
++ }
++ }
++
++ return r;
++ }
++});
++
++// Implement the identical functionality for filter and not
++function winnow( elements, qualifier, keep ) {
++
++ // Can't pass null or undefined to indexOf in Firefox 4
++ // Set to 0 to skip string check
++ qualifier = qualifier || 0;
++
++ if ( jQuery.isFunction( qualifier ) ) {
++ return jQuery.grep(elements, function( elem, i ) {
++ var retVal = !!qualifier.call( elem, i, elem );
++ return retVal === keep;
++ });
++
++ } else if ( qualifier.nodeType ) {
++ return jQuery.grep(elements, function( elem ) {
++ return ( elem === qualifier ) === keep;
++ });
++
++ } else if ( typeof qualifier === "string" ) {
++ var filtered = jQuery.grep(elements, function( elem ) {
++ return elem.nodeType === 1;
++ });
++
++ if ( isSimple.test( qualifier ) ) {
++ return jQuery.filter(qualifier, filtered, !keep);
++ } else {
++ qualifier = jQuery.filter( qualifier, filtered );
++ }
++ }
++
++ return jQuery.grep(elements, function( elem ) {
++ return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
++ });
++}
++function createSafeFragment( document ) {
++ var list = nodeNames.split( "|" ),
++ safeFrag = document.createDocumentFragment();
++
++ if ( safeFrag.createElement ) {
++ while ( list.length ) {
++ safeFrag.createElement(
++ list.pop()
++ );
++ }
++ }
++ return safeFrag;
++}
++
++var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
++ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
++ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
++ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
++ rleadingWhitespace = /^\s+/,
++ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
++ rtagName = /<([\w:]+)/,
++ rtbody = /<tbody/i,
++ rhtml = /<|&#?\w+;/,
++ rnoInnerhtml = /<(?:script|style|link)/i,
++ manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
++ // checked="checked" or checked
++ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
++ rscriptType = /^$|\/(?:java|ecma)script/i,
++ rscriptTypeMasked = /^true\/(.*)/,
++ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
++
++ // We have to close these tags to support XHTML (#13200)
++ wrapMap = {
++ option: [ 1, "<select multiple='multiple'>", "</select>" ],
++ legend: [ 1, "<fieldset>", "</fieldset>" ],
++ area: [ 1, "<map>", "</map>" ],
++ param: [ 1, "<object>", "</object>" ],
++ thead: [ 1, "<table>", "</table>" ],
++ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
++ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
++ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
++
++ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
++ // unless wrapped in a div with non-breaking characters in front of it.
++ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
++ },
++ safeFragment = createSafeFragment( document ),
++ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
++
++wrapMap.optgroup = wrapMap.option;
++wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
++wrapMap.th = wrapMap.td;
++
++jQuery.fn.extend({
++ text: function( value ) {
++ return jQuery.access( this, function( value ) {
++ return value === undefined ?
++ jQuery.text( this ) :
++ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
++ }, null, value, arguments.length );
++ },
++
++ wrapAll: function( html ) {
++ if ( jQuery.isFunction( html ) ) {
++ return this.each(function(i) {
++ jQuery(this).wrapAll( html.call(this, i) );
++ });
++ }
++
++ if ( this[0] ) {
++ // The elements to wrap the target around
++ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
++
++ if ( this[0].parentNode ) {
++ wrap.insertBefore( this[0] );
++ }
++
++ wrap.map(function() {
++ var elem = this;
++
++ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
++ elem = elem.firstChild;
++ }
++
++ return elem;
++ }).append( this );
++ }
++
++ return this;
++ },
++
++ wrapInner: function( html ) {
++ if ( jQuery.isFunction( html ) ) {
++ return this.each(function(i) {
++ jQuery(this).wrapInner( html.call(this, i) );
++ });
++ }
++
++ return this.each(function() {
++ var self = jQuery( this ),
++ contents = self.contents();
++
++ if ( contents.length ) {
++ contents.wrapAll( html );
++
++ } else {
++ self.append( html );
++ }
++ });
++ },
++
++ wrap: function( html ) {
++ var isFunction = jQuery.isFunction( html );
++
++ return this.each(function(i) {
++ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
++ });
++ },
++
++ unwrap: function() {
++ return this.parent().each(function() {
++ if ( !jQuery.nodeName( this, "body" ) ) {
++ jQuery( this ).replaceWith( this.childNodes );
++ }
++ }).end();
++ },
++
++ append: function() {
++ return this.domManip(arguments, true, function( elem ) {
++ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
++ this.appendChild( elem );
++ }
++ });
++ },
++
++ prepend: function() {
++ return this.domManip(arguments, true, function( elem ) {
++ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
++ this.insertBefore( elem, this.firstChild );
++ }
++ });
++ },
++
++ before: function() {
++ return this.domManip( arguments, false, function( elem ) {
++ if ( this.parentNode ) {
++ this.parentNode.insertBefore( elem, this );
++ }
++ });
++ },
++
++ after: function() {
++ return this.domManip( arguments, false, function( elem ) {
++ if ( this.parentNode ) {
++ this.parentNode.insertBefore( elem, this.nextSibling );
++ }
++ });
++ },
++
++ // keepData is for internal use only--do not document
++ remove: function( selector, keepData ) {
++ var elem,
++ i = 0;
++
++ for ( ; (elem = this[i]) != null; i++ ) {
++ if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
++ if ( !keepData && elem.nodeType === 1 ) {
++ jQuery.cleanData( getAll( elem ) );
++ }
++
++ if ( elem.parentNode ) {
++ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
++ setGlobalEval( getAll( elem, "script" ) );
++ }
++ elem.parentNode.removeChild( elem );
++ }
++ }
++ }
++
++ return this;
++ },
++
++ empty: function() {
++ var elem,
++ i = 0;
++
++ for ( ; (elem = this[i]) != null; i++ ) {
++ // Remove element nodes and prevent memory leaks
++ if ( elem.nodeType === 1 ) {
++ jQuery.cleanData( getAll( elem, false ) );
++ }
++
++ // Remove any remaining nodes
++ while ( elem.firstChild ) {
++ elem.removeChild( elem.firstChild );
++ }
++
++ // If this is a select, ensure that it displays empty (#12336)
++ // Support: IE<9
++ if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
++ elem.options.length = 0;
++ }
++ }
++
++ return this;
++ },
++
++ clone: function( dataAndEvents, deepDataAndEvents ) {
++ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
++ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
++
++ return this.map( function () {
++ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
++ });
++ },
++
++ html: function( value ) {
++ return jQuery.access( this, function( value ) {
++ var elem = this[0] || {},
++ i = 0,
++ l = this.length;
++
++ if ( value === undefined ) {
++ return elem.nodeType === 1 ?
++ elem.innerHTML.replace( rinlinejQuery, "" ) :
++ undefined;
++ }
++
++ // See if we can take a shortcut and just use innerHTML
++ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
++ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
++ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
++ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
++
++ value = value.replace( rxhtmlTag, "<$1></$2>" );
++
++ try {
++ for (; i < l; i++ ) {
++ // Remove element nodes and prevent memory leaks
++ elem = this[i] || {};
++ if ( elem.nodeType === 1 ) {
++ jQuery.cleanData( getAll( elem, false ) );
++ elem.innerHTML = value;
++ }
++ }
++
++ elem = 0;
++
++ // If using innerHTML throws an exception, use the fallback method
++ } catch(e) {}
++ }
++
++ if ( elem ) {
++ this.empty().append( value );
++ }
++ }, null, value, arguments.length );
++ },
++
++ replaceWith: function( value ) {
++ var isFunc = jQuery.isFunction( value );
++
++ // Make sure that the elements are removed from the DOM before they are inserted
++ // this can help fix replacing a parent with child elements
++ if ( !isFunc && typeof value !== "string" ) {
++ value = jQuery( value ).not( this ).detach();
++ }
++
++ return this.domManip( [ value ], true, function( elem ) {
++ var next = this.nextSibling,
++ parent = this.parentNode;
++
++ if ( parent ) {
++ jQuery( this ).remove();
++ parent.insertBefore( elem, next );
++ }
++ });
++ },
++
++ detach: function( selector ) {
++ return this.remove( selector, true );
++ },
++
++ domManip: function( args, table, callback ) {
++
++ // Flatten any nested arrays
++ args = core_concat.apply( [], args );
++
++ var first, node, hasScripts,
++ scripts, doc, fragment,
++ i = 0,
++ l = this.length,
++ set = this,
++ iNoClone = l - 1,
++ value = args[0],
++ isFunction = jQuery.isFunction( value );
++
++ // We can't cloneNode fragments that contain checked, in WebKit
++ if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
++ return this.each(function( index ) {
++ var self = set.eq( index );
++ if ( isFunction ) {
++ args[0] = value.call( this, index, table ? self.html() : undefined );
++ }
++ self.domManip( args, table, callback );
++ });
++ }
++
++ if ( l ) {
++ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
++ first = fragment.firstChild;
++
++ if ( fragment.childNodes.length === 1 ) {
++ fragment = first;
++ }
++
++ if ( first ) {
++ table = table && jQuery.nodeName( first, "tr" );
++ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
++ hasScripts = scripts.length;
++
++ // Use the original fragment for the last item instead of the first because it can end up
++ // being emptied incorrectly in certain situations (#8070).
++ for ( ; i < l; i++ ) {
++ node = fragment;
++
++ if ( i !== iNoClone ) {
++ node = jQuery.clone( node, true, true );
++
++ // Keep references to cloned scripts for later restoration
++ if ( hasScripts ) {
++ jQuery.merge( scripts, getAll( node, "script" ) );
++ }
++ }
++
++ callback.call(
++ table && jQuery.nodeName( this[i], "table" ) ?
++ findOrAppend( this[i], "tbody" ) :
++ this[i],
++ node,
++ i
++ );
++ }
++
++ if ( hasScripts ) {
++ doc = scripts[ scripts.length - 1 ].ownerDocument;
++
++ // Reenable scripts
++ jQuery.map( scripts, restoreScript );
++
++ // Evaluate executable scripts on first document insertion
++ for ( i = 0; i < hasScripts; i++ ) {
++ node = scripts[ i ];
++ if ( rscriptType.test( node.type || "" ) &&
++ !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
++
++ if ( node.src ) {
++ // Hope ajax is available...
++ jQuery.ajax({
++ url: node.src,
++ type: "GET",
++ dataType: "script",
++ async: false,
++ global: false,
++ "throws": true
++ });
++ } else {
++ jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
++ }
++ }
++ }
++ }
++
++ // Fix #11809: Avoid leaking memory
++ fragment = first = null;
++ }
++ }
++
++ return this;
++ }
++});
++
++function findOrAppend( elem, tag ) {
++ return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
++}
++
++// Replace/restore the type attribute of script elements for safe DOM manipulation
++function disableScript( elem ) {
++ var attr = elem.getAttributeNode("type");
++ elem.type = ( attr && attr.specified ) + "/" + elem.type;
++ return elem;
++}
++function restoreScript( elem ) {
++ var match = rscriptTypeMasked.exec( elem.type );
++ if ( match ) {
++ elem.type = match[1];
++ } else {
++ elem.removeAttribute("type");
++ }
++ return elem;
++}
++
++// Mark scripts as having already been evaluated
++function setGlobalEval( elems, refElements ) {
++ var elem,
++ i = 0;
++ for ( ; (elem = elems[i]) != null; i++ ) {
++ jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
++ }
++}
++
++function cloneCopyEvent( src, dest ) {
++
++ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
++ return;
++ }
++
++ var type, i, l,
++ oldData = jQuery._data( src ),
++ curData = jQuery._data( dest, oldData ),
++ events = oldData.events;
++
++ if ( events ) {
++ delete curData.handle;
++ curData.events = {};
++
++ for ( type in events ) {
++ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
++ jQuery.event.add( dest, type, events[ type ][ i ] );
++ }
++ }
++ }
++
++ // make the cloned public data object a copy from the original
++ if ( curData.data ) {
++ curData.data = jQuery.extend( {}, curData.data );
++ }
++}
++
++function fixCloneNodeIssues( src, dest ) {
++ var nodeName, e, data;
++
++ // We do not need to do anything for non-Elements
++ if ( dest.nodeType !== 1 ) {
++ return;
++ }
++
++ nodeName = dest.nodeName.toLowerCase();
++
++ // IE6-8 copies events bound via attachEvent when using cloneNode.
++ if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
++ data = jQuery._data( dest );
++
++ for ( e in data.events ) {
++ jQuery.removeEvent( dest, e, data.handle );
++ }
++
++ // Event data gets referenced instead of copied if the expando gets copied too
++ dest.removeAttribute( jQuery.expando );
++ }
++
++ // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
++ if ( nodeName === "script" && dest.text !== src.text ) {
++ disableScript( dest ).text = src.text;
++ restoreScript( dest );
++
++ // IE6-10 improperly clones children of object elements using classid.
++ // IE10 throws NoModificationAllowedError if parent is null, #12132.
++ } else if ( nodeName === "object" ) {
++ if ( dest.parentNode ) {
++ dest.outerHTML = src.outerHTML;
++ }
++
++ // This path appears unavoidable for IE9. When cloning an object
++ // element in IE9, the outerHTML strategy above is not sufficient.
++ // If the src has innerHTML and the destination does not,
++ // copy the src.innerHTML into the dest.innerHTML. #10324
++ if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
++ dest.innerHTML = src.innerHTML;
++ }
++
++ } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
++ // IE6-8 fails to persist the checked state of a cloned checkbox
++ // or radio button. Worse, IE6-7 fail to give the cloned element
++ // a checked appearance if the defaultChecked value isn't also set
++
++ dest.defaultChecked = dest.checked = src.checked;
++
++ // IE6-7 get confused and end up setting the value of a cloned
++ // checkbox/radio button to an empty string instead of "on"
++ if ( dest.value !== src.value ) {
++ dest.value = src.value;
++ }
++
++ // IE6-8 fails to return the selected option to the default selected
++ // state when cloning options
++ } else if ( nodeName === "option" ) {
++ dest.defaultSelected = dest.selected = src.defaultSelected;
++
++ // IE6-8 fails to set the defaultValue to the correct value when
++ // cloning other types of input fields
++ } else if ( nodeName === "input" || nodeName === "textarea" ) {
++ dest.defaultValue = src.defaultValue;
++ }
++}
++
++jQuery.each({
++ appendTo: "append",
++ prependTo: "prepend",
++ insertBefore: "before",
++ insertAfter: "after",
++ replaceAll: "replaceWith"
++}, function( name, original ) {
++ jQuery.fn[ name ] = function( selector ) {
++ var elems,
++ i = 0,
++ ret = [],
++ insert = jQuery( selector ),
++ last = insert.length - 1;
++
++ for ( ; i <= last; i++ ) {
++ elems = i === last ? this : this.clone(true);
++ jQuery( insert[i] )[ original ]( elems );
++
++ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
++ core_push.apply( ret, elems.get() );
++ }
++
++ return this.pushStack( ret );
++ };
++});
++
++function getAll( context, tag ) {
++ var elems, elem,
++ i = 0,
++ found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
++ typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
++ undefined;
++
++ if ( !found ) {
++ for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
++ if ( !tag || jQuery.nodeName( elem, tag ) ) {
++ found.push( elem );
++ } else {
++ jQuery.merge( found, getAll( elem, tag ) );
++ }
++ }
++ }
++
++ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
++ jQuery.merge( [ context ], found ) :
++ found;
++}
++
++// Used in buildFragment, fixes the defaultChecked property
++function fixDefaultChecked( elem ) {
++ if ( manipulation_rcheckableType.test( elem.type ) ) {
++ elem.defaultChecked = elem.checked;
++ }
++}
++
++jQuery.extend({
++ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
++ var destElements, node, clone, i, srcElements,
++ inPage = jQuery.contains( elem.ownerDocument, elem );
++
++ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
++ clone = elem.cloneNode( true );
++
++ // IE<=8 does not properly clone detached, unknown element nodes
++ } else {
++ fragmentDiv.innerHTML = elem.outerHTML;
++ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
++ }
++
++ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
++ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
++
++ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
++ destElements = getAll( clone );
++ srcElements = getAll( elem );
++
++ // Fix all IE cloning issues
++ for ( i = 0; (node = srcElements[i]) != null; ++i ) {
++ // Ensure that the destination node is not null; Fixes #9587
++ if ( destElements[i] ) {
++ fixCloneNodeIssues( node, destElements[i] );
++ }
++ }
++ }
++
++ // Copy the events from the original to the clone
++ if ( dataAndEvents ) {
++ if ( deepDataAndEvents ) {
++ srcElements = srcElements || getAll( elem );
++ destElements = destElements || getAll( clone );
++
++ for ( i = 0; (node = srcElements[i]) != null; i++ ) {
++ cloneCopyEvent( node, destElements[i] );
++ }
++ } else {
++ cloneCopyEvent( elem, clone );
++ }
++ }
++
++ // Preserve script evaluation history
++ destElements = getAll( clone, "script" );
++ if ( destElements.length > 0 ) {
++ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
++ }
++
++ destElements = srcElements = node = null;
++
++ // Return the cloned set
++ return clone;
++ },
++
++ buildFragment: function( elems, context, scripts, selection ) {
++ var j, elem, contains,
++ tmp, tag, tbody, wrap,
++ l = elems.length,
++
++ // Ensure a safe fragment
++ safe = createSafeFragment( context ),
++
++ nodes = [],
++ i = 0;
++
++ for ( ; i < l; i++ ) {
++ elem = elems[ i ];
++
++ if ( elem || elem === 0 ) {
++
++ // Add nodes directly
++ if ( jQuery.type( elem ) === "object" ) {
++ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
++
++ // Convert non-html into a text node
++ } else if ( !rhtml.test( elem ) ) {
++ nodes.push( context.createTextNode( elem ) );
++
++ // Convert html into DOM nodes
++ } else {
++ tmp = tmp || safe.appendChild( context.createElement("div") );
++
++ // Deserialize a standard representation
++ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
++ wrap = wrapMap[ tag ] || wrapMap._default;
++
++ tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
++
++ // Descend through wrappers to the right content
++ j = wrap[0];
++ while ( j-- ) {
++ tmp = tmp.lastChild;
++ }
++
++ // Manually add leading whitespace removed by IE
++ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
++ nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
++ }
++
++ // Remove IE's autoinserted <tbody> from table fragments
++ if ( !jQuery.support.tbody ) {
++
++ // String was a <table>, *may* have spurious <tbody>
++ elem = tag === "table" && !rtbody.test( elem ) ?
++ tmp.firstChild :
++
++ // String was a bare <thead> or <tfoot>
++ wrap[1] === "<table>" && !rtbody.test( elem ) ?
++ tmp :
++ 0;
++
++ j = elem && elem.childNodes.length;
++ while ( j-- ) {
++ if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
++ elem.removeChild( tbody );
++ }
++ }
++ }
++
++ jQuery.merge( nodes, tmp.childNodes );
++
++ // Fix #12392 for WebKit and IE > 9
++ tmp.textContent = "";
++
++ // Fix #12392 for oldIE
++ while ( tmp.firstChild ) {
++ tmp.removeChild( tmp.firstChild );
++ }
++
++ // Remember the top-level container for proper cleanup
++ tmp = safe.lastChild;
++ }
++ }
++ }
++
++ // Fix #11356: Clear elements from fragment
++ if ( tmp ) {
++ safe.removeChild( tmp );
++ }
++
++ // Reset defaultChecked for any radios and checkboxes
++ // about to be appended to the DOM in IE 6/7 (#8060)
++ if ( !jQuery.support.appendChecked ) {
++ jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
++ }
++
++ i = 0;
++ while ( (elem = nodes[ i++ ]) ) {
++
++ // #4087 - If origin and destination elements are the same, and this is
++ // that element, do not do anything
++ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
++ continue;
++ }
++
++ contains = jQuery.contains( elem.ownerDocument, elem );
++
++ // Append to fragment
++ tmp = getAll( safe.appendChild( elem ), "script" );
++
++ // Preserve script evaluation history
++ if ( contains ) {
++ setGlobalEval( tmp );
++ }
++
++ // Capture executables
++ if ( scripts ) {
++ j = 0;
++ while ( (elem = tmp[ j++ ]) ) {
++ if ( rscriptType.test( elem.type || "" ) ) {
++ scripts.push( elem );
++ }
++ }
++ }
++ }
++
++ tmp = null;
++
++ return safe;
++ },
++
++ cleanData: function( elems, /* internal */ acceptData ) {
++ var elem, type, id, data,
++ i = 0,
++ internalKey = jQuery.expando,
++ cache = jQuery.cache,
++ deleteExpando = jQuery.support.deleteExpando,
++ special = jQuery.event.special;
++
++ for ( ; (elem = elems[i]) != null; i++ ) {
++
++ if ( acceptData || jQuery.acceptData( elem ) ) {
++
++ id = elem[ internalKey ];
++ data = id && cache[ id ];
++
++ if ( data ) {
++ if ( data.events ) {
++ for ( type in data.events ) {
++ if ( special[ type ] ) {
++ jQuery.event.remove( elem, type );
++
++ // This is a shortcut to avoid jQuery.event.remove's overhead
++ } else {
++ jQuery.removeEvent( elem, type, data.handle );
++ }
++ }
++ }
++
++ // Remove cache only if it was not already removed by jQuery.event.remove
++ if ( cache[ id ] ) {
++
++ delete cache[ id ];
++
++ // IE does not allow us to delete expando properties from nodes,
++ // nor does it have a removeAttribute function on Document nodes;
++ // we must handle all of these cases
++ if ( deleteExpando ) {
++ delete elem[ internalKey ];
++
++ } else if ( typeof elem.removeAttribute !== core_strundefined ) {
++ elem.removeAttribute( internalKey );
++
++ } else {
++ elem[ internalKey ] = null;
++ }
++
++ core_deletedIds.push( id );
++ }
++ }
++ }
++ }
++ }
++});
++var iframe, getStyles, curCSS,
++ ralpha = /alpha\([^)]*\)/i,
++ ropacity = /opacity\s*=\s*([^)]*)/,
++ rposition = /^(top|right|bottom|left)$/,
++ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
++ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
++ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
++ rmargin = /^margin/,
++ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
++ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
++ rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
++ elemdisplay = { BODY: "block" },
++
++ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
++ cssNormalTransform = {
++ letterSpacing: 0,
++ fontWeight: 400
++ },
++
++ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
++ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
++
++// return a css property mapped to a potentially vendor prefixed property
++function vendorPropName( style, name ) {
++
++ // shortcut for names that are not vendor prefixed
++ if ( name in style ) {
++ return name;
++ }
++
++ // check for vendor prefixed names
++ var capName = name.charAt(0).toUpperCase() + name.slice(1),
++ origName = name,
++ i = cssPrefixes.length;
++
++ while ( i-- ) {
++ name = cssPrefixes[ i ] + capName;
++ if ( name in style ) {
++ return name;
++ }
++ }
++
++ return origName;
++}
++
++function isHidden( elem, el ) {
++ // isHidden might be called from jQuery#filter function;
++ // in that case, element will be second argument
++ elem = el || elem;
++ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
++}
++
++function showHide( elements, show ) {
++ var display, elem, hidden,
++ values = [],
++ index = 0,
++ length = elements.length;
++
++ for ( ; index < length; index++ ) {
++ elem = elements[ index ];
++ if ( !elem.style ) {
++ continue;
++ }
++
++ values[ index ] = jQuery._data( elem, "olddisplay" );
++ display = elem.style.display;
++ if ( show ) {
++ // Reset the inline display of this element to learn if it is
++ // being hidden by cascaded rules or not
++ if ( !values[ index ] && display === "none" ) {
++ elem.style.display = "";
++ }
++
++ // Set elements which have been overridden with display: none
++ // in a stylesheet to whatever the default browser style is
++ // for such an element
++ if ( elem.style.display === "" && isHidden( elem ) ) {
++ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
++ }
++ } else {
++
++ if ( !values[ index ] ) {
++ hidden = isHidden( elem );
++
++ if ( display && display !== "none" || !hidden ) {
++ jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
++ }
++ }
++ }
++ }
++
++ // Set the display of most of the elements in a second loop
++ // to avoid the constant reflow
++ for ( index = 0; index < length; index++ ) {
++ elem = elements[ index ];
++ if ( !elem.style ) {
++ continue;
++ }
++ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
++ elem.style.display = show ? values[ index ] || "" : "none";
++ }
++ }
++
++ return elements;
++}
++
++jQuery.fn.extend({
++ css: function( name, value ) {
++ return jQuery.access( this, function( elem, name, value ) {
++ var len, styles,
++ map = {},
++ i = 0;
++
++ if ( jQuery.isArray( name ) ) {
++ styles = getStyles( elem );
++ len = name.length;
++
++ for ( ; i < len; i++ ) {
++ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
++ }
++
++ return map;
++ }
++
++ return value !== undefined ?
++ jQuery.style( elem, name, value ) :
++ jQuery.css( elem, name );
++ }, name, value, arguments.length > 1 );
++ },
++ show: function() {
++ return showHide( this, true );
++ },
++ hide: function() {
++ return showHide( this );
++ },
++ toggle: function( state ) {
++ var bool = typeof state === "boolean";
++
++ return this.each(function() {
++ if ( bool ? state : isHidden( this ) ) {
++ jQuery( this ).show();
++ } else {
++ jQuery( this ).hide();
++ }
++ });
++ }
++});
++
++jQuery.extend({
++ // Add in style property hooks for overriding the default
++ // behavior of getting and setting a style property
++ cssHooks: {
++ opacity: {
++ get: function( elem, computed ) {
++ if ( computed ) {
++ // We should always get a number back from opacity
++ var ret = curCSS( elem, "opacity" );
++ return ret === "" ? "1" : ret;
++ }
++ }
++ }
++ },
++
++ // Exclude the following css properties to add px
++ cssNumber: {
++ "columnCount": true,
++ "fillOpacity": true,
++ "fontWeight": true,
++ "lineHeight": true,
++ "opacity": true,
++ "orphans": true,
++ "widows": true,
++ "zIndex": true,
++ "zoom": true
++ },
++
++ // Add in properties whose names you wish to fix before
++ // setting or getting the value
++ cssProps: {
++ // normalize float css property
++ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
++ },
++
++ // Get and set the style property on a DOM Node
++ style: function( elem, name, value, extra ) {
++ // Don't set styles on text and comment nodes
++ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
++ return;
++ }
++
++ // Make sure that we're working with the right name
++ var ret, type, hooks,
++ origName = jQuery.camelCase( name ),
++ style = elem.style;
++
++ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
++
++ // gets hook for the prefixed version
++ // followed by the unprefixed version
++ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
++
++ // Check if we're setting a value
++ if ( value !== undefined ) {
++ type = typeof value;
++
++ // convert relative number strings (+= or -=) to relative numbers. #7345
++ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
++ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
++ // Fixes bug #9237
++ type = "number";
++ }
++
++ // Make sure that NaN and null values aren't set. See: #7116
++ if ( value == null || type === "number" && isNaN( value ) ) {
++ return;
++ }
++
++ // If a number was passed in, add 'px' to the (except for certain CSS properties)
++ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
++ value += "px";
++ }
++
++ // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
++ // but it would mean to define eight (for every problematic property) identical functions
++ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
++ style[ name ] = "inherit";
++ }
++
++ // If a hook was provided, use that value, otherwise just set the specified value
++ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
++
++ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
++ // Fixes bug #5509
++ try {
++ style[ name ] = value;
++ } catch(e) {}
++ }
++
++ } else {
++ // If a hook was provided get the non-computed value from there
++ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
++ return ret;
++ }
++
++ // Otherwise just get the value from the style object
++ return style[ name ];
++ }
++ },
++
++ css: function( elem, name, extra, styles ) {
++ var num, val, hooks,
++ origName = jQuery.camelCase( name );
++
++ // Make sure that we're working with the right name
++ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
++
++ // gets hook for the prefixed version
++ // followed by the unprefixed version
++ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
++
++ // If a hook was provided get the computed value from there
++ if ( hooks && "get" in hooks ) {
++ val = hooks.get( elem, true, extra );
++ }
++
++ // Otherwise, if a way to get the computed value exists, use that
++ if ( val === undefined ) {
++ val = curCSS( elem, name, styles );
++ }
++
++ //convert "normal" to computed value
++ if ( val === "normal" && name in cssNormalTransform ) {
++ val = cssNormalTransform[ name ];
++ }
++
++ // Return, converting to number if forced or a qualifier was provided and val looks numeric
++ if ( extra === "" || extra ) {
++ num = parseFloat( val );
++ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
++ }
++ return val;
++ },
++
++ // A method for quickly swapping in/out CSS properties to get correct calculations
++ swap: function( elem, options, callback, args ) {
++ var ret, name,
++ old = {};
++
++ // Remember the old values, and insert the new ones
++ for ( name in options ) {
++ old[ name ] = elem.style[ name ];
++ elem.style[ name ] = options[ name ];
++ }
++
++ ret = callback.apply( elem, args || [] );
++
++ // Revert the old values
++ for ( name in options ) {
++ elem.style[ name ] = old[ name ];
++ }
++
++ return ret;
++ }
++});
++
++// NOTE: we've included the "window" in window.getComputedStyle
++// because jsdom on node.js will break without it.
++if ( window.getComputedStyle ) {
++ getStyles = function( elem ) {
++ return window.getComputedStyle( elem, null );
++ };
++
++ curCSS = function( elem, name, _computed ) {
++ var width, minWidth, maxWidth,
++ computed = _computed || getStyles( elem ),
++
++ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
++ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
++ style = elem.style;
++
++ if ( computed ) {
++
++ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
++ ret = jQuery.style( elem, name );
++ }
++
++ // A tribute to the "awesome hack by Dean Edwards"
++ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
++ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
++ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
++ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
++
++ // Remember the original values
++ width = style.width;
++ minWidth = style.minWidth;
++ maxWidth = style.maxWidth;
++
++ // Put in the new values to get a computed value out
++ style.minWidth = style.maxWidth = style.width = ret;
++ ret = computed.width;
++
++ // Revert the changed values
++ style.width = width;
++ style.minWidth = minWidth;
++ style.maxWidth = maxWidth;
++ }
++ }
++
++ return ret;
++ };
++} else if ( document.documentElement.currentStyle ) {
++ getStyles = function( elem ) {
++ return elem.currentStyle;
++ };
++
++ curCSS = function( elem, name, _computed ) {
++ var left, rs, rsLeft,
++ computed = _computed || getStyles( elem ),
++ ret = computed ? computed[ name ] : undefined,
++ style = elem.style;
++
++ // Avoid setting ret to empty string here
++ // so we don't default to auto
++ if ( ret == null && style && style[ name ] ) {
++ ret = style[ name ];
++ }
++
++ // From the awesome hack by Dean Edwards
++ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
++
++ // If we're not dealing with a regular pixel number
++ // but a number that has a weird ending, we need to convert it to pixels
++ // but not position css attributes, as those are proportional to the parent element instead
++ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
++ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
++
++ // Remember the original values
++ left = style.left;
++ rs = elem.runtimeStyle;
++ rsLeft = rs && rs.left;
++
++ // Put in the new values to get a computed value out
++ if ( rsLeft ) {
++ rs.left = elem.currentStyle.left;
++ }
++ style.left = name === "fontSize" ? "1em" : ret;
++ ret = style.pixelLeft + "px";
++
++ // Revert the changed values
++ style.left = left;
++ if ( rsLeft ) {
++ rs.left = rsLeft;
++ }
++ }
++
++ return ret === "" ? "auto" : ret;
++ };
++}
++
++function setPositiveNumber( elem, value, subtract ) {
++ var matches = rnumsplit.exec( value );
++ return matches ?
++ // Guard against undefined "subtract", e.g., when used as in cssHooks
++ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
++ value;
++}
++
++function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
++ var i = extra === ( isBorderBox ? "border" : "content" ) ?
++ // If we already have the right measurement, avoid augmentation
++ 4 :
++ // Otherwise initialize for horizontal or vertical properties
++ name === "width" ? 1 : 0,
++
++ val = 0;
++
++ for ( ; i < 4; i += 2 ) {
++ // both box models exclude margin, so add it if we want it
++ if ( extra === "margin" ) {
++ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
++ }
++
++ if ( isBorderBox ) {
++ // border-box includes padding, so remove it if we want content
++ if ( extra === "content" ) {
++ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
++ }
++
++ // at this point, extra isn't border nor margin, so remove border
++ if ( extra !== "margin" ) {
++ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
++ }
++ } else {
++ // at this point, extra isn't content, so add padding
++ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
++
++ // at this point, extra isn't content nor padding, so add border
++ if ( extra !== "padding" ) {
++ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
++ }
++ }
++ }
++
++ return val;
++}
++
++function getWidthOrHeight( elem, name, extra ) {
++
++ // Start with offset property, which is equivalent to the border-box value
++ var valueIsBorderBox = true,
++ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
++ styles = getStyles( elem ),
++ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
++
++ // some non-html elements return undefined for offsetWidth, so check for null/undefined
++ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
++ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
++ if ( val <= 0 || val == null ) {
++ // Fall back to computed then uncomputed css if necessary
++ val = curCSS( elem, name, styles );
++ if ( val < 0 || val == null ) {
++ val = elem.style[ name ];
++ }
++
++ // Computed unit is not pixels. Stop here and return.
++ if ( rnumnonpx.test(val) ) {
++ return val;
++ }
++
++ // we need the check for style in case a browser which returns unreliable values
++ // for getComputedStyle silently falls back to the reliable elem.style
++ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
++
++ // Normalize "", auto, and prepare for extra
++ val = parseFloat( val ) || 0;
++ }
++
++ // use the active box-sizing model to add/subtract irrelevant styles
++ return ( val +
++ augmentWidthOrHeight(
++ elem,
++ name,
++ extra || ( isBorderBox ? "border" : "content" ),
++ valueIsBorderBox,
++ styles
++ )
++ ) + "px";
++}
++
++// Try to determine the default display value of an element
++function css_defaultDisplay( nodeName ) {
++ var doc = document,
++ display = elemdisplay[ nodeName ];
++
++ if ( !display ) {
++ display = actualDisplay( nodeName, doc );
++
++ // If the simple way fails, read from inside an iframe
++ if ( display === "none" || !display ) {
++ // Use the already-created iframe if possible
++ iframe = ( iframe ||
++ jQuery("<iframe frameborder='0' width='0' height='0'/>")
++ .css( "cssText", "display:block !important" )
++ ).appendTo( doc.documentElement );
++
++ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
++ doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
++ doc.write("<!doctype html><html><body>");
++ doc.close();
++
++ display = actualDisplay( nodeName, doc );
++ iframe.detach();
++ }
++
++ // Store the correct default display
++ elemdisplay[ nodeName ] = display;
++ }
++
++ return display;
++}
++
++// Called ONLY from within css_defaultDisplay
++function actualDisplay( name, doc ) {
++ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
++ display = jQuery.css( elem[0], "display" );
++ elem.remove();
++ return display;
++}
++
++jQuery.each([ "height", "width" ], function( i, name ) {
++ jQuery.cssHooks[ name ] = {
++ get: function( elem, computed, extra ) {
++ if ( computed ) {
++ // certain elements can have dimension info if we invisibly show them
++ // however, it must have a current display style that would benefit from this
++ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
++ jQuery.swap( elem, cssShow, function() {
++ return getWidthOrHeight( elem, name, extra );
++ }) :
++ getWidthOrHeight( elem, name, extra );
++ }
++ },
++
++ set: function( elem, value, extra ) {
++ var styles = extra && getStyles( elem );
++ return setPositiveNumber( elem, value, extra ?
++ augmentWidthOrHeight(
++ elem,
++ name,
++ extra,
++ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
++ styles
++ ) : 0
++ );
++ }
++ };
++});
++
++if ( !jQuery.support.opacity ) {
++ jQuery.cssHooks.opacity = {
++ get: function( elem, computed ) {
++ // IE uses filters for opacity
++ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
++ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
++ computed ? "1" : "";
++ },
++
++ set: function( elem, value ) {
++ var style = elem.style,
++ currentStyle = elem.currentStyle,
++ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
++ filter = currentStyle && currentStyle.filter || style.filter || "";
++
++ // IE has trouble with opacity if it does not have layout
++ // Force it by setting the zoom level
++ style.zoom = 1;
++
++ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
++ // if value === "", then remove inline opacity #12685
++ if ( ( value >= 1 || value === "" ) &&
++ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
++ style.removeAttribute ) {
++
++ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
++ // if "filter:" is present at all, clearType is disabled, we want to avoid this
++ // style.removeAttribute is IE Only, but so apparently is this code path...
++ style.removeAttribute( "filter" );
++
++ // if there is no filter style applied in a css rule or unset inline opacity, we are done
++ if ( value === "" || currentStyle && !currentStyle.filter ) {
++ return;
++ }
++ }
++
++ // otherwise, set new filter values
++ style.filter = ralpha.test( filter ) ?
++ filter.replace( ralpha, opacity ) :
++ filter + " " + opacity;
++ }
++ };
++}
++
++// These hooks cannot be added until DOM ready because the support test
++// for it is not run until after DOM ready
++jQuery(function() {
++ if ( !jQuery.support.reliableMarginRight ) {
++ jQuery.cssHooks.marginRight = {
++ get: function( elem, computed ) {
++ if ( computed ) {
++ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
++ // Work around by temporarily setting element display to inline-block
++ return jQuery.swap( elem, { "display": "inline-block" },
++ curCSS, [ elem, "marginRight" ] );
++ }
++ }
++ };
++ }
++
++ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
++ // getComputedStyle returns percent when specified for top/left/bottom/right
++ // rather than make the css module depend on the offset module, we just check for it here
++ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
++ jQuery.each( [ "top", "left" ], function( i, prop ) {
++ jQuery.cssHooks[ prop ] = {
++ get: function( elem, computed ) {
++ if ( computed ) {
++ computed = curCSS( elem, prop );
++ // if curCSS returns percentage, fallback to offset
++ return rnumnonpx.test( computed ) ?
++ jQuery( elem ).position()[ prop ] + "px" :
++ computed;
++ }
++ }
++ };
++ });
++ }
++
++});
++
++if ( jQuery.expr && jQuery.expr.filters ) {
++ jQuery.expr.filters.hidden = function( elem ) {
++ // Support: Opera <= 12.12
++ // Opera reports offsetWidths and offsetHeights less than zero on some elements
++ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
++ (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
++ };
++
++ jQuery.expr.filters.visible = function( elem ) {
++ return !jQuery.expr.filters.hidden( elem );
++ };
++}
++
++// These hooks are used by animate to expand properties
++jQuery.each({
++ margin: "",
++ padding: "",
++ border: "Width"
++}, function( prefix, suffix ) {
++ jQuery.cssHooks[ prefix + suffix ] = {
++ expand: function( value ) {
++ var i = 0,
++ expanded = {},
++
++ // assumes a single number if not a string
++ parts = typeof value === "string" ? value.split(" ") : [ value ];
++
++ for ( ; i < 4; i++ ) {
++ expanded[ prefix + cssExpand[ i ] + suffix ] =
++ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
++ }
++
++ return expanded;
++ }
++ };
++
++ if ( !rmargin.test( prefix ) ) {
++ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
++ }
++});
++var r20 = /%20/g,
++ rbracket = /\[\]$/,
++ rCRLF = /\r?\n/g,
++ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
++ rsubmittable = /^(?:input|select|textarea|keygen)/i;
++
++jQuery.fn.extend({
++ serialize: function() {
++ return jQuery.param( this.serializeArray() );
++ },
++ serializeArray: function() {
++ return this.map(function(){
++ // Can add propHook for "elements" to filter or add form elements
++ var elements = jQuery.prop( this, "elements" );
++ return elements ? jQuery.makeArray( elements ) : this;
++ })
++ .filter(function(){
++ var type = this.type;
++ // Use .is(":disabled") so that fieldset[disabled] works
++ return this.name && !jQuery( this ).is( ":disabled" ) &&
++ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
++ ( this.checked || !manipulation_rcheckableType.test( type ) );
++ })
++ .map(function( i, elem ){
++ var val = jQuery( this ).val();
++
++ return val == null ?
++ null :
++ jQuery.isArray( val ) ?
++ jQuery.map( val, function( val ){
++ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
++ }) :
++ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
++ }).get();
++ }
++});
++
++//Serialize an array of form elements or a set of
++//key/values into a query string
++jQuery.param = function( a, traditional ) {
++ var prefix,
++ s = [],
++ add = function( key, value ) {
++ // If value is a function, invoke it and return its value
++ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
++ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
++ };
++
++ // Set traditional to true for jQuery <= 1.3.2 behavior.
++ if ( traditional === undefined ) {
++ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
++ }
++
++ // If an array was passed in, assume that it is an array of form elements.
++ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
++ // Serialize the form elements
++ jQuery.each( a, function() {
++ add( this.name, this.value );
++ });
++
++ } else {
++ // If traditional, encode the "old" way (the way 1.3.2 or older
++ // did it), otherwise encode params recursively.
++ for ( prefix in a ) {
++ buildParams( prefix, a[ prefix ], traditional, add );
++ }
++ }
++
++ // Return the resulting serialization
++ return s.join( "&" ).replace( r20, "+" );
++};
++
++function buildParams( prefix, obj, traditional, add ) {
++ var name;
++
++ if ( jQuery.isArray( obj ) ) {
++ // Serialize array item.
++ jQuery.each( obj, function( i, v ) {
++ if ( traditional || rbracket.test( prefix ) ) {
++ // Treat each array item as a scalar.
++ add( prefix, v );
++
++ } else {
++ // Item is non-scalar (array or object), encode its numeric index.
++ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
++ }
++ });
++
++ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
++ // Serialize object item.
++ for ( name in obj ) {
++ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
++ }
++
++ } else {
++ // Serialize scalar item.
++ add( prefix, obj );
++ }
++}
++jQuery.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 contextmenu").split(" "), function( i, name ) {
++
++ // Handle event binding
++ jQuery.fn[ name ] = function( data, fn ) {
++ return arguments.length > 0 ?
++ this.on( name, null, data, fn ) :
++ this.trigger( name );
++ };
++});
++
++jQuery.fn.hover = function( fnOver, fnOut ) {
++ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
++};
++var
++ // Document location
++ ajaxLocParts,
++ ajaxLocation,
++ ajax_nonce = jQuery.now(),
++
++ ajax_rquery = /\?/,
++ rhash = /#.*$/,
++ rts = /([?&])_=[^&]*/,
++ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
++ // #7653, #8125, #8152: local protocol detection
++ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
++ rnoContent = /^(?:GET|HEAD)$/,
++ rprotocol = /^\/\//,
++ rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
++
++ // Keep a copy of the old load method
++ _load = jQuery.fn.load,
++
++ /* Prefilters
++ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
++ * 2) These are called:
++ * - BEFORE asking for a transport
++ * - AFTER param serialization (s.data is a string if s.processData is true)
++ * 3) key is the dataType
++ * 4) the catchall symbol "*" can be used
++ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
++ */
++ prefilters = {},
++
++ /* Transports bindings
++ * 1) key is the dataType
++ * 2) the catchall symbol "*" can be used
++ * 3) selection will start with transport dataType and THEN go to "*" if needed
++ */
++ transports = {},
++
++ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
++ allTypes = "*/".concat("*");
++
++// #8138, IE may throw an exception when accessing
++// a field from window.location if document.domain has been set
++try {
++ ajaxLocation = location.href;
++} catch( e ) {
++ // Use the href attribute of an A element
++ // since IE will modify it given document.location
++ ajaxLocation = document.createElement( "a" );
++ ajaxLocation.href = "";
++ ajaxLocation = ajaxLocation.href;
++}
++
++// Segment location into parts
++ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
++
++// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
++function addToPrefiltersOrTransports( structure ) {
++
++ // dataTypeExpression is optional and defaults to "*"
++ return function( dataTypeExpression, func ) {
++
++ if ( typeof dataTypeExpression !== "string" ) {
++ func = dataTypeExpression;
++ dataTypeExpression = "*";
++ }
++
++ var dataType,
++ i = 0,
++ dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
++
++ if ( jQuery.isFunction( func ) ) {
++ // For each dataType in the dataTypeExpression
++ while ( (dataType = dataTypes[i++]) ) {
++ // Prepend if requested
++ if ( dataType[0] === "+" ) {
++ dataType = dataType.slice( 1 ) || "*";
++ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
++
++ // Otherwise append
++ } else {
++ (structure[ dataType ] = structure[ dataType ] || []).push( func );
++ }
++ }
++ }
++ };
++}
++
++// Base inspection function for prefilters and transports
++function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
++
++ var inspected = {},
++ seekingTransport = ( structure === transports );
++
++ function inspect( dataType ) {
++ var selected;
++ inspected[ dataType ] = true;
++ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
++ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
++ if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
++ options.dataTypes.unshift( dataTypeOrTransport );
++ inspect( dataTypeOrTransport );
++ return false;
++ } else if ( seekingTransport ) {
++ return !( selected = dataTypeOrTransport );
++ }
++ });
++ return selected;
++ }
++
++ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
++}
++
++// A special extend for ajax options
++// that takes "flat" options (not to be deep extended)
++// Fixes #9887
++function ajaxExtend( target, src ) {
++ var deep, key,
++ flatOptions = jQuery.ajaxSettings.flatOptions || {};
++
++ for ( key in src ) {
++ if ( src[ key ] !== undefined ) {
++ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
++ }
++ }
++ if ( deep ) {
++ jQuery.extend( true, target, deep );
++ }
++
++ return target;
++}
++
++jQuery.fn.load = function( url, params, callback ) {
++ if ( typeof url !== "string" && _load ) {
++ return _load.apply( this, arguments );
++ }
++
++ var selector, response, type,
++ self = this,
++ off = url.indexOf(" ");
++
++ if ( off >= 0 ) {
++ selector = url.slice( off, url.length );
++ url = url.slice( 0, off );
++ }
++
++ // If it's a function
++ if ( jQuery.isFunction( params ) ) {
++
++ // We assume that it's the callback
++ callback = params;
++ params = undefined;
++
++ // Otherwise, build a param string
++ } else if ( params && typeof params === "object" ) {
++ type = "POST";
++ }
++
++ // If we have elements to modify, make the request
++ if ( self.length > 0 ) {
++ jQuery.ajax({
++ url: url,
++
++ // if "type" variable is undefined, then "GET" method will be used
++ type: type,
++ dataType: "html",
++ data: params
++ }).done(function( responseText ) {
++
++ // Save response for use in complete callback
++ response = arguments;
++
++ self.html( selector ?
++
++ // If a selector was specified, locate the right elements in a dummy div
++ // Exclude scripts to avoid IE 'Permission Denied' errors
++ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
++
++ // Otherwise use the full result
++ responseText );
++
++ }).complete( callback && function( jqXHR, status ) {
++ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
++ });
++ }
++
++ return this;
++};
++
++// Attach a bunch of functions for handling common AJAX events
++jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
++ jQuery.fn[ type ] = function( fn ){
++ return this.on( type, fn );
++ };
++});
++
++jQuery.each( [ "get", "post" ], function( i, method ) {
++ jQuery[ method ] = function( url, data, callback, type ) {
++ // shift arguments if data argument was omitted
++ if ( jQuery.isFunction( data ) ) {
++ type = type || callback;
++ callback = data;
++ data = undefined;
++ }
++
++ return jQuery.ajax({
++ url: url,
++ type: method,
++ dataType: type,
++ data: data,
++ success: callback
++ });
++ };
++});
++
++jQuery.extend({
++
++ // Counter for holding the number of active queries
++ active: 0,
++
++ // Last-Modified header cache for next request
++ lastModified: {},
++ etag: {},
++
++ ajaxSettings: {
++ url: ajaxLocation,
++ type: "GET",
++ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
++ global: true,
++ processData: true,
++ async: true,
++ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
++ /*
++ timeout: 0,
++ data: null,
++ dataType: null,
++ username: null,
++ password: null,
++ cache: null,
++ throws: false,
++ traditional: false,
++ headers: {},
++ */
++
++ accepts: {
++ "*": allTypes,
++ text: "text/plain",
++ html: "text/html",
++ xml: "application/xml, text/xml",
++ json: "application/json, text/javascript"
++ },
++
++ contents: {
++ xml: /xml/,
++ html: /html/,
++ json: /json/
++ },
++
++ responseFields: {
++ xml: "responseXML",
++ text: "responseText"
++ },
++
++ // Data converters
++ // Keys separate source (or catchall "*") and destination types with a single space
++ converters: {
++
++ // Convert anything to text
++ "* text": window.String,
++
++ // Text to html (true = no transformation)
++ "text html": true,
++
++ // Evaluate text as a json expression
++ "text json": jQuery.parseJSON,
++
++ // Parse text as xml
++ "text xml": jQuery.parseXML
++ },
++
++ // For options that shouldn't be deep extended:
++ // you can add your own custom options here if
++ // and when you create one that shouldn't be
++ // deep extended (see ajaxExtend)
++ flatOptions: {
++ url: true,
++ context: true
++ }
++ },
++
++ // Creates a full fledged settings object into target
++ // with both ajaxSettings and settings fields.
++ // If target is omitted, writes into ajaxSettings.
++ ajaxSetup: function( target, settings ) {
++ return settings ?
++
++ // Building a settings object
++ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
++
++ // Extending ajaxSettings
++ ajaxExtend( jQuery.ajaxSettings, target );
++ },
++
++ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
++ ajaxTransport: addToPrefiltersOrTransports( transports ),
++
++ // Main method
++ ajax: function( url, options ) {
++
++ // If url is an object, simulate pre-1.5 signature
++ if ( typeof url === "object" ) {
++ options = url;
++ url = undefined;
++ }
++
++ // Force options to be an object
++ options = options || {};
++
++ var // Cross-domain detection vars
++ parts,
++ // Loop variable
++ i,
++ // URL without anti-cache param
++ cacheURL,
++ // Response headers as string
++ responseHeadersString,
++ // timeout handle
++ timeoutTimer,
++
++ // To know if global events are to be dispatched
++ fireGlobals,
++
++ transport,
++ // Response headers
++ responseHeaders,
++ // Create the final options object
++ s = jQuery.ajaxSetup( {}, options ),
++ // Callbacks context
++ callbackContext = s.context || s,
++ // Context for global events is callbackContext if it is a DOM node or jQuery collection
++ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
++ jQuery( callbackContext ) :
++ jQuery.event,
++ // Deferreds
++ deferred = jQuery.Deferred(),
++ completeDeferred = jQuery.Callbacks("once memory"),
++ // Status-dependent callbacks
++ statusCode = s.statusCode || {},
++ // Headers (they are sent all at once)
++ requestHeaders = {},
++ requestHeadersNames = {},
++ // The jqXHR state
++ state = 0,
++ // Default abort message
++ strAbort = "canceled",
++ // Fake xhr
++ jqXHR = {
++ readyState: 0,
++
++ // Builds headers hashtable if needed
++ getResponseHeader: function( key ) {
++ var match;
++ if ( state === 2 ) {
++ if ( !responseHeaders ) {
++ responseHeaders = {};
++ while ( (match = rheaders.exec( responseHeadersString )) ) {
++ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
++ }
++ }
++ match = responseHeaders[ key.toLowerCase() ];
++ }
++ return match == null ? null : match;
++ },
++
++ // Raw string
++ getAllResponseHeaders: function() {
++ return state === 2 ? responseHeadersString : null;
++ },
++
++ // Caches the header
++ setRequestHeader: function( name, value ) {
++ var lname = name.toLowerCase();
++ if ( !state ) {
++ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
++ requestHeaders[ name ] = value;
++ }
++ return this;
++ },
++
++ // Overrides response content-type header
++ overrideMimeType: function( type ) {
++ if ( !state ) {
++ s.mimeType = type;
++ }
++ return this;
++ },
++
++ // Status-dependent callbacks
++ statusCode: function( map ) {
++ var code;
++ if ( map ) {
++ if ( state < 2 ) {
++ for ( code in map ) {
++ // Lazy-add the new callback in a way that preserves old ones
++ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
++ }
++ } else {
++ // Execute the appropriate callbacks
++ jqXHR.always( map[ jqXHR.status ] );
++ }
++ }
++ return this;
++ },
++
++ // Cancel the request
++ abort: function( statusText ) {
++ var finalText = statusText || strAbort;
++ if ( transport ) {
++ transport.abort( finalText );
++ }
++ done( 0, finalText );
++ return this;
++ }
++ };
++
++ // Attach deferreds
++ deferred.promise( jqXHR ).complete = completeDeferred.add;
++ jqXHR.success = jqXHR.done;
++ jqXHR.error = jqXHR.fail;
++
++ // Remove hash character (#7531: and string promotion)
++ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
++ // Handle falsy url in the settings object (#10093: consistency with old signature)
++ // We also use the url parameter if available
++ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
++
++ // Alias method option to type as per ticket #12004
++ s.type = options.method || options.type || s.method || s.type;
++
++ // Extract dataTypes list
++ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
++
++ // A cross-domain request is in order when we have a protocol:host:port mismatch
++ if ( s.crossDomain == null ) {
++ parts = rurl.exec( s.url.toLowerCase() );
++ s.crossDomain = !!( parts &&
++ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
++ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
++ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
++ );
++ }
++
++ // Convert data if not already a string
++ if ( s.data && s.processData && typeof s.data !== "string" ) {
++ s.data = jQuery.param( s.data, s.traditional );
++ }
++
++ // Apply prefilters
++ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
++
++ // If request was aborted inside a prefilter, stop there
++ if ( state === 2 ) {
++ return jqXHR;
++ }
++
++ // We can fire global events as of now if asked to
++ fireGlobals = s.global;
++
++ // Watch for a new set of requests
++ if ( fireGlobals && jQuery.active++ === 0 ) {
++ jQuery.event.trigger("ajaxStart");
++ }
++
++ // Uppercase the type
++ s.type = s.type.toUpperCase();
++
++ // Determine if request has content
++ s.hasContent = !rnoContent.test( s.type );
++
++ // Save the URL in case we're toying with the If-Modified-Since
++ // and/or If-None-Match header later on
++ cacheURL = s.url;
++
++ // More options handling for requests with no content
++ if ( !s.hasContent ) {
++
++ // If data is available, append data to url
++ if ( s.data ) {
++ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
++ // #9682: remove data so that it's not used in an eventual retry
++ delete s.data;
++ }
++
++ // Add anti-cache in url if needed
++ if ( s.cache === false ) {
++ s.url = rts.test( cacheURL ) ?
++
++ // If there is already a '_' parameter, set its value
++ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
++
++ // Otherwise add one to the end
++ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
++ }
++ }
++
++ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
++ if ( s.ifModified ) {
++ if ( jQuery.lastModified[ cacheURL ] ) {
++ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
++ }
++ if ( jQuery.etag[ cacheURL ] ) {
++ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
++ }
++ }
++
++ // Set the correct header, if data is being sent
++ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
++ jqXHR.setRequestHeader( "Content-Type", s.contentType );
++ }
++
++ // Set the Accepts header for the server, depending on the dataType
++ jqXHR.setRequestHeader(
++ "Accept",
++ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
++ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
++ s.accepts[ "*" ]
++ );
++
++ // Check for headers option
++ for ( i in s.headers ) {
++ jqXHR.setRequestHeader( i, s.headers[ i ] );
++ }
++
++ // Allow custom headers/mimetypes and early abort
++ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
++ // Abort if not done already and return
++ return jqXHR.abort();
++ }
++
++ // aborting is no longer a cancellation
++ strAbort = "abort";
++
++ // Install callbacks on deferreds
++ for ( i in { success: 1, error: 1, complete: 1 } ) {
++ jqXHR[ i ]( s[ i ] );
++ }
++
++ // Get transport
++ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
++
++ // If no transport, we auto-abort
++ if ( !transport ) {
++ done( -1, "No Transport" );
++ } else {
++ jqXHR.readyState = 1;
++
++ // Send global event
++ if ( fireGlobals ) {
++ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
++ }
++ // Timeout
++ if ( s.async && s.timeout > 0 ) {
++ timeoutTimer = setTimeout(function() {
++ jqXHR.abort("timeout");
++ }, s.timeout );
++ }
++
++ try {
++ state = 1;
++ transport.send( requestHeaders, done );
++ } catch ( e ) {
++ // Propagate exception as error if not done
++ if ( state < 2 ) {
++ done( -1, e );
++ // Simply rethrow otherwise
++ } else {
++ throw e;
++ }
++ }
++ }
++
++ // Callback for when everything is done
++ function done( status, nativeStatusText, responses, headers ) {
++ var isSuccess, success, error, response, modified,
++ statusText = nativeStatusText;
++
++ // Called once
++ if ( state === 2 ) {
++ return;
++ }
++
++ // State is "done" now
++ state = 2;
++
++ // Clear timeout if it exists
++ if ( timeoutTimer ) {
++ clearTimeout( timeoutTimer );
++ }
++
++ // Dereference transport for early garbage collection
++ // (no matter how long the jqXHR object will be used)
++ transport = undefined;
++
++ // Cache response headers
++ responseHeadersString = headers || "";
++
++ // Set readyState
++ jqXHR.readyState = status > 0 ? 4 : 0;
++
++ // Get response data
++ if ( responses ) {
++ response = ajaxHandleResponses( s, jqXHR, responses );
++ }
++
++ // If successful, handle type chaining
++ if ( status >= 200 && status < 300 || status === 304 ) {
++
++ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
++ if ( s.ifModified ) {
++ modified = jqXHR.getResponseHeader("Last-Modified");
++ if ( modified ) {
++ jQuery.lastModified[ cacheURL ] = modified;
++ }
++ modified = jqXHR.getResponseHeader("etag");
++ if ( modified ) {
++ jQuery.etag[ cacheURL ] = modified;
++ }
++ }
++
++ // if no content
++ if ( status === 204 ) {
++ isSuccess = true;
++ statusText = "nocontent";
++
++ // if not modified
++ } else if ( status === 304 ) {
++ isSuccess = true;
++ statusText = "notmodified";
++
++ // If we have data, let's convert it
++ } else {
++ isSuccess = ajaxConvert( s, response );
++ statusText = isSuccess.state;
++ success = isSuccess.data;
++ error = isSuccess.error;
++ isSuccess = !error;
++ }
++ } else {
++ // We extract error from statusText
++ // then normalize statusText and status for non-aborts
++ error = statusText;
++ if ( status || !statusText ) {
++ statusText = "error";
++ if ( status < 0 ) {
++ status = 0;
++ }
++ }
++ }
++
++ // Set data for the fake xhr object
++ jqXHR.status = status;
++ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
++
++ // Success/Error
++ if ( isSuccess ) {
++ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
++ } else {
++ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
++ }
++
++ // Status-dependent callbacks
++ jqXHR.statusCode( statusCode );
++ statusCode = undefined;
++
++ if ( fireGlobals ) {
++ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
++ [ jqXHR, s, isSuccess ? success : error ] );
++ }
++
++ // Complete
++ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
++
++ if ( fireGlobals ) {
++ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
++ // Handle the global AJAX counter
++ if ( !( --jQuery.active ) ) {
++ jQuery.event.trigger("ajaxStop");
++ }
++ }
++ }
++
++ return jqXHR;
++ },
++
++ getScript: function( url, callback ) {
++ return jQuery.get( url, undefined, callback, "script" );
++ },
++
++ getJSON: function( url, data, callback ) {
++ return jQuery.get( url, data, callback, "json" );
++ }
++});
++
++/* Handles responses to an ajax request:
++ * - sets all responseXXX fields accordingly
++ * - finds the right dataType (mediates between content-type and expected dataType)
++ * - returns the corresponding response
++ */
++function ajaxHandleResponses( s, jqXHR, responses ) {
++ var firstDataType, ct, finalDataType, type,
++ contents = s.contents,
++ dataTypes = s.dataTypes,
++ responseFields = s.responseFields;
++
++ // Fill responseXXX fields
++ for ( type in responseFields ) {
++ if ( type in responses ) {
++ jqXHR[ responseFields[type] ] = responses[ type ];
++ }
++ }
++
++ // Remove auto dataType and get content-type in the process
++ while( dataTypes[ 0 ] === "*" ) {
++ dataTypes.shift();
++ if ( ct === undefined ) {
++ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
++ }
++ }
++
++ // Check if we're dealing with a known content-type
++ if ( ct ) {
++ for ( type in contents ) {
++ if ( contents[ type ] && contents[ type ].test( ct ) ) {
++ dataTypes.unshift( type );
++ break;
++ }
++ }
++ }
++
++ // Check to see if we have a response for the expected dataType
++ if ( dataTypes[ 0 ] in responses ) {
++ finalDataType = dataTypes[ 0 ];
++ } else {
++ // Try convertible dataTypes
++ for ( type in responses ) {
++ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
++ finalDataType = type;
++ break;
++ }
++ if ( !firstDataType ) {
++ firstDataType = type;
++ }
++ }
++ // Or just use first one
++ finalDataType = finalDataType || firstDataType;
++ }
++
++ // If we found a dataType
++ // We add the dataType to the list if needed
++ // and return the corresponding response
++ if ( finalDataType ) {
++ if ( finalDataType !== dataTypes[ 0 ] ) {
++ dataTypes.unshift( finalDataType );
++ }
++ return responses[ finalDataType ];
++ }
++}
++
++// Chain conversions given the request and the original response
++function ajaxConvert( s, response ) {
++ var conv2, current, conv, tmp,
++ converters = {},
++ i = 0,
++ // Work with a copy of dataTypes in case we need to modify it for conversion
++ dataTypes = s.dataTypes.slice(),
++ prev = dataTypes[ 0 ];
++
++ // Apply the dataFilter if provided
++ if ( s.dataFilter ) {
++ response = s.dataFilter( response, s.dataType );
++ }
++
++ // Create converters map with lowercased keys
++ if ( dataTypes[ 1 ] ) {
++ for ( conv in s.converters ) {
++ converters[ conv.toLowerCase() ] = s.converters[ conv ];
++ }
++ }
++
++ // Convert to each sequential dataType, tolerating list modification
++ for ( ; (current = dataTypes[++i]); ) {
++
++ // There's only work to do if current dataType is non-auto
++ if ( current !== "*" ) {
++
++ // Convert response if prev dataType is non-auto and differs from current
++ if ( prev !== "*" && prev !== current ) {
++
++ // Seek a direct converter
++ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
++
++ // If none found, seek a pair
++ if ( !conv ) {
++ for ( conv2 in converters ) {
++
++ // If conv2 outputs current
++ tmp = conv2.split(" ");
++ if ( tmp[ 1 ] === current ) {
++
++ // If prev can be converted to accepted input
++ conv = converters[ prev + " " + tmp[ 0 ] ] ||
++ converters[ "* " + tmp[ 0 ] ];
++ if ( conv ) {
++ // Condense equivalence converters
++ if ( conv === true ) {
++ conv = converters[ conv2 ];
++
++ // Otherwise, insert the intermediate dataType
++ } else if ( converters[ conv2 ] !== true ) {
++ current = tmp[ 0 ];
++ dataTypes.splice( i--, 0, current );
++ }
++
++ break;
++ }
++ }
++ }
++ }
++
++ // Apply converter (if not an equivalence)
++ if ( conv !== true ) {
++
++ // Unless errors are allowed to bubble, catch and return them
++ if ( conv && s["throws"] ) {
++ response = conv( response );
++ } else {
++ try {
++ response = conv( response );
++ } catch ( e ) {
++ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
++ }
++ }
++ }
++ }
++
++ // Update prev for next iteration
++ prev = current;
++ }
++ }
++
++ return { state: "success", data: response };
++}
++// Install script dataType
++jQuery.ajaxSetup({
++ accepts: {
++ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
++ },
++ contents: {
++ script: /(?:java|ecma)script/
++ },
++ converters: {
++ "text script": function( text ) {
++ jQuery.globalEval( text );
++ return text;
++ }
++ }
++});
++
++// Handle cache's special case and global
++jQuery.ajaxPrefilter( "script", function( s ) {
++ if ( s.cache === undefined ) {
++ s.cache = false;
++ }
++ if ( s.crossDomain ) {
++ s.type = "GET";
++ s.global = false;
++ }
++});
++
++// Bind script tag hack transport
++jQuery.ajaxTransport( "script", function(s) {
++
++ // This transport only deals with cross domain requests
++ if ( s.crossDomain ) {
++
++ var script,
++ head = document.head || jQuery("head")[0] || document.documentElement;
++
++ return {
++
++ send: function( _, callback ) {
++
++ script = document.createElement("script");
++
++ script.async = true;
++
++ if ( s.scriptCharset ) {
++ script.charset = s.scriptCharset;
++ }
++
++ script.src = s.url;
++
++ // Attach handlers for all browsers
++ script.onload = script.onreadystatechange = function( _, isAbort ) {
++
++ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
++
++ // Handle memory leak in IE
++ script.onload = script.onreadystatechange = null;
++
++ // Remove the script
++ if ( script.parentNode ) {
++ script.parentNode.removeChild( script );
++ }
++
++ // Dereference the script
++ script = null;
++
++ // Callback if not abort
++ if ( !isAbort ) {
++ callback( 200, "success" );
++ }
++ }
++ };
++
++ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
++ // Use native DOM manipulation to avoid our domManip AJAX trickery
++ head.insertBefore( script, head.firstChild );
++ },
++
++ abort: function() {
++ if ( script ) {
++ script.onload( undefined, true );
++ }
++ }
++ };
++ }
++});
++var oldCallbacks = [],
++ rjsonp = /(=)\?(?=&|$)|\?\?/;
++
++// Default jsonp settings
++jQuery.ajaxSetup({
++ jsonp: "callback",
++ jsonpCallback: function() {
++ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
++ this[ callback ] = true;
++ return callback;
++ }
++});
++
++// Detect, normalize options and install callbacks for jsonp requests
++jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
++
++ var callbackName, overwritten, responseContainer,
++ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
++ "url" :
++ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
++ );
++
++ // Handle iff the expected data type is "jsonp" or we have a parameter to set
++ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
++
++ // Get callback name, remembering preexisting value associated with it
++ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
++ s.jsonpCallback() :
++ s.jsonpCallback;
++
++ // Insert callback into url or form data
++ if ( jsonProp ) {
++ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
++ } else if ( s.jsonp !== false ) {
++ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
++ }
++
++ // Use data converter to retrieve json after script execution
++ s.converters["script json"] = function() {
++ if ( !responseContainer ) {
++ jQuery.error( callbackName + " was not called" );
++ }
++ return responseContainer[ 0 ];
++ };
++
++ // force json dataType
++ s.dataTypes[ 0 ] = "json";
++
++ // Install callback
++ overwritten = window[ callbackName ];
++ window[ callbackName ] = function() {
++ responseContainer = arguments;
++ };
++
++ // Clean-up function (fires after converters)
++ jqXHR.always(function() {
++ // Restore preexisting value
++ window[ callbackName ] = overwritten;
++
++ // Save back as free
++ if ( s[ callbackName ] ) {
++ // make sure that re-using the options doesn't screw things around
++ s.jsonpCallback = originalSettings.jsonpCallback;
++
++ // save the callback name for future use
++ oldCallbacks.push( callbackName );
++ }
++
++ // Call if it was a function and we have a response
++ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
++ overwritten( responseContainer[ 0 ] );
++ }
++
++ responseContainer = overwritten = undefined;
++ });
++
++ // Delegate to script
++ return "script";
++ }
++});
++var xhrCallbacks, xhrSupported,
++ xhrId = 0,
++ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
++ xhrOnUnloadAbort = window.ActiveXObject && function() {
++ // Abort all pending requests
++ var key;
++ for ( key in xhrCallbacks ) {
++ xhrCallbacks[ key ]( undefined, true );
++ }
++ };
++
++// Functions to create xhrs
++function createStandardXHR() {
++ try {
++ return new window.XMLHttpRequest();
++ } catch( e ) {}
++}
++
++function createActiveXHR() {
++ try {
++ return new window.ActiveXObject("Microsoft.XMLHTTP");
++ } catch( e ) {}
++}
++
++// Create the request object
++// (This is still attached to ajaxSettings for backward compatibility)
++jQuery.ajaxSettings.xhr = window.ActiveXObject ?
++ /* Microsoft failed to properly
++ * implement the XMLHttpRequest in IE7 (can't request local files),
++ * so we use the ActiveXObject when it is available
++ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
++ * we need a fallback.
++ */
++ function() {
++ return !this.isLocal && createStandardXHR() || createActiveXHR();
++ } :
++ // For all other browsers, use the standard XMLHttpRequest object
++ createStandardXHR;
++
++// Determine support properties
++xhrSupported = jQuery.ajaxSettings.xhr();
++jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
++xhrSupported = jQuery.support.ajax = !!xhrSupported;
++
++// Create transport if the browser can provide an xhr
++if ( xhrSupported ) {
++
++ jQuery.ajaxTransport(function( s ) {
++ // Cross domain only allowed if supported through XMLHttpRequest
++ if ( !s.crossDomain || jQuery.support.cors ) {
++
++ var callback;
++
++ return {
++ send: function( headers, complete ) {
++
++ // Get a new xhr
++ var handle, i,
++ xhr = s.xhr();
++
++ // Open the socket
++ // Passing null username, generates a login popup on Opera (#2865)
++ if ( s.username ) {
++ xhr.open( s.type, s.url, s.async, s.username, s.password );
++ } else {
++ xhr.open( s.type, s.url, s.async );
++ }
++
++ // Apply custom fields if provided
++ if ( s.xhrFields ) {
++ for ( i in s.xhrFields ) {
++ xhr[ i ] = s.xhrFields[ i ];
++ }
++ }
++
++ // Override mime type if needed
++ if ( s.mimeType && xhr.overrideMimeType ) {
++ xhr.overrideMimeType( s.mimeType );
++ }
++
++ // X-Requested-With header
++ // For cross-domain requests, seeing as conditions for a preflight are
++ // akin to a jigsaw puzzle, we simply never set it to be sure.
++ // (it can always be set on a per-request basis or even using ajaxSetup)
++ // For same-domain requests, won't change header if already provided.
++ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
++ headers["X-Requested-With"] = "XMLHttpRequest";
++ }
++
++ // Need an extra try/catch for cross domain requests in Firefox 3
++ try {
++ for ( i in headers ) {
++ xhr.setRequestHeader( i, headers[ i ] );
++ }
++ } catch( err ) {}
++
++ // Do send the request
++ // This may raise an exception which is actually
++ // handled in jQuery.ajax (so no try/catch here)
++ xhr.send( ( s.hasContent && s.data ) || null );
++
++ // Listener
++ callback = function( _, isAbort ) {
++ var status, responseHeaders, statusText, responses;
++
++ // Firefox throws exceptions when accessing properties
++ // of an xhr when a network error occurred
++ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
++ try {
++
++ // Was never called and is aborted or complete
++ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
++
++ // Only called once
++ callback = undefined;
++
++ // Do not keep as active anymore
++ if ( handle ) {
++ xhr.onreadystatechange = jQuery.noop;
++ if ( xhrOnUnloadAbort ) {
++ delete xhrCallbacks[ handle ];
++ }
++ }
++
++ // If it's an abort
++ if ( isAbort ) {
++ // Abort it manually if needed
++ if ( xhr.readyState !== 4 ) {
++ xhr.abort();
++ }
++ } else {
++ responses = {};
++ status = xhr.status;
++ responseHeaders = xhr.getAllResponseHeaders();
++
++ // When requesting binary data, IE6-9 will throw an exception
++ // on any attempt to access responseText (#11426)
++ if ( typeof xhr.responseText === "string" ) {
++ responses.text = xhr.responseText;
++ }
++
++ // Firefox throws an exception when accessing
++ // statusText for faulty cross-domain requests
++ try {
++ statusText = xhr.statusText;
++ } catch( e ) {
++ // We normalize with Webkit giving an empty statusText
++ statusText = "";
++ }
++
++ // Filter status for non standard behaviors
++
++ // If the request is local and we have data: assume a success
++ // (success with no data won't get notified, that's the best we
++ // can do given current implementations)
++ if ( !status && s.isLocal && !s.crossDomain ) {
++ status = responses.text ? 200 : 404;
++ // IE - #1450: sometimes returns 1223 when it should be 204
++ } else if ( status === 1223 ) {
++ status = 204;
++ }
++ }
++ }
++ } catch( firefoxAccessException ) {
++ if ( !isAbort ) {
++ complete( -1, firefoxAccessException );
++ }
++ }
++
++ // Call complete if needed
++ if ( responses ) {
++ complete( status, statusText, responses, responseHeaders );
++ }
++ };
++
++ if ( !s.async ) {
++ // if we're in sync mode we fire the callback
++ callback();
++ } else if ( xhr.readyState === 4 ) {
++ // (IE6 & IE7) if it's in cache and has been
++ // retrieved directly we need to fire the callback
++ setTimeout( callback );
++ } else {
++ handle = ++xhrId;
++ if ( xhrOnUnloadAbort ) {
++ // Create the active xhrs callbacks list if needed
++ // and attach the unload handler
++ if ( !xhrCallbacks ) {
++ xhrCallbacks = {};
++ jQuery( window ).unload( xhrOnUnloadAbort );
++ }
++ // Add to list of active xhrs callbacks
++ xhrCallbacks[ handle ] = callback;
++ }
++ xhr.onreadystatechange = callback;
++ }
++ },
++
++ abort: function() {
++ if ( callback ) {
++ callback( undefined, true );
++ }
++ }
++ };
++ }
++ });
++}
++var fxNow, timerId,
++ rfxtypes = /^(?:toggle|show|hide)$/,
++ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
++ rrun = /queueHooks$/,
++ animationPrefilters = [ defaultPrefilter ],
++ tweeners = {
++ "*": [function( prop, value ) {
++ var end, unit,
++ tween = this.createTween( prop, value ),
++ parts = rfxnum.exec( value ),
++ target = tween.cur(),
++ start = +target || 0,
++ scale = 1,
++ maxIterations = 20;
++
++ if ( parts ) {
++ end = +parts[2];
++ unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
++
++ // We need to compute starting value
++ if ( unit !== "px" && start ) {
++ // Iteratively approximate from a nonzero starting point
++ // Prefer the current property, because this process will be trivial if it uses the same units
++ // Fallback to end or a simple constant
++ start = jQuery.css( tween.elem, prop, true ) || end || 1;
++
++ do {
++ // If previous iteration zeroed out, double until we get *something*
++ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
++ scale = scale || ".5";
++
++ // Adjust and apply
++ start = start / scale;
++ jQuery.style( tween.elem, prop, start + unit );
++
++ // Update scale, tolerating zero or NaN from tween.cur()
++ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
++ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
++ }
++
++ tween.unit = unit;
++ tween.start = start;
++ // If a +=/-= token was provided, we're doing a relative animation
++ tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
++ }
++ return tween;
++ }]
++ };
++
++// Animations created synchronously will run synchronously
++function createFxNow() {
++ setTimeout(function() {
++ fxNow = undefined;
++ });
++ return ( fxNow = jQuery.now() );
++}
++
++function createTweens( animation, props ) {
++ jQuery.each( props, function( prop, value ) {
++ var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
++ index = 0,
++ length = collection.length;
++ for ( ; index < length; index++ ) {
++ if ( collection[ index ].call( animation, prop, value ) ) {
++
++ // we're done with this property
++ return;
++ }
++ }
++ });
++}
++
++function Animation( elem, properties, options ) {
++ var result,
++ stopped,
++ index = 0,
++ length = animationPrefilters.length,
++ deferred = jQuery.Deferred().always( function() {
++ // don't match elem in the :animated selector
++ delete tick.elem;
++ }),
++ tick = function() {
++ if ( stopped ) {
++ return false;
++ }
++ var currentTime = fxNow || createFxNow(),
++ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
++ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
++ temp = remaining / animation.duration || 0,
++ percent = 1 - temp,
++ index = 0,
++ length = animation.tweens.length;
++
++ for ( ; index < length ; index++ ) {
++ animation.tweens[ index ].run( percent );
++ }
++
++ deferred.notifyWith( elem, [ animation, percent, remaining ]);
++
++ if ( percent < 1 && length ) {
++ return remaining;
++ } else {
++ deferred.resolveWith( elem, [ animation ] );
++ return false;
++ }
++ },
++ animation = deferred.promise({
++ elem: elem,
++ props: jQuery.extend( {}, properties ),
++ opts: jQuery.extend( true, { specialEasing: {} }, options ),
++ originalProperties: properties,
++ originalOptions: options,
++ startTime: fxNow || createFxNow(),
++ duration: options.duration,
++ tweens: [],
++ createTween: function( prop, end ) {
++ var tween = jQuery.Tween( elem, animation.opts, prop, end,
++ animation.opts.specialEasing[ prop ] || animation.opts.easing );
++ animation.tweens.push( tween );
++ return tween;
++ },
++ stop: function( gotoEnd ) {
++ var index = 0,
++ // if we are going to the end, we want to run all the tweens
++ // otherwise we skip this part
++ length = gotoEnd ? animation.tweens.length : 0;
++ if ( stopped ) {
++ return this;
++ }
++ stopped = true;
++ for ( ; index < length ; index++ ) {
++ animation.tweens[ index ].run( 1 );
++ }
++
++ // resolve when we played the last frame
++ // otherwise, reject
++ if ( gotoEnd ) {
++ deferred.resolveWith( elem, [ animation, gotoEnd ] );
++ } else {
++ deferred.rejectWith( elem, [ animation, gotoEnd ] );
++ }
++ return this;
++ }
++ }),
++ props = animation.props;
++
++ propFilter( props, animation.opts.specialEasing );
++
++ for ( ; index < length ; index++ ) {
++ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
++ if ( result ) {
++ return result;
++ }
++ }
++
++ createTweens( animation, props );
++
++ if ( jQuery.isFunction( animation.opts.start ) ) {
++ animation.opts.start.call( elem, animation );
++ }
++
++ jQuery.fx.timer(
++ jQuery.extend( tick, {
++ elem: elem,
++ anim: animation,
++ queue: animation.opts.queue
++ })
++ );
++
++ // attach callbacks from options
++ return animation.progress( animation.opts.progress )
++ .done( animation.opts.done, animation.opts.complete )
++ .fail( animation.opts.fail )
++ .always( animation.opts.always );
++}
++
++function propFilter( props, specialEasing ) {
++ var value, name, index, easing, hooks;
++
++ // camelCase, specialEasing and expand cssHook pass
++ for ( index in props ) {
++ name = jQuery.camelCase( index );
++ easing = specialEasing[ name ];
++ value = props[ index ];
++ if ( jQuery.isArray( value ) ) {
++ easing = value[ 1 ];
++ value = props[ index ] = value[ 0 ];
++ }
++
++ if ( index !== name ) {
++ props[ name ] = value;
++ delete props[ index ];
++ }
++
++ hooks = jQuery.cssHooks[ name ];
++ if ( hooks && "expand" in hooks ) {
++ value = hooks.expand( value );
++ delete props[ name ];
++
++ // not quite $.extend, this wont overwrite keys already present.
++ // also - reusing 'index' from above because we have the correct "name"
++ for ( index in value ) {
++ if ( !( index in props ) ) {
++ props[ index ] = value[ index ];
++ specialEasing[ index ] = easing;
++ }
++ }
++ } else {
++ specialEasing[ name ] = easing;
++ }
++ }
++}
++
++jQuery.Animation = jQuery.extend( Animation, {
++
++ tweener: function( props, callback ) {
++ if ( jQuery.isFunction( props ) ) {
++ callback = props;
++ props = [ "*" ];
++ } else {
++ props = props.split(" ");
++ }
++
++ var prop,
++ index = 0,
++ length = props.length;
++
++ for ( ; index < length ; index++ ) {
++ prop = props[ index ];
++ tweeners[ prop ] = tweeners[ prop ] || [];
++ tweeners[ prop ].unshift( callback );
++ }
++ },
++
++ prefilter: function( callback, prepend ) {
++ if ( prepend ) {
++ animationPrefilters.unshift( callback );
++ } else {
++ animationPrefilters.push( callback );
++ }
++ }
++});
++
++function defaultPrefilter( elem, props, opts ) {
++ /*jshint validthis:true */
++ var prop, index, length,
++ value, dataShow, toggle,
++ tween, hooks, oldfire,
++ anim = this,
++ style = elem.style,
++ orig = {},
++ handled = [],
++ hidden = elem.nodeType && isHidden( elem );
++
++ // handle queue: false promises
++ if ( !opts.queue ) {
++ hooks = jQuery._queueHooks( elem, "fx" );
++ if ( hooks.unqueued == null ) {
++ hooks.unqueued = 0;
++ oldfire = hooks.empty.fire;
++ hooks.empty.fire = function() {
++ if ( !hooks.unqueued ) {
++ oldfire();
++ }
++ };
++ }
++ hooks.unqueued++;
++
++ anim.always(function() {
++ // doing this makes sure that the complete handler will be called
++ // before this completes
++ anim.always(function() {
++ hooks.unqueued--;
++ if ( !jQuery.queue( elem, "fx" ).length ) {
++ hooks.empty.fire();
++ }
++ });
++ });
++ }
++
++ // height/width overflow pass
++ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
++ // Make sure that nothing sneaks out
++ // Record all 3 overflow attributes because IE does not
++ // change the overflow attribute when overflowX and
++ // overflowY are set to the same value
++ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
++
++ // Set display property to inline-block for height/width
++ // animations on inline elements that are having width/height animated
++ if ( jQuery.css( elem, "display" ) === "inline" &&
++ jQuery.css( elem, "float" ) === "none" ) {
++
++ // inline-level elements accept inline-block;
++ // block-level elements need to be inline with layout
++ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
++ style.display = "inline-block";
++
++ } else {
++ style.zoom = 1;
++ }
++ }
++ }
++
++ if ( opts.overflow ) {
++ style.overflow = "hidden";
++ if ( !jQuery.support.shrinkWrapBlocks ) {
++ anim.always(function() {
++ style.overflow = opts.overflow[ 0 ];
++ style.overflowX = opts.overflow[ 1 ];
++ style.overflowY = opts.overflow[ 2 ];
++ });
++ }
++ }
++
++
++ // show/hide pass
++ for ( index in props ) {
++ value = props[ index ];
++ if ( rfxtypes.exec( value ) ) {
++ delete props[ index ];
++ toggle = toggle || value === "toggle";
++ if ( value === ( hidden ? "hide" : "show" ) ) {
++ continue;
++ }
++ handled.push( index );
++ }
++ }
++
++ length = handled.length;
++ if ( length ) {
++ dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
++ if ( "hidden" in dataShow ) {
++ hidden = dataShow.hidden;
++ }
++
++ // store state if its toggle - enables .stop().toggle() to "reverse"
++ if ( toggle ) {
++ dataShow.hidden = !hidden;
++ }
++ if ( hidden ) {
++ jQuery( elem ).show();
++ } else {
++ anim.done(function() {
++ jQuery( elem ).hide();
++ });
++ }
++ anim.done(function() {
++ var prop;
++ jQuery._removeData( elem, "fxshow" );
++ for ( prop in orig ) {
++ jQuery.style( elem, prop, orig[ prop ] );
++ }
++ });
++ for ( index = 0 ; index < length ; index++ ) {
++ prop = handled[ index ];
++ tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
++ orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
++
++ if ( !( prop in dataShow ) ) {
++ dataShow[ prop ] = tween.start;
++ if ( hidden ) {
++ tween.end = tween.start;
++ tween.start = prop === "width" || prop === "height" ? 1 : 0;
++ }
++ }
++ }
++ }
++}
++
++function Tween( elem, options, prop, end, easing ) {
++ return new Tween.prototype.init( elem, options, prop, end, easing );
++}
++jQuery.Tween = Tween;
++
++Tween.prototype = {
++ constructor: Tween,
++ init: function( elem, options, prop, end, easing, unit ) {
++ this.elem = elem;
++ this.prop = prop;
++ this.easing = easing || "swing";
++ this.options = options;
++ this.start = this.now = this.cur();
++ this.end = end;
++ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
++ },
++ cur: function() {
++ var hooks = Tween.propHooks[ this.prop ];
++
++ return hooks && hooks.get ?
++ hooks.get( this ) :
++ Tween.propHooks._default.get( this );
++ },
++ run: function( percent ) {
++ var eased,
++ hooks = Tween.propHooks[ this.prop ];
++
++ if ( this.options.duration ) {
++ this.pos = eased = jQuery.easing[ this.easing ](
++ percent, this.options.duration * percent, 0, 1, this.options.duration
++ );
++ } else {
++ this.pos = eased = percent;
++ }
++ this.now = ( this.end - this.start ) * eased + this.start;
++
++ if ( this.options.step ) {
++ this.options.step.call( this.elem, this.now, this );
++ }
++
++ if ( hooks && hooks.set ) {
++ hooks.set( this );
++ } else {
++ Tween.propHooks._default.set( this );
++ }
++ return this;
++ }
++};
++
++Tween.prototype.init.prototype = Tween.prototype;
++
++Tween.propHooks = {
++ _default: {
++ get: function( tween ) {
++ var result;
++
++ if ( tween.elem[ tween.prop ] != null &&
++ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
++ return tween.elem[ tween.prop ];
++ }
++
++ // passing an empty string as a 3rd parameter to .css will automatically
++ // attempt a parseFloat and fallback to a string if the parse fails
++ // so, simple values such as "10px" are parsed to Float.
++ // complex values such as "rotate(1rad)" are returned as is.
++ result = jQuery.css( tween.elem, tween.prop, "" );
++ // Empty strings, null, undefined and "auto" are converted to 0.
++ return !result || result === "auto" ? 0 : result;
++ },
++ set: function( tween ) {
++ // use step hook for back compat - use cssHook if its there - use .style if its
++ // available and use plain properties where available
++ if ( jQuery.fx.step[ tween.prop ] ) {
++ jQuery.fx.step[ tween.prop ]( tween );
++ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
++ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
++ } else {
++ tween.elem[ tween.prop ] = tween.now;
++ }
++ }
++ }
++};
++
++// Remove in 2.0 - this supports IE8's panic based approach
++// to setting things on disconnected nodes
++
++Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
++ set: function( tween ) {
++ if ( tween.elem.nodeType && tween.elem.parentNode ) {
++ tween.elem[ tween.prop ] = tween.now;
++ }
++ }
++};
++
++jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
++ var cssFn = jQuery.fn[ name ];
++ jQuery.fn[ name ] = function( speed, easing, callback ) {
++ return speed == null || typeof speed === "boolean" ?
++ cssFn.apply( this, arguments ) :
++ this.animate( genFx( name, true ), speed, easing, callback );
++ };
++});
++
++jQuery.fn.extend({
++ fadeTo: function( speed, to, easing, callback ) {
++
++ // show any hidden elements after setting opacity to 0
++ return this.filter( isHidden ).css( "opacity", 0 ).show()
++
++ // animate to the value specified
++ .end().animate({ opacity: to }, speed, easing, callback );
++ },
++ animate: function( prop, speed, easing, callback ) {
++ var empty = jQuery.isEmptyObject( prop ),
++ optall = jQuery.speed( speed, easing, callback ),
++ doAnimation = function() {
++ // Operate on a copy of prop so per-property easing won't be lost
++ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
++ doAnimation.finish = function() {
++ anim.stop( true );
++ };
++ // Empty animations, or finishing resolves immediately
++ if ( empty || jQuery._data( this, "finish" ) ) {
++ anim.stop( true );
++ }
++ };
++ doAnimation.finish = doAnimation;
++
++ return empty || optall.queue === false ?
++ this.each( doAnimation ) :
++ this.queue( optall.queue, doAnimation );
++ },
++ stop: function( type, clearQueue, gotoEnd ) {
++ var stopQueue = function( hooks ) {
++ var stop = hooks.stop;
++ delete hooks.stop;
++ stop( gotoEnd );
++ };
++
++ if ( typeof type !== "string" ) {
++ gotoEnd = clearQueue;
++ clearQueue = type;
++ type = undefined;
++ }
++ if ( clearQueue && type !== false ) {
++ this.queue( type || "fx", [] );
++ }
++
++ return this.each(function() {
++ var dequeue = true,
++ index = type != null && type + "queueHooks",
++ timers = jQuery.timers,
++ data = jQuery._data( this );
++
++ if ( index ) {
++ if ( data[ index ] && data[ index ].stop ) {
++ stopQueue( data[ index ] );
++ }
++ } else {
++ for ( index in data ) {
++ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
++ stopQueue( data[ index ] );
++ }
++ }
++ }
++
++ for ( index = timers.length; index--; ) {
++ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
++ timers[ index ].anim.stop( gotoEnd );
++ dequeue = false;
++ timers.splice( index, 1 );
++ }
++ }
++
++ // start the next in the queue if the last step wasn't forced
++ // timers currently will call their complete callbacks, which will dequeue
++ // but only if they were gotoEnd
++ if ( dequeue || !gotoEnd ) {
++ jQuery.dequeue( this, type );
++ }
++ });
++ },
++ finish: function( type ) {
++ if ( type !== false ) {
++ type = type || "fx";
++ }
++ return this.each(function() {
++ var index,
++ data = jQuery._data( this ),
++ queue = data[ type + "queue" ],
++ hooks = data[ type + "queueHooks" ],
++ timers = jQuery.timers,
++ length = queue ? queue.length : 0;
++
++ // enable finishing flag on private data
++ data.finish = true;
++
++ // empty the queue first
++ jQuery.queue( this, type, [] );
++
++ if ( hooks && hooks.cur && hooks.cur.finish ) {
++ hooks.cur.finish.call( this );
++ }
++
++ // look for any active animations, and finish them
++ for ( index = timers.length; index--; ) {
++ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
++ timers[ index ].anim.stop( true );
++ timers.splice( index, 1 );
++ }
++ }
++
++ // look for any animations in the old queue and finish them
++ for ( index = 0; index < length; index++ ) {
++ if ( queue[ index ] && queue[ index ].finish ) {
++ queue[ index ].finish.call( this );
++ }
++ }
++
++ // turn off finishing flag
++ delete data.finish;
++ });
++ }
++});
++
++// Generate parameters to create a standard animation
++function genFx( type, includeWidth ) {
++ var which,
++ attrs = { height: type },
++ i = 0;
++
++ // if we include width, step value is 1 to do all cssExpand values,
++ // if we don't include width, step value is 2 to skip over Left and Right
++ includeWidth = includeWidth? 1 : 0;
++ for( ; i < 4 ; i += 2 - includeWidth ) {
++ which = cssExpand[ i ];
++ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
++ }
++
++ if ( includeWidth ) {
++ attrs.opacity = attrs.width = type;
++ }
++
++ return attrs;
++}
++
++// Generate shortcuts for custom animations
++jQuery.each({
++ slideDown: genFx("show"),
++ slideUp: genFx("hide"),
++ slideToggle: genFx("toggle"),
++ fadeIn: { opacity: "show" },
++ fadeOut: { opacity: "hide" },
++ fadeToggle: { opacity: "toggle" }
++}, function( name, props ) {
++ jQuery.fn[ name ] = function( speed, easing, callback ) {
++ return this.animate( props, speed, easing, callback );
++ };
++});
++
++jQuery.speed = function( speed, easing, fn ) {
++ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
++ complete: fn || !fn && easing ||
++ jQuery.isFunction( speed ) && speed,
++ duration: speed,
++ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
++ };
++
++ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
++ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
++
++ // normalize opt.queue - true/undefined/null -> "fx"
++ if ( opt.queue == null || opt.queue === true ) {
++ opt.queue = "fx";
++ }
++
++ // Queueing
++ opt.old = opt.complete;
++
++ opt.complete = function() {
++ if ( jQuery.isFunction( opt.old ) ) {
++ opt.old.call( this );
++ }
++
++ if ( opt.queue ) {
++ jQuery.dequeue( this, opt.queue );
++ }
++ };
++
++ return opt;
++};
++
++jQuery.easing = {
++ linear: function( p ) {
++ return p;
++ },
++ swing: function( p ) {
++ return 0.5 - Math.cos( p*Math.PI ) / 2;
++ }
++};
++
++jQuery.timers = [];
++jQuery.fx = Tween.prototype.init;
++jQuery.fx.tick = function() {
++ var timer,
++ timers = jQuery.timers,
++ i = 0;
++
++ fxNow = jQuery.now();
++
++ for ( ; i < timers.length; i++ ) {
++ timer = timers[ i ];
++ // Checks the timer has not already been removed
++ if ( !timer() && timers[ i ] === timer ) {
++ timers.splice( i--, 1 );
++ }
++ }
++
++ if ( !timers.length ) {
++ jQuery.fx.stop();
++ }
++ fxNow = undefined;
++};
++
++jQuery.fx.timer = function( timer ) {
++ if ( timer() && jQuery.timers.push( timer ) ) {
++ jQuery.fx.start();
++ }
++};
++
++jQuery.fx.interval = 13;
++
++jQuery.fx.start = function() {
++ if ( !timerId ) {
++ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
++ }
++};
++
++jQuery.fx.stop = function() {
++ clearInterval( timerId );
++ timerId = null;
++};
++
++jQuery.fx.speeds = {
++ slow: 600,
++ fast: 200,
++ // Default speed
++ _default: 400
++};
++
++// Back Compat <1.8 extension point
++jQuery.fx.step = {};
++
++if ( jQuery.expr && jQuery.expr.filters ) {
++ jQuery.expr.filters.animated = function( elem ) {
++ return jQuery.grep(jQuery.timers, function( fn ) {
++ return elem === fn.elem;
++ }).length;
++ };
++}
++jQuery.fn.offset = function( options ) {
++ if ( arguments.length ) {
++ return options === undefined ?
++ this :
++ this.each(function( i ) {
++ jQuery.offset.setOffset( this, options, i );
++ });
++ }
++
++ var docElem, win,
++ box = { top: 0, left: 0 },
++ elem = this[ 0 ],
++ doc = elem && elem.ownerDocument;
++
++ if ( !doc ) {
++ return;
++ }
++
++ docElem = doc.documentElement;
++
++ // Make sure it's not a disconnected DOM node
++ if ( !jQuery.contains( docElem, elem ) ) {
++ return box;
++ }
++
++ // If we don't have gBCR, just use 0,0 rather than error
++ // BlackBerry 5, iOS 3 (original iPhone)
++ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
++ box = elem.getBoundingClientRect();
++ }
++ win = getWindow( doc );
++ return {
++ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
++ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
++ };
++};
++
++jQuery.offset = {
++
++ setOffset: function( elem, options, i ) {
++ var position = jQuery.css( elem, "position" );
++
++ // set position first, in-case top/left are set even on static elem
++ if ( position === "static" ) {
++ elem.style.position = "relative";
++ }
++
++ var curElem = jQuery( elem ),
++ curOffset = curElem.offset(),
++ curCSSTop = jQuery.css( elem, "top" ),
++ curCSSLeft = jQuery.css( elem, "left" ),
++ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
++ props = {}, curPosition = {}, curTop, curLeft;
++
++ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
++ if ( calculatePosition ) {
++ curPosition = curElem.position();
++ curTop = curPosition.top;
++ curLeft = curPosition.left;
++ } else {
++ curTop = parseFloat( curCSSTop ) || 0;
++ curLeft = parseFloat( curCSSLeft ) || 0;
++ }
++
++ if ( jQuery.isFunction( options ) ) {
++ options = options.call( elem, i, curOffset );
++ }
++
++ if ( options.top != null ) {
++ props.top = ( options.top - curOffset.top ) + curTop;
++ }
++ if ( options.left != null ) {
++ props.left = ( options.left - curOffset.left ) + curLeft;
++ }
++
++ if ( "using" in options ) {
++ options.using.call( elem, props );
++ } else {
++ curElem.css( props );
++ }
++ }
++};
++
++
++jQuery.fn.extend({
++
++ position: function() {
++ if ( !this[ 0 ] ) {
++ return;
++ }
++
++ var offsetParent, offset,
++ parentOffset = { top: 0, left: 0 },
++ elem = this[ 0 ];
++
++ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
++ if ( jQuery.css( elem, "position" ) === "fixed" ) {
++ // we assume that getBoundingClientRect is available when computed position is fixed
++ offset = elem.getBoundingClientRect();
++ } else {
++ // Get *real* offsetParent
++ offsetParent = this.offsetParent();
++
++ // Get correct offsets
++ offset = this.offset();
++ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
++ parentOffset = offsetParent.offset();
++ }
++
++ // Add offsetParent borders
++ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
++ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
++ }
++
++ // Subtract parent offsets and element margins
++ // note: when an element has margin: auto the offsetLeft and marginLeft
++ // are the same in Safari causing offset.left to incorrectly be 0
++ return {
++ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
++ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
++ };
++ },
++
++ offsetParent: function() {
++ return this.map(function() {
++ var offsetParent = this.offsetParent || document.documentElement;
++ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
++ offsetParent = offsetParent.offsetParent;
++ }
++ return offsetParent || document.documentElement;
++ });
++ }
++});
++
++
++// Create scrollLeft and scrollTop methods
++jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
++ var top = /Y/.test( prop );
++
++ jQuery.fn[ method ] = function( val ) {
++ return jQuery.access( this, function( elem, method, val ) {
++ var win = getWindow( elem );
++
++ if ( val === undefined ) {
++ return win ? (prop in win) ? win[ prop ] :
++ win.document.documentElement[ method ] :
++ elem[ method ];
++ }
++
++ if ( win ) {
++ win.scrollTo(
++ !top ? val : jQuery( win ).scrollLeft(),
++ top ? val : jQuery( win ).scrollTop()
++ );
++
++ } else {
++ elem[ method ] = val;
++ }
++ }, method, val, arguments.length, null );
++ };
++});
++
++function getWindow( elem ) {
++ return jQuery.isWindow( elem ) ?
++ elem :
++ elem.nodeType === 9 ?
++ elem.defaultView || elem.parentWindow :
++ false;
++}
++// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
++jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
++ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
++ // margin is only for outerHeight, outerWidth
++ jQuery.fn[ funcName ] = function( margin, value ) {
++ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
++ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
++
++ return jQuery.access( this, function( elem, type, value ) {
++ var doc;
++
++ if ( jQuery.isWindow( elem ) ) {
++ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
++ // isn't a whole lot we can do. See pull request at this URL for discussion:
++ // https://github.com/jquery/jquery/pull/764
++ return elem.document.documentElement[ "client" + name ];
++ }
++
++ // Get document width or height
++ if ( elem.nodeType === 9 ) {
++ doc = elem.documentElement;
++
++ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
++ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
++ return Math.max(
++ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
++ elem.body[ "offset" + name ], doc[ "offset" + name ],
++ doc[ "client" + name ]
++ );
++ }
++
++ return value === undefined ?
++ // Get width or height on the element, requesting but not forcing parseFloat
++ jQuery.css( elem, type, extra ) :
++
++ // Set width or height on the element
++ jQuery.style( elem, type, value, extra );
++ }, type, chainable ? margin : undefined, chainable, null );
++ };
++ });
++});
++// Limit scope pollution from any deprecated API
++// (function() {
++
++// })();
++// Expose jQuery to the global object
++window.jQuery = window.$ = jQuery;
++
++// Expose jQuery as an AMD module, but only for AMD loaders that
++// understand the issues with loading multiple versions of jQuery
++// in a page that all might call define(). The loader will indicate
++// they have special allowances for multiple jQuery versions by
++// specifying define.amd.jQuery = true. Register as a named module,
++// since jQuery can be concatenated with other files that may use define,
++// but not use a proper concatenation script that understands anonymous
++// AMD modules. A named AMD is safest and most robust way to register.
++// Lowercase jquery is used because AMD module names are derived from
++// file names, and jQuery is normally delivered in a lowercase file name.
++// Do this after creating the global so that if an AMD module wants to call
++// noConflict to hide this version of jQuery, it will work.
++if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
++ define( "jquery", [], function () { return jQuery; } );
++}
++
++})( window );
--- /dev/null
--- /dev/null
++.\" Hey, EMACS: -*- nroff -*-
++.\" First parameter, NAME, should be all caps
++.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
++.\" other parameters are allowed: see man(7), man(1)
++.TH jsc 1 "Jan 21, 2014"
++.\" Please adjust this date whenever revising the manpage.
++.\"
++.\" Some roff macros, for reference:
++.\" .nh disable hyphenation
++.\" .hy enable hyphenation
++.\" .ad l left justify
++.\" .ad b justify to both left and right margins
++.\" .nf disable filling
++.\" .fi enable filling
++.\" .br insert line break
++.\" .sp <n> insert n+1 empty lines
++.\" for manpage-specific macros, see man(7)
++.SH NAME
++jsc \- command-line JavaScript interpreter.
++.SH SYNOPSIS
++.B jsc
++.RI [ options ]
++.RI [ files ]
++.RI [ \-\-\ arguments ]
++.SH DESCRIPTION
++This manual page documents briefly the
++.B jsc
++command.
++.PP
++\fBjsc\fP is a command-line utility that allows you to run JavaScript
++programs outside of the context of a web browser. It is primarily used
++as part of the test harness for validating the JavaScript portions of
++WebKit, but can also be used as a scripting tool.
++.PP
++\fBjsc\fP can be run in an interactive mode to test out JavaScript
++expressions, or it can be passed one or more files to run similar to
++invoking a Perl or Python script.
++.SH OPTIONS
++.TP
++.B \-e
++Evaluate argument as script code.
++.TP
++.B \-f
++Specifies a source file (deprecated).
++.TP
++.B \-h,\ \-\-help
++Shows summary of command-line options.
++.TP
++.B \-i
++Enables interactive mode (default if no files are specified).
++.TP
++.BI \-p " file"
++Outputs profiling data to a file.
++.TP
++.B \-s
++Installs signal handlers that exit on a crash.
++.TP
++.B \-x
++Output exit code before terminating.
++.TP
++.B \--options
++Dumps all JSC VM options and exits.
++.TP
++.B \-\-dumpOptions
++Dumps all JSC VM options before continuing.
++.TP
++.B \-\-<jsc VM option>=<value>
++Sets the specified JSC VM option.
++.SH AUTHOR
++This manual page was written by Alberto Garcia <berto@igalia.com>,
++based on the contents of \fIhttp://trac.webkit.org/wiki/JSC\fP.
--- /dev/null
--- /dev/null
++usr/lib/*/libjavascriptcoregtk-4.0.so.*
--- /dev/null
--- /dev/null
++usr/bin/jsc
--- /dev/null
--- /dev/null
++debian/jsc.1
--- /dev/null
--- /dev/null
++usr/include/webkitgtk-4.0/JavaScriptCore/
++usr/lib/*/libjavascriptcoregtk-4.0.so
++usr/lib/*/pkgconfig/javascriptcoregtk-4.0.pc
++usr/share/gir-1.0/JavaScriptCore-4.0.gir usr/share/gir-1.0/
--- /dev/null
--- /dev/null
++usr/lib/*/libwebkit2gtk-4.0.so.*
++usr/lib/*/webkit2gtk-4.0
++usr/share/locale/*
--- /dev/null
--- /dev/null
++libwebkit2gtk-4.0-37: shared-lib-without-dependency-information usr/lib/*/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so
--- /dev/null
--- /dev/null
++libwebkit2gtk-4.0.so.37 libwebkit2gtk-4.0-37 #MINVER#
++ NetworkProcessMainUnix@Base 2.5.3
++ PluginProcessMainUnix@Base 2.5.3
++ WebProcessMainUnix@Base 2.5.3
++ (c++)"WebKit::WebGtkExtensionManager::initialize(OpaqueWKBundle const*, void const*)@Base" 2.5.3
++ (c++)"WebKit::WebGtkExtensionManager::shared()@Base" 2.5.3
++ webkit_authentication_dialog_get_type@Base 2.5.3
++ webkit_authentication_request_authenticate@Base 2.5.3
++ webkit_authentication_request_can_save_credentials@Base 2.5.3
++ webkit_authentication_request_cancel@Base 2.5.3
++ webkit_authentication_request_get_host@Base 2.5.3
++ webkit_authentication_request_get_port@Base 2.5.3
++ webkit_authentication_request_get_proposed_credential@Base 2.5.3
++ webkit_authentication_request_get_realm@Base 2.5.3
++ webkit_authentication_request_get_scheme@Base 2.5.3
++ webkit_authentication_request_get_type@Base 2.5.3
++ webkit_authentication_request_is_for_proxy@Base 2.5.3
++ webkit_authentication_request_is_retry@Base 2.5.3
++ webkit_authentication_scheme_get_type@Base 2.5.3
++ webkit_back_forward_list_get_back_item@Base 2.5.3
++ webkit_back_forward_list_get_back_list@Base 2.5.3
++ webkit_back_forward_list_get_back_list_with_limit@Base 2.5.3
++ webkit_back_forward_list_get_current_item@Base 2.5.3
++ webkit_back_forward_list_get_forward_item@Base 2.5.3
++ webkit_back_forward_list_get_forward_list@Base 2.5.3
++ webkit_back_forward_list_get_forward_list_with_limit@Base 2.5.3
++ webkit_back_forward_list_get_length@Base 2.5.3
++ webkit_back_forward_list_get_nth_item@Base 2.5.3
++ webkit_back_forward_list_get_type@Base 2.5.3
++ webkit_back_forward_list_item_get_original_uri@Base 2.5.3
++ webkit_back_forward_list_item_get_title@Base 2.5.3
++ webkit_back_forward_list_item_get_type@Base 2.5.3
++ webkit_back_forward_list_item_get_uri@Base 2.5.3
++ webkit_cache_model_get_type@Base 2.5.3
++ webkit_context_menu_action_get_type@Base 2.5.3
++ webkit_context_menu_append@Base 2.5.3
++ webkit_context_menu_first@Base 2.5.3
++ webkit_context_menu_get_item_at_position@Base 2.5.3
++ webkit_context_menu_get_items@Base 2.5.3
++ webkit_context_menu_get_n_items@Base 2.5.3
++ webkit_context_menu_get_type@Base 2.5.3
++ webkit_context_menu_insert@Base 2.5.3
++ webkit_context_menu_item_get_action@Base 2.5.3
++ webkit_context_menu_item_get_stock_action@Base 2.5.3
++ webkit_context_menu_item_get_submenu@Base 2.5.3
++ webkit_context_menu_item_get_type@Base 2.5.3
++ webkit_context_menu_item_is_separator@Base 2.5.3
++ webkit_context_menu_item_new@Base 2.5.3
++ webkit_context_menu_item_new_from_stock_action@Base 2.5.3
++ webkit_context_menu_item_new_from_stock_action_with_label@Base 2.5.3
++ webkit_context_menu_item_new_separator@Base 2.5.3
++ webkit_context_menu_item_new_with_submenu@Base 2.5.3
++ webkit_context_menu_item_set_submenu@Base 2.5.3
++ webkit_context_menu_last@Base 2.5.3
++ webkit_context_menu_move_item@Base 2.5.3
++ webkit_context_menu_new@Base 2.5.3
++ webkit_context_menu_new_with_items@Base 2.5.3
++ webkit_context_menu_prepend@Base 2.5.3
++ webkit_context_menu_remove@Base 2.5.3
++ webkit_context_menu_remove_all@Base 2.5.3
++ webkit_cookie_accept_policy_get_type@Base 2.5.3
++ webkit_cookie_manager_delete_all_cookies@Base 2.5.3
++ webkit_cookie_manager_delete_cookies_for_domain@Base 2.5.3
++ webkit_cookie_manager_get_accept_policy@Base 2.5.3
++ webkit_cookie_manager_get_accept_policy_finish@Base 2.5.3
++ webkit_cookie_manager_get_domains_with_cookies@Base 2.5.3
++ webkit_cookie_manager_get_domains_with_cookies_finish@Base 2.5.3
++ webkit_cookie_manager_get_type@Base 2.5.3
++ webkit_cookie_manager_set_accept_policy@Base 2.5.3
++ webkit_cookie_manager_set_persistent_storage@Base 2.5.3
++ webkit_cookie_persistent_storage_get_type@Base 2.5.3
++ webkit_credential_copy@Base 2.5.3
++ webkit_credential_free@Base 2.5.3
++ webkit_credential_get_password@Base 2.5.3
++ webkit_credential_get_persistence@Base 2.5.3
++ webkit_credential_get_type@Base 2.5.3
++ webkit_credential_get_username@Base 2.5.3
++ webkit_credential_has_password@Base 2.5.3
++ webkit_credential_new@Base 2.5.3
++ webkit_credential_persistence_get_type@Base 2.5.3
++ (optional)webkit_dom_attr_get_is_id@Base 2.5.3
++ webkit_dom_attr_get_name@Base 2.5.3
++ webkit_dom_attr_get_owner_element@Base 2.5.3
++ webkit_dom_attr_get_specified@Base 2.5.3
++ webkit_dom_attr_get_type@Base 2.5.3
++ webkit_dom_attr_get_value@Base 2.5.3
++ webkit_dom_attr_set_value@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_enabled@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_id@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_kind@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_label@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_language@Base 2.5.3
++ (optional)webkit_dom_audio_track_get_type@Base 2.5.3
++ (optional)webkit_dom_audio_track_list_get_length@Base 2.5.3
++ (optional)webkit_dom_audio_track_list_get_track_by_id@Base 2.5.3
++ (optional)webkit_dom_audio_track_list_get_type@Base 2.5.3
++ (optional)webkit_dom_audio_track_list_item@Base 2.5.3
++ (optional)webkit_dom_audio_track_set_enabled@Base 2.5.3
++ (optional)webkit_dom_bar_prop_get_type@Base 2.5.3
++ (optional)webkit_dom_bar_prop_get_visible@Base 2.5.3
++ (optional)webkit_dom_battery_manager_get_charging@Base 2.5.3
++ (optional)webkit_dom_battery_manager_get_charging_time@Base 2.5.3
++ (optional)webkit_dom_battery_manager_get_discharging_time@Base 2.5.3
++ (optional)webkit_dom_battery_manager_get_level@Base 2.5.3
++ (optional)webkit_dom_battery_manager_get_type@Base 2.5.3
++ (optional)webkit_dom_blob_get_blob_type@Base 2.5.3
++ webkit_dom_blob_get_size@Base 2.5.3
++ webkit_dom_blob_get_type@Base 2.5.3
++ (optional)webkit_dom_blob_slice@Base 2.5.3
++ webkit_dom_cdata_section_get_type@Base 2.5.3
++ webkit_dom_character_data_append_data@Base 2.5.3
++ webkit_dom_character_data_delete_data@Base 2.5.3
++ webkit_dom_character_data_get_data@Base 2.5.3
++ webkit_dom_character_data_get_length@Base 2.5.3
++ webkit_dom_character_data_get_type@Base 2.5.3
++ webkit_dom_character_data_insert_data@Base 2.5.3
++ (optional)webkit_dom_character_data_remove@Base 2.5.3
++ webkit_dom_character_data_replace_data@Base 2.5.3
++ webkit_dom_character_data_set_data@Base 2.5.3
++ webkit_dom_character_data_substring_data@Base 2.5.3
++ webkit_dom_comment_get_type@Base 2.5.3
++ webkit_dom_css_rule_get_css_text@Base 2.5.3
++ webkit_dom_css_rule_get_parent_rule@Base 2.5.3
++ webkit_dom_css_rule_get_parent_style_sheet@Base 2.5.3
++ webkit_dom_css_rule_get_rule_type@Base 2.5.3
++ webkit_dom_css_rule_get_type@Base 2.5.3
++ webkit_dom_css_rule_list_get_length@Base 2.5.3
++ webkit_dom_css_rule_list_get_type@Base 2.5.3
++ webkit_dom_css_rule_list_item@Base 2.5.3
++ webkit_dom_css_rule_set_css_text@Base 2.5.3
++ webkit_dom_css_style_declaration_get_css_text@Base 2.5.3
++ webkit_dom_css_style_declaration_get_length@Base 2.5.3
++ webkit_dom_css_style_declaration_get_parent_rule@Base 2.5.3
++ webkit_dom_css_style_declaration_get_property_priority@Base 2.5.3
++ webkit_dom_css_style_declaration_get_property_shorthand@Base 2.5.3
++ webkit_dom_css_style_declaration_get_property_value@Base 2.5.3
++ webkit_dom_css_style_declaration_get_type@Base 2.5.3
++ webkit_dom_css_style_declaration_is_property_implicit@Base 2.5.3
++ webkit_dom_css_style_declaration_item@Base 2.5.3
++ webkit_dom_css_style_declaration_remove_property@Base 2.5.3
++ webkit_dom_css_style_declaration_set_css_text@Base 2.5.3
++ webkit_dom_css_style_declaration_set_property@Base 2.5.3
++ webkit_dom_css_style_sheet_add_rule@Base 2.5.3
++ webkit_dom_css_style_sheet_delete_rule@Base 2.5.3
++ webkit_dom_css_style_sheet_get_css_rules@Base 2.5.3
++ webkit_dom_css_style_sheet_get_owner_rule@Base 2.5.3
++ webkit_dom_css_style_sheet_get_rules@Base 2.5.3
++ webkit_dom_css_style_sheet_get_type@Base 2.5.3
++ webkit_dom_css_style_sheet_insert_rule@Base 2.5.3
++ webkit_dom_css_style_sheet_remove_rule@Base 2.5.3
++ webkit_dom_css_value_get_css_text@Base 2.5.3
++ webkit_dom_css_value_get_css_value_type@Base 2.5.3
++ webkit_dom_css_value_get_type@Base 2.5.3
++ webkit_dom_css_value_set_css_text@Base 2.5.3
++ (optional)webkit_dom_data_cue_get_text@Base 2.5.3
++ (optional)webkit_dom_data_cue_get_type@Base 2.5.3
++ (optional)webkit_dom_database_get_type@Base 2.5.3
++ (optional)webkit_dom_database_get_version@Base 2.5.3
++ webkit_dom_document_adopt_node@Base 2.5.3
++ (optional)webkit_dom_document_caret_range_from_point@Base 2.5.3
++ webkit_dom_document_create_attribute@Base 2.5.3
++ webkit_dom_document_create_attribute_ns@Base 2.5.3
++ webkit_dom_document_create_cdata_section@Base 2.5.3
++ webkit_dom_document_create_comment@Base 2.5.3
++ webkit_dom_document_create_css_style_declaration@Base 2.5.3
++ webkit_dom_document_create_document_fragment@Base 2.5.3
++ webkit_dom_document_create_element@Base 2.5.3
++ webkit_dom_document_create_element_ns@Base 2.5.3
++ webkit_dom_document_create_entity_reference@Base 2.5.3
++ webkit_dom_document_create_event@Base 2.5.3
++ webkit_dom_document_create_expression@Base 2.5.3
++ webkit_dom_document_create_node_iterator@Base 2.5.3
++ webkit_dom_document_create_ns_resolver@Base 2.5.3
++ webkit_dom_document_create_processing_instruction@Base 2.5.3
++ webkit_dom_document_create_range@Base 2.5.3
++ webkit_dom_document_create_text_node@Base 2.5.3
++ (optional)webkit_dom_document_create_touch@Base 2.5.3
++ webkit_dom_document_create_tree_walker@Base 2.5.3
++ webkit_dom_document_element_from_point@Base 2.5.3
++ webkit_dom_document_evaluate@Base 2.5.3
++ webkit_dom_document_exec_command@Base 2.5.3
++ (optional)webkit_dom_document_exit_pointer_lock@Base 2.5.3
++ webkit_dom_document_fragment_get_type@Base 2.5.3
++ (optional)webkit_dom_document_fragment_query_selector@Base 2.5.3
++ (optional)webkit_dom_document_fragment_query_selector_all@Base 2.5.3
++ webkit_dom_document_get_active_element@Base 2.5.3
++ webkit_dom_document_get_anchors@Base 2.5.3
++ webkit_dom_document_get_applets@Base 2.5.3
++ webkit_dom_document_get_body@Base 2.5.3
++ webkit_dom_document_get_character_set@Base 2.5.3
++ webkit_dom_document_get_charset@Base 2.5.3
++ (optional)webkit_dom_document_get_compat_mode@Base 2.5.3
++ webkit_dom_document_get_cookie@Base 2.5.3
++ (optional)webkit_dom_document_get_current_script@Base 2.5.3
++ webkit_dom_document_get_default_charset@Base 2.5.3
++ webkit_dom_document_get_default_view@Base 2.5.3
++ webkit_dom_document_get_doctype@Base 2.5.3
++ webkit_dom_document_get_document_element@Base 2.5.3
++ webkit_dom_document_get_document_uri@Base 2.5.3
++ webkit_dom_document_get_domain@Base 2.5.3
++ webkit_dom_document_get_element_by_id@Base 2.5.3
++ webkit_dom_document_get_elements_by_class_name@Base 2.5.3
++ webkit_dom_document_get_elements_by_name@Base 2.5.3
++ webkit_dom_document_get_elements_by_tag_name@Base 2.5.3
++ webkit_dom_document_get_elements_by_tag_name_ns@Base 2.5.3
++ webkit_dom_document_get_forms@Base 2.5.3
++ webkit_dom_document_get_head@Base 2.5.3
++ (optional)webkit_dom_document_get_hidden@Base 2.5.3
++ webkit_dom_document_get_images@Base 2.5.3
++ webkit_dom_document_get_implementation@Base 2.5.3
++ webkit_dom_document_get_input_encoding@Base 2.5.3
++ webkit_dom_document_get_last_modified@Base 2.5.3
++ webkit_dom_document_get_links@Base 2.5.3
++ (optional)webkit_dom_document_get_origin@Base 2.5.3
++ webkit_dom_document_get_override_style@Base 2.5.3
++ (optional)webkit_dom_document_get_pointer_lock_element@Base 2.5.3
++ webkit_dom_document_get_preferred_stylesheet_set@Base 2.5.3
++ webkit_dom_document_get_ready_state@Base 2.5.3
++ webkit_dom_document_get_referrer@Base 2.5.3
++ (optional)webkit_dom_document_get_security_policy@Base 2.5.3
++ webkit_dom_document_get_selected_stylesheet_set@Base 2.5.3
++ webkit_dom_document_get_style_sheets@Base 2.5.3
++ webkit_dom_document_get_title@Base 2.5.3
++ webkit_dom_document_get_type@Base 2.5.3
++ webkit_dom_document_get_url@Base 2.5.3
++ (optional)webkit_dom_document_get_visibility_state@Base 2.5.3
++ (optional)webkit_dom_document_get_webkit_current_full_screen_element@Base 2.5.3
++ (optional)webkit_dom_document_get_webkit_full_screen_keyboard_input_allowed@Base 2.5.3
++ (optional)webkit_dom_document_get_webkit_fullscreen_element@Base 2.5.3
++ (optional)webkit_dom_document_get_webkit_fullscreen_enabled@Base 2.5.3
++ (optional)webkit_dom_document_get_webkit_is_full_screen@Base 2.5.3
++ webkit_dom_document_get_xml_encoding@Base 2.5.3
++ webkit_dom_document_get_xml_standalone@Base 2.5.3
++ webkit_dom_document_get_xml_version@Base 2.5.3
++ webkit_dom_document_has_focus@Base 2.5.3
++ webkit_dom_document_import_node@Base 2.5.3
++ webkit_dom_document_query_command_enabled@Base 2.5.3
++ webkit_dom_document_query_command_indeterm@Base 2.5.3
++ webkit_dom_document_query_command_state@Base 2.5.3
++ webkit_dom_document_query_command_supported@Base 2.5.3
++ webkit_dom_document_query_command_value@Base 2.5.3
++ webkit_dom_document_query_selector@Base 2.5.3
++ webkit_dom_document_query_selector_all@Base 2.5.3
++ webkit_dom_document_set_body@Base 2.5.3
++ webkit_dom_document_set_charset@Base 2.5.3
++ webkit_dom_document_set_cookie@Base 2.5.3
++ webkit_dom_document_set_document_uri@Base 2.5.3
++ webkit_dom_document_set_selected_stylesheet_set@Base 2.5.3
++ webkit_dom_document_set_title@Base 2.5.3
++ webkit_dom_document_set_xml_standalone@Base 2.5.3
++ webkit_dom_document_set_xml_version@Base 2.5.3
++ webkit_dom_document_type_get_entities@Base 2.5.3
++ webkit_dom_document_type_get_internal_subset@Base 2.5.3
++ webkit_dom_document_type_get_name@Base 2.5.3
++ webkit_dom_document_type_get_notations@Base 2.5.3
++ webkit_dom_document_type_get_public_id@Base 2.5.3
++ webkit_dom_document_type_get_system_id@Base 2.5.3
++ webkit_dom_document_type_get_type@Base 2.5.3
++ (optional)webkit_dom_document_type_remove@Base 2.5.3
++ (optional)webkit_dom_document_webkit_cancel_full_screen@Base 2.5.3
++ (optional)webkit_dom_document_webkit_exit_fullscreen@Base 2.5.3
++ (optional)webkit_dom_document_webkit_get_named_flows@Base 2.5.3
++ (optional)webkit_dom_dom_application_cache_abort@Base 2.5.3
++ (optional)webkit_dom_dom_application_cache_get_status@Base 2.5.3
++ (optional)webkit_dom_dom_application_cache_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_application_cache_swap_cache@Base 2.5.3
++ (optional)webkit_dom_dom_application_cache_update@Base 2.5.3
++ webkit_dom_dom_implementation_create_css_style_sheet@Base 2.5.3
++ webkit_dom_dom_implementation_create_document@Base 2.5.3
++ webkit_dom_dom_implementation_create_document_type@Base 2.5.3
++ webkit_dom_dom_implementation_create_html_document@Base 2.5.3
++ webkit_dom_dom_implementation_get_type@Base 2.5.3
++ webkit_dom_dom_implementation_has_feature@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_array_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_array_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_array_item@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_array_named_item@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_get_content_type@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_get_description@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_get_enabled_plugin@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_get_suffixes@Base 2.5.3
++ (optional)webkit_dom_dom_mime_type_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_named_flow_collection_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_named_flow_collection_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_named_flow_collection_item@Base 2.5.3
++ (optional)webkit_dom_dom_named_flow_collection_named_item@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_array_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_array_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_array_item@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_array_named_item@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_array_refresh@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_get_description@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_get_filename@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_get_name@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_item@Base 2.5.3
++ (optional)webkit_dom_dom_plugin_named_item@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_connection_to@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_font_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_form_action@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_frame_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_image_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_media_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_object_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_plugin_type@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_script_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_allows_style_from@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_allows_eval@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_allows_inline_script@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_allows_inline_style@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_is_active@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_report_ur_is@Base 2.5.3
++ (optional)webkit_dom_dom_security_policy_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_selection_add_range@Base 2.5.3
++ (optional)webkit_dom_dom_selection_collapse@Base 2.5.3
++ (optional)webkit_dom_dom_selection_collapse_to_end@Base 2.5.3
++ (optional)webkit_dom_dom_selection_collapse_to_start@Base 2.5.3
++ (optional)webkit_dom_dom_selection_contains_node@Base 2.5.3
++ (optional)webkit_dom_dom_selection_delete_from_document@Base 2.5.3
++ (optional)webkit_dom_dom_selection_empty@Base 2.5.3
++ (optional)webkit_dom_dom_selection_extend@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_anchor_node@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_anchor_offset@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_base_node@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_base_offset@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_extent_node@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_extent_offset@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_focus_node@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_focus_offset@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_is_collapsed@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_range_at@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_range_count@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_selection_type@Base 2.5.3
++ (optional)webkit_dom_dom_selection_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_selection_modify@Base 2.5.3
++ (optional)webkit_dom_dom_selection_remove_all_ranges@Base 2.5.3
++ (optional)webkit_dom_dom_selection_select_all_children@Base 2.5.3
++ (optional)webkit_dom_dom_selection_set_base_and_extent@Base 2.5.3
++ (optional)webkit_dom_dom_selection_set_position@Base 2.5.3
++ (optional)webkit_dom_dom_settable_token_list_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_settable_token_list_get_value@Base 2.5.3
++ (optional)webkit_dom_dom_settable_token_list_set_value@Base 2.5.3
++ (optional)webkit_dom_dom_string_list_contains@Base 2.5.3
++ (optional)webkit_dom_dom_string_list_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_string_list_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_string_list_item@Base 2.5.3
++ (optional)webkit_dom_dom_string_map_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_add@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_contains@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_item@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_remove@Base 2.5.3
++ (optional)webkit_dom_dom_token_list_toggle@Base 2.5.3
++ (optional)webkit_dom_dom_window_alert@Base 2.5.3
++ (optional)webkit_dom_dom_window_atob@Base 2.5.3
++ (optional)webkit_dom_dom_window_blur@Base 2.5.3
++ (optional)webkit_dom_dom_window_btoa@Base 2.5.3
++ (optional)webkit_dom_dom_window_cancel_animation_frame@Base 2.5.3
++ (optional)webkit_dom_dom_window_capture_events@Base 2.5.3
++ (optional)webkit_dom_dom_window_clear_interval@Base 2.5.3
++ (optional)webkit_dom_dom_window_clear_timeout@Base 2.5.3
++ (optional)webkit_dom_dom_window_close@Base 2.5.3
++ (optional)webkit_dom_dom_window_confirm@Base 2.5.3
++ (optional)webkit_dom_dom_window_css_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_window_css_supports@Base 2.5.3
++ (optional)webkit_dom_dom_window_find@Base 2.5.3
++ (optional)webkit_dom_dom_window_focus@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_application_cache@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_client_information@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_closed@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_computed_style@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_css@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_default_status@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_device_pixel_ratio@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_document@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_frame_element@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_frames@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_history@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_inner_height@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_inner_width@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_length@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_local_storage@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_locationbar@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_menubar@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_name@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_navigator@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_offscreen_buffering@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_opener@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_outer_height@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_outer_width@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_page_x_offset@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_page_y_offset@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_parent@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_performance@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_personalbar@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_screen@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_screen_left@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_screen_top@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_screen_x@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_screen_y@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_scroll_x@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_scroll_y@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_scrollbars@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_selection@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_self@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_session_storage@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_speech_synthesis@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_status@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_statusbar@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_style_media@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_toolbar@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_top@Base 2.5.3
++ webkit_dom_dom_window_get_type@Base 2.5.3
++ (optional)webkit_dom_dom_window_get_window@Base 2.5.3
++ (optional)webkit_dom_dom_window_match_media@Base 2.5.3
++ (optional)webkit_dom_dom_window_move_by@Base 2.5.3
++ (optional)webkit_dom_dom_window_move_to@Base 2.5.3
++ (optional)webkit_dom_dom_window_print@Base 2.5.3
++ (optional)webkit_dom_dom_window_prompt@Base 2.5.3
++ (optional)webkit_dom_dom_window_release_events@Base 2.5.3
++ (optional)webkit_dom_dom_window_resize_by@Base 2.5.3
++ (optional)webkit_dom_dom_window_resize_to@Base 2.5.3
++ (optional)webkit_dom_dom_window_scroll@Base 2.5.3
++ (optional)webkit_dom_dom_window_scroll_by@Base 2.5.3
++ (optional)webkit_dom_dom_window_scroll_to@Base 2.5.3
++ (optional)webkit_dom_dom_window_set_default_status@Base 2.5.3
++ (optional)webkit_dom_dom_window_set_name@Base 2.5.3
++ (optional)webkit_dom_dom_window_set_status@Base 2.5.3
++ (optional)webkit_dom_dom_window_stop@Base 2.5.3
++ (optional)webkit_dom_dom_window_webkit_cancel_animation_frame@Base 2.5.3
++ (optional)webkit_dom_dom_window_webkit_cancel_request_animation_frame@Base 2.5.3
++ (optional)webkit_dom_dom_window_webkit_convert_point_from_node_to_page@Base 2.5.3
++ (optional)webkit_dom_dom_window_webkit_convert_point_from_page_to_node@Base 2.5.3
++ webkit_dom_element_blur@Base 2.5.3
++ webkit_dom_element_focus@Base 2.5.3
++ webkit_dom_element_get_attribute@Base 2.5.3
++ webkit_dom_element_get_attribute_node@Base 2.5.3
++ webkit_dom_element_get_attribute_node_ns@Base 2.5.3
++ webkit_dom_element_get_attribute_ns@Base 2.5.3
++ webkit_dom_element_get_attributes@Base 2.5.3
++ webkit_dom_element_get_child_element_count@Base 2.5.3
++ (optional)webkit_dom_element_get_class_list@Base 2.5.3
++ webkit_dom_element_get_class_name@Base 2.5.3
++ webkit_dom_element_get_client_height@Base 2.5.3
++ webkit_dom_element_get_client_left@Base 2.5.3
++ webkit_dom_element_get_client_top@Base 2.5.3
++ webkit_dom_element_get_client_width@Base 2.5.3
++ webkit_dom_element_get_elements_by_class_name@Base 2.5.3
++ webkit_dom_element_get_elements_by_tag_name@Base 2.5.3
++ webkit_dom_element_get_elements_by_tag_name_ns@Base 2.5.3
++ webkit_dom_element_get_first_element_child@Base 2.5.3
++ webkit_dom_element_get_id@Base 2.5.3
++ webkit_dom_element_get_last_element_child@Base 2.5.3
++ webkit_dom_element_get_next_element_sibling@Base 2.5.3
++ webkit_dom_element_get_offset_height@Base 2.5.3
++ webkit_dom_element_get_offset_left@Base 2.5.3
++ webkit_dom_element_get_offset_parent@Base 2.5.3
++ webkit_dom_element_get_offset_top@Base 2.5.3
++ webkit_dom_element_get_offset_width@Base 2.5.3
++ webkit_dom_element_get_previous_element_sibling@Base 2.5.3
++ webkit_dom_element_get_scroll_height@Base 2.5.3
++ webkit_dom_element_get_scroll_left@Base 2.5.3
++ webkit_dom_element_get_scroll_top@Base 2.5.3
++ webkit_dom_element_get_scroll_width@Base 2.5.3
++ webkit_dom_element_get_style@Base 2.5.3
++ webkit_dom_element_get_tag_name@Base 2.5.3
++ webkit_dom_element_get_type@Base 2.5.3
++ (optional)webkit_dom_element_get_webkit_region_overset@Base 2.5.3
++ webkit_dom_element_has_attribute@Base 2.5.3
++ webkit_dom_element_has_attribute_ns@Base 2.5.3
++ webkit_dom_element_has_attributes@Base 2.5.3
++ (optional)webkit_dom_element_matches@Base 2.5.3
++ webkit_dom_element_query_selector@Base 2.5.3
++ webkit_dom_element_query_selector_all@Base 2.5.3
++ (optional)webkit_dom_element_remove@Base 2.5.3
++ webkit_dom_element_remove_attribute@Base 2.5.3
++ webkit_dom_element_remove_attribute_node@Base 2.5.3
++ webkit_dom_element_remove_attribute_ns@Base 2.5.3
++ (optional)webkit_dom_element_request_pointer_lock@Base 2.5.3
++ webkit_dom_element_scroll_by_lines@Base 2.5.3
++ webkit_dom_element_scroll_by_pages@Base 2.5.3
++ webkit_dom_element_scroll_into_view@Base 2.5.3
++ webkit_dom_element_scroll_into_view_if_needed@Base 2.5.3
++ webkit_dom_element_set_attribute@Base 2.5.3
++ webkit_dom_element_set_attribute_node@Base 2.5.3
++ webkit_dom_element_set_attribute_node_ns@Base 2.5.3
++ webkit_dom_element_set_attribute_ns@Base 2.5.3
++ webkit_dom_element_set_class_name@Base 2.5.3
++ webkit_dom_element_set_id@Base 2.5.3
++ webkit_dom_element_set_scroll_left@Base 2.5.3
++ webkit_dom_element_set_scroll_top@Base 2.5.3
++ (optional)webkit_dom_element_webkit_matches_selector@Base 2.5.3
++ (optional)webkit_dom_element_webkit_request_full_screen@Base 2.5.3
++ (optional)webkit_dom_element_webkit_request_fullscreen@Base 2.5.3
++ webkit_dom_entity_reference_get_type@Base 2.5.3
++ webkit_dom_event_get_bubbles@Base 2.5.3
++ webkit_dom_event_get_cancel_bubble@Base 2.5.3
++ webkit_dom_event_get_cancelable@Base 2.5.3
++ webkit_dom_event_get_current_target@Base 2.5.3
++ (optional)webkit_dom_event_get_default_prevented@Base 2.5.3
++ webkit_dom_event_get_event_phase@Base 2.5.3
++ webkit_dom_event_get_event_type@Base 2.5.3
++ webkit_dom_event_get_return_value@Base 2.5.3
++ webkit_dom_event_get_src_element@Base 2.5.3
++ webkit_dom_event_get_target@Base 2.5.3
++ webkit_dom_event_get_time_stamp@Base 2.5.3
++ webkit_dom_event_get_type@Base 2.5.3
++ webkit_dom_event_init_event@Base 2.5.3
++ webkit_dom_event_prevent_default@Base 2.5.3
++ webkit_dom_event_set_cancel_bubble@Base 2.5.3
++ webkit_dom_event_set_return_value@Base 2.5.3
++ (optional)webkit_dom_event_stop_immediate_propagation@Base 2.5.3
++ webkit_dom_event_stop_propagation@Base 2.5.3
++ webkit_dom_event_target_add_event_listener@Base 2.5.3
++ webkit_dom_event_target_add_event_listener_with_closure@Base 2.5.3
++ webkit_dom_event_target_dispatch_event@Base 2.5.3
++ webkit_dom_event_target_get_type@Base 2.5.3
++ webkit_dom_event_target_remove_event_listener@Base 2.5.3
++ webkit_dom_event_target_remove_event_listener_with_closure@Base 2.5.3
++ webkit_dom_file_get_name@Base 2.5.3
++ webkit_dom_file_get_type@Base 2.5.3
++ webkit_dom_file_list_get_length@Base 2.5.3
++ webkit_dom_file_list_get_type@Base 2.5.3
++ webkit_dom_file_list_item@Base 2.5.3
++ (optional)webkit_dom_gamepad_get_id@Base 2.5.3
++ (optional)webkit_dom_gamepad_get_index@Base 2.5.3
++ (optional)webkit_dom_gamepad_get_timestamp@Base 2.5.3
++ (optional)webkit_dom_gamepad_get_type@Base 2.5.3
++ (optional)webkit_dom_gamepad_list_get_length@Base 2.5.3
++ (optional)webkit_dom_gamepad_list_get_type@Base 2.5.3
++ (optional)webkit_dom_gamepad_list_item@Base 2.5.3
++ (optional)webkit_dom_geolocation_clear_watch@Base 2.5.3
++ (optional)webkit_dom_geolocation_get_type@Base 2.5.3
++ (optional)webkit_dom_history_back@Base 2.5.3
++ (optional)webkit_dom_history_forward@Base 2.5.3
++ (optional)webkit_dom_history_get_length@Base 2.5.3
++ (optional)webkit_dom_history_get_type@Base 2.5.3
++ (optional)webkit_dom_history_go@Base 2.5.3
++ webkit_dom_html_anchor_element_get_charset@Base 2.5.3
++ webkit_dom_html_anchor_element_get_coords@Base 2.5.3
++ (optional)webkit_dom_html_anchor_element_get_download@Base 2.5.3
++ webkit_dom_html_anchor_element_get_hash@Base 2.5.3
++ webkit_dom_html_anchor_element_get_host@Base 2.5.3
++ webkit_dom_html_anchor_element_get_hostname@Base 2.5.3
++ webkit_dom_html_anchor_element_get_href@Base 2.5.3
++ webkit_dom_html_anchor_element_get_hreflang@Base 2.5.3
++ webkit_dom_html_anchor_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_anchor_element_get_origin@Base 2.5.3
++ webkit_dom_html_anchor_element_get_pathname@Base 2.5.3
++ (optional)webkit_dom_html_anchor_element_get_ping@Base 2.5.3
++ webkit_dom_html_anchor_element_get_port@Base 2.5.3
++ webkit_dom_html_anchor_element_get_protocol@Base 2.5.3
++ webkit_dom_html_anchor_element_get_rel@Base 2.5.3
++ webkit_dom_html_anchor_element_get_rev@Base 2.5.3
++ webkit_dom_html_anchor_element_get_search@Base 2.5.3
++ webkit_dom_html_anchor_element_get_shape@Base 2.5.3
++ webkit_dom_html_anchor_element_get_target@Base 2.5.3
++ webkit_dom_html_anchor_element_get_text@Base 2.5.3
++ webkit_dom_html_anchor_element_get_type@Base 2.5.3
++ webkit_dom_html_anchor_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_anchor_element_set_charset@Base 2.5.3
++ webkit_dom_html_anchor_element_set_coords@Base 2.5.3
++ (optional)webkit_dom_html_anchor_element_set_download@Base 2.5.3
++ webkit_dom_html_anchor_element_set_hash@Base 2.5.3
++ webkit_dom_html_anchor_element_set_host@Base 2.5.3
++ webkit_dom_html_anchor_element_set_hostname@Base 2.5.3
++ webkit_dom_html_anchor_element_set_href@Base 2.5.3
++ webkit_dom_html_anchor_element_set_hreflang@Base 2.5.3
++ webkit_dom_html_anchor_element_set_name@Base 2.5.3
++ webkit_dom_html_anchor_element_set_pathname@Base 2.5.3
++ (optional)webkit_dom_html_anchor_element_set_ping@Base 2.5.3
++ webkit_dom_html_anchor_element_set_port@Base 2.5.3
++ webkit_dom_html_anchor_element_set_protocol@Base 2.5.3
++ webkit_dom_html_anchor_element_set_rel@Base 2.5.3
++ webkit_dom_html_anchor_element_set_rev@Base 2.5.3
++ webkit_dom_html_anchor_element_set_search@Base 2.5.3
++ webkit_dom_html_anchor_element_set_shape@Base 2.5.3
++ webkit_dom_html_anchor_element_set_target@Base 2.5.3
++ webkit_dom_html_anchor_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_applet_element_get_align@Base 2.5.3
++ webkit_dom_html_applet_element_get_alt@Base 2.5.3
++ webkit_dom_html_applet_element_get_archive@Base 2.5.3
++ webkit_dom_html_applet_element_get_code@Base 2.5.3
++ webkit_dom_html_applet_element_get_code_base@Base 2.5.3
++ webkit_dom_html_applet_element_get_height@Base 2.5.3
++ webkit_dom_html_applet_element_get_hspace@Base 2.5.3
++ webkit_dom_html_applet_element_get_name@Base 2.5.3
++ webkit_dom_html_applet_element_get_object@Base 2.5.3
++ webkit_dom_html_applet_element_get_type@Base 2.5.3
++ webkit_dom_html_applet_element_get_vspace@Base 2.5.3
++ webkit_dom_html_applet_element_get_width@Base 2.5.3
++ webkit_dom_html_applet_element_set_align@Base 2.5.3
++ webkit_dom_html_applet_element_set_alt@Base 2.5.3
++ webkit_dom_html_applet_element_set_archive@Base 2.5.3
++ webkit_dom_html_applet_element_set_code@Base 2.5.3
++ webkit_dom_html_applet_element_set_code_base@Base 2.5.3
++ webkit_dom_html_applet_element_set_height@Base 2.5.3
++ webkit_dom_html_applet_element_set_hspace@Base 2.5.3
++ webkit_dom_html_applet_element_set_name@Base 2.5.3
++ webkit_dom_html_applet_element_set_object@Base 2.5.3
++ webkit_dom_html_applet_element_set_vspace@Base 2.5.3
++ webkit_dom_html_applet_element_set_width@Base 2.5.3
++ webkit_dom_html_area_element_get_alt@Base 2.5.3
++ webkit_dom_html_area_element_get_coords@Base 2.5.3
++ webkit_dom_html_area_element_get_hash@Base 2.5.3
++ webkit_dom_html_area_element_get_host@Base 2.5.3
++ webkit_dom_html_area_element_get_hostname@Base 2.5.3
++ webkit_dom_html_area_element_get_href@Base 2.5.3
++ webkit_dom_html_area_element_get_no_href@Base 2.5.3
++ webkit_dom_html_area_element_get_pathname@Base 2.5.3
++ (optional)webkit_dom_html_area_element_get_ping@Base 2.5.3
++ webkit_dom_html_area_element_get_port@Base 2.5.3
++ webkit_dom_html_area_element_get_protocol@Base 2.5.3
++ webkit_dom_html_area_element_get_search@Base 2.5.3
++ webkit_dom_html_area_element_get_shape@Base 2.5.3
++ webkit_dom_html_area_element_get_target@Base 2.5.3
++ webkit_dom_html_area_element_get_type@Base 2.5.3
++ webkit_dom_html_area_element_set_alt@Base 2.5.3
++ webkit_dom_html_area_element_set_coords@Base 2.5.3
++ webkit_dom_html_area_element_set_href@Base 2.5.3
++ webkit_dom_html_area_element_set_no_href@Base 2.5.3
++ (optional)webkit_dom_html_area_element_set_ping@Base 2.5.3
++ webkit_dom_html_area_element_set_shape@Base 2.5.3
++ webkit_dom_html_area_element_set_target@Base 2.5.3
++ (optional)webkit_dom_html_audio_element_get_type@Base 2.5.3
++ webkit_dom_html_base_element_get_href@Base 2.5.3
++ webkit_dom_html_base_element_get_target@Base 2.5.3
++ webkit_dom_html_base_element_get_type@Base 2.5.3
++ webkit_dom_html_base_element_set_href@Base 2.5.3
++ webkit_dom_html_base_element_set_target@Base 2.5.3
++ webkit_dom_html_base_font_element_get_color@Base 2.5.3
++ webkit_dom_html_base_font_element_get_face@Base 2.5.3
++ webkit_dom_html_base_font_element_get_size@Base 2.5.3
++ webkit_dom_html_base_font_element_get_type@Base 2.5.3
++ webkit_dom_html_base_font_element_set_color@Base 2.5.3
++ webkit_dom_html_base_font_element_set_face@Base 2.5.3
++ webkit_dom_html_base_font_element_set_size@Base 2.5.3
++ webkit_dom_html_body_element_get_a_link@Base 2.5.3
++ webkit_dom_html_body_element_get_background@Base 2.5.3
++ webkit_dom_html_body_element_get_bg_color@Base 2.5.3
++ webkit_dom_html_body_element_get_link@Base 2.5.3
++ webkit_dom_html_body_element_get_text@Base 2.5.3
++ webkit_dom_html_body_element_get_type@Base 2.5.3
++ webkit_dom_html_body_element_get_v_link@Base 2.5.3
++ webkit_dom_html_body_element_set_a_link@Base 2.5.3
++ webkit_dom_html_body_element_set_background@Base 2.5.3
++ webkit_dom_html_body_element_set_bg_color@Base 2.5.3
++ webkit_dom_html_body_element_set_link@Base 2.5.3
++ webkit_dom_html_body_element_set_text@Base 2.5.3
++ webkit_dom_html_body_element_set_v_link@Base 2.5.3
++ webkit_dom_html_br_element_get_clear@Base 2.5.3
++ webkit_dom_html_br_element_get_type@Base 2.5.3
++ webkit_dom_html_br_element_set_clear@Base 2.5.3
++ (optional)webkit_dom_html_button_element_check_validity@Base 2.5.3
++ webkit_dom_html_button_element_get_autofocus@Base 2.5.3
++ webkit_dom_html_button_element_get_button_type@Base 2.5.3
++ webkit_dom_html_button_element_get_disabled@Base 2.5.3
++ webkit_dom_html_button_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_form_action@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_form_enctype@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_form_method@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_form_no_validate@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_form_target@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_labels@Base 2.5.3
++ webkit_dom_html_button_element_get_name@Base 2.5.3
++ webkit_dom_html_button_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_button_element_get_validity@Base 2.5.3
++ webkit_dom_html_button_element_get_value@Base 2.5.3
++ webkit_dom_html_button_element_get_will_validate@Base 2.5.3
++ webkit_dom_html_button_element_set_autofocus@Base 2.5.3
++ webkit_dom_html_button_element_set_button_type@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_custom_validity@Base 2.5.3
++ webkit_dom_html_button_element_set_disabled@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_form_action@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_form_enctype@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_form_method@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_form_no_validate@Base 2.5.3
++ (optional)webkit_dom_html_button_element_set_form_target@Base 2.5.3
++ webkit_dom_html_button_element_set_name@Base 2.5.3
++ webkit_dom_html_button_element_set_value@Base 2.5.3
++ webkit_dom_html_canvas_element_get_height@Base 2.5.3
++ webkit_dom_html_canvas_element_get_type@Base 2.5.3
++ webkit_dom_html_canvas_element_get_width@Base 2.5.3
++ webkit_dom_html_canvas_element_set_height@Base 2.5.3
++ webkit_dom_html_canvas_element_set_width@Base 2.5.3
++ webkit_dom_html_collection_get_length@Base 2.5.3
++ webkit_dom_html_collection_get_type@Base 2.5.3
++ webkit_dom_html_collection_item@Base 2.5.3
++ webkit_dom_html_collection_named_item@Base 2.5.3
++ webkit_dom_html_d_list_element_get_compact@Base 2.5.3
++ webkit_dom_html_d_list_element_get_type@Base 2.5.3
++ webkit_dom_html_d_list_element_set_compact@Base 2.5.3
++ (optional)webkit_dom_html_details_element_get_open@Base 2.5.3
++ (optional)webkit_dom_html_details_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_details_element_set_open@Base 2.5.3
++ webkit_dom_html_directory_element_get_compact@Base 2.5.3
++ webkit_dom_html_directory_element_get_type@Base 2.5.3
++ webkit_dom_html_directory_element_set_compact@Base 2.5.3
++ webkit_dom_html_div_element_get_align@Base 2.5.3
++ webkit_dom_html_div_element_get_type@Base 2.5.3
++ webkit_dom_html_div_element_set_align@Base 2.5.3
++ webkit_dom_html_document_capture_events@Base 2.5.3
++ webkit_dom_html_document_clear@Base 2.5.3
++ webkit_dom_html_document_close@Base 2.5.3
++ webkit_dom_html_document_get_alink_color@Base 2.5.3
++ webkit_dom_html_document_get_bg_color@Base 2.5.3
++ webkit_dom_html_document_get_compat_mode@Base 2.5.3
++ webkit_dom_html_document_get_design_mode@Base 2.5.3
++ webkit_dom_html_document_get_dir@Base 2.5.3
++ webkit_dom_html_document_get_embeds@Base 2.5.3
++ webkit_dom_html_document_get_fg_color@Base 2.5.3
++ webkit_dom_html_document_get_height@Base 2.5.3
++ webkit_dom_html_document_get_link_color@Base 2.5.3
++ webkit_dom_html_document_get_plugins@Base 2.5.3
++ webkit_dom_html_document_get_scripts@Base 2.5.3
++ webkit_dom_html_document_get_type@Base 2.5.3
++ webkit_dom_html_document_get_vlink_color@Base 2.5.3
++ webkit_dom_html_document_get_width@Base 2.5.3
++ webkit_dom_html_document_release_events@Base 2.5.3
++ webkit_dom_html_document_set_alink_color@Base 2.5.3
++ webkit_dom_html_document_set_bg_color@Base 2.5.3
++ webkit_dom_html_document_set_design_mode@Base 2.5.3
++ webkit_dom_html_document_set_dir@Base 2.5.3
++ webkit_dom_html_document_set_fg_color@Base 2.5.3
++ webkit_dom_html_document_set_link_color@Base 2.5.3
++ webkit_dom_html_document_set_vlink_color@Base 2.5.3
++ webkit_dom_html_element_click@Base 2.5.3
++ webkit_dom_html_element_get_access_key@Base 2.5.3
++ webkit_dom_html_element_get_children@Base 2.5.3
++ webkit_dom_html_element_get_content_editable@Base 2.5.3
++ webkit_dom_html_element_get_dir@Base 2.5.3
++ (optional)webkit_dom_html_element_get_draggable@Base 2.5.3
++ (optional)webkit_dom_html_element_get_hidden@Base 2.5.3
++ webkit_dom_html_element_get_inner_html@Base 2.5.3
++ webkit_dom_html_element_get_inner_text@Base 2.5.3
++ webkit_dom_html_element_get_is_content_editable@Base 2.5.3
++ webkit_dom_html_element_get_lang@Base 2.5.3
++ webkit_dom_html_element_get_outer_html@Base 2.5.3
++ webkit_dom_html_element_get_outer_text@Base 2.5.3
++ (optional)webkit_dom_html_element_get_spellcheck@Base 2.5.3
++ webkit_dom_html_element_get_tab_index@Base 2.5.3
++ webkit_dom_html_element_get_title@Base 2.5.3
++ (optional)webkit_dom_html_element_get_translate@Base 2.5.3
++ webkit_dom_html_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_element_get_webkitdropzone@Base 2.5.3
++ (optional)webkit_dom_html_element_insert_adjacent_element@Base 2.5.3
++ (optional)webkit_dom_html_element_insert_adjacent_html@Base 2.5.3
++ (optional)webkit_dom_html_element_insert_adjacent_text@Base 2.5.3
++ webkit_dom_html_element_set_access_key@Base 2.5.3
++ webkit_dom_html_element_set_content_editable@Base 2.5.3
++ webkit_dom_html_element_set_dir@Base 2.5.3
++ (optional)webkit_dom_html_element_set_draggable@Base 2.5.3
++ (optional)webkit_dom_html_element_set_hidden@Base 2.5.3
++ webkit_dom_html_element_set_inner_html@Base 2.5.3
++ webkit_dom_html_element_set_inner_text@Base 2.5.3
++ webkit_dom_html_element_set_lang@Base 2.5.3
++ webkit_dom_html_element_set_outer_html@Base 2.5.3
++ webkit_dom_html_element_set_outer_text@Base 2.5.3
++ (optional)webkit_dom_html_element_set_spellcheck@Base 2.5.3
++ webkit_dom_html_element_set_tab_index@Base 2.5.3
++ webkit_dom_html_element_set_title@Base 2.5.3
++ (optional)webkit_dom_html_element_set_translate@Base 2.5.3
++ (optional)webkit_dom_html_element_set_webkitdropzone@Base 2.5.3
++ webkit_dom_html_embed_element_get_align@Base 2.5.3
++ webkit_dom_html_embed_element_get_height@Base 2.5.3
++ webkit_dom_html_embed_element_get_name@Base 2.5.3
++ webkit_dom_html_embed_element_get_src@Base 2.5.3
++ webkit_dom_html_embed_element_get_type@Base 2.5.3
++ webkit_dom_html_embed_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_embed_element_get_width@Base 2.5.3
++ webkit_dom_html_embed_element_set_align@Base 2.5.3
++ webkit_dom_html_embed_element_set_height@Base 2.5.3
++ webkit_dom_html_embed_element_set_name@Base 2.5.3
++ webkit_dom_html_embed_element_set_src@Base 2.5.3
++ webkit_dom_html_embed_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_embed_element_set_width@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_check_validity@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_disabled@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_elements@Base 2.5.3
++ webkit_dom_html_field_set_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_set_type@Base 2.5.3
++ webkit_dom_html_field_set_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_validity@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_get_will_validate@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_set_custom_validity@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_set_disabled@Base 2.5.3
++ (optional)webkit_dom_html_field_set_element_set_name@Base 2.5.3
++ webkit_dom_html_font_element_get_color@Base 2.5.3
++ webkit_dom_html_font_element_get_face@Base 2.5.3
++ webkit_dom_html_font_element_get_size@Base 2.5.3
++ webkit_dom_html_font_element_get_type@Base 2.5.3
++ webkit_dom_html_font_element_set_color@Base 2.5.3
++ webkit_dom_html_font_element_set_face@Base 2.5.3
++ webkit_dom_html_font_element_set_size@Base 2.5.3
++ (optional)webkit_dom_html_form_element_check_validity@Base 2.5.3
++ webkit_dom_html_form_element_get_accept_charset@Base 2.5.3
++ webkit_dom_html_form_element_get_action@Base 2.5.3
++ (optional)webkit_dom_html_form_element_get_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_form_element_get_autocomplete@Base 2.5.3
++ (optional)webkit_dom_html_form_element_get_autocorrect@Base 2.5.3
++ webkit_dom_html_form_element_get_elements@Base 2.5.3
++ webkit_dom_html_form_element_get_encoding@Base 2.5.3
++ webkit_dom_html_form_element_get_enctype@Base 2.5.3
++ webkit_dom_html_form_element_get_length@Base 2.5.3
++ webkit_dom_html_form_element_get_method@Base 2.5.3
++ webkit_dom_html_form_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_form_element_get_no_validate@Base 2.5.3
++ webkit_dom_html_form_element_get_target@Base 2.5.3
++ webkit_dom_html_form_element_get_type@Base 2.5.3
++ webkit_dom_html_form_element_request_autocomplete@Base 2.6.0
++ webkit_dom_html_form_element_reset@Base 2.5.3
++ webkit_dom_html_form_element_set_accept_charset@Base 2.5.3
++ webkit_dom_html_form_element_set_action@Base 2.5.3
++ (optional)webkit_dom_html_form_element_set_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_form_element_set_autocomplete@Base 2.5.3
++ (optional)webkit_dom_html_form_element_set_autocorrect@Base 2.5.3
++ webkit_dom_html_form_element_set_encoding@Base 2.5.3
++ webkit_dom_html_form_element_set_enctype@Base 2.5.3
++ webkit_dom_html_form_element_set_method@Base 2.5.3
++ webkit_dom_html_form_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_form_element_set_no_validate@Base 2.5.3
++ webkit_dom_html_form_element_set_target@Base 2.5.3
++ webkit_dom_html_form_element_submit@Base 2.5.3
++ webkit_dom_html_frame_element_get_content_document@Base 2.5.3
++ webkit_dom_html_frame_element_get_content_window@Base 2.5.3
++ webkit_dom_html_frame_element_get_frame_border@Base 2.5.3
++ webkit_dom_html_frame_element_get_height@Base 2.5.3
++ webkit_dom_html_frame_element_get_long_desc@Base 2.5.3
++ webkit_dom_html_frame_element_get_margin_height@Base 2.5.3
++ webkit_dom_html_frame_element_get_margin_width@Base 2.5.3
++ webkit_dom_html_frame_element_get_name@Base 2.5.3
++ webkit_dom_html_frame_element_get_no_resize@Base 2.5.3
++ webkit_dom_html_frame_element_get_scrolling@Base 2.5.3
++ webkit_dom_html_frame_element_get_src@Base 2.5.3
++ webkit_dom_html_frame_element_get_type@Base 2.5.3
++ webkit_dom_html_frame_element_get_width@Base 2.5.3
++ webkit_dom_html_frame_element_set_frame_border@Base 2.5.3
++ webkit_dom_html_frame_element_set_long_desc@Base 2.5.3
++ webkit_dom_html_frame_element_set_margin_height@Base 2.5.3
++ webkit_dom_html_frame_element_set_margin_width@Base 2.5.3
++ webkit_dom_html_frame_element_set_name@Base 2.5.3
++ webkit_dom_html_frame_element_set_no_resize@Base 2.5.3
++ webkit_dom_html_frame_element_set_scrolling@Base 2.5.3
++ webkit_dom_html_frame_element_set_src@Base 2.5.3
++ webkit_dom_html_frame_set_element_get_cols@Base 2.5.3
++ webkit_dom_html_frame_set_element_get_rows@Base 2.5.3
++ webkit_dom_html_frame_set_element_get_type@Base 2.5.3
++ webkit_dom_html_frame_set_element_set_cols@Base 2.5.3
++ webkit_dom_html_frame_set_element_set_rows@Base 2.5.3
++ webkit_dom_html_head_element_get_profile@Base 2.5.3
++ webkit_dom_html_head_element_get_type@Base 2.5.3
++ webkit_dom_html_head_element_set_profile@Base 2.5.3
++ webkit_dom_html_heading_element_get_align@Base 2.5.3
++ webkit_dom_html_heading_element_get_type@Base 2.5.3
++ webkit_dom_html_heading_element_set_align@Base 2.5.3
++ webkit_dom_html_hr_element_get_align@Base 2.5.3
++ webkit_dom_html_hr_element_get_no_shade@Base 2.5.3
++ webkit_dom_html_hr_element_get_size@Base 2.5.3
++ webkit_dom_html_hr_element_get_type@Base 2.5.3
++ webkit_dom_html_hr_element_get_width@Base 2.5.3
++ webkit_dom_html_hr_element_set_align@Base 2.5.3
++ webkit_dom_html_hr_element_set_no_shade@Base 2.5.3
++ webkit_dom_html_hr_element_set_size@Base 2.5.3
++ webkit_dom_html_hr_element_set_width@Base 2.5.3
++ (optional)webkit_dom_html_html_element_get_manifest@Base 2.5.3
++ webkit_dom_html_html_element_get_type@Base 2.5.3
++ webkit_dom_html_html_element_get_version@Base 2.5.3
++ (optional)webkit_dom_html_html_element_set_manifest@Base 2.5.3
++ webkit_dom_html_html_element_set_version@Base 2.5.3
++ webkit_dom_html_iframe_element_get_align@Base 2.5.3
++ webkit_dom_html_iframe_element_get_content_document@Base 2.5.3
++ webkit_dom_html_iframe_element_get_content_window@Base 2.5.3
++ webkit_dom_html_iframe_element_get_frame_border@Base 2.5.3
++ webkit_dom_html_iframe_element_get_height@Base 2.5.3
++ webkit_dom_html_iframe_element_get_long_desc@Base 2.5.3
++ webkit_dom_html_iframe_element_get_margin_height@Base 2.5.3
++ webkit_dom_html_iframe_element_get_margin_width@Base 2.5.3
++ webkit_dom_html_iframe_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_iframe_element_get_sandbox@Base 2.5.3
++ webkit_dom_html_iframe_element_get_scrolling@Base 2.5.3
++ webkit_dom_html_iframe_element_get_src@Base 2.5.3
++ (optional)webkit_dom_html_iframe_element_get_srcdoc@Base 2.5.3
++ webkit_dom_html_iframe_element_get_type@Base 2.5.3
++ webkit_dom_html_iframe_element_get_width@Base 2.5.3
++ webkit_dom_html_iframe_element_set_align@Base 2.5.3
++ webkit_dom_html_iframe_element_set_frame_border@Base 2.5.3
++ webkit_dom_html_iframe_element_set_height@Base 2.5.3
++ webkit_dom_html_iframe_element_set_long_desc@Base 2.5.3
++ webkit_dom_html_iframe_element_set_margin_height@Base 2.5.3
++ webkit_dom_html_iframe_element_set_margin_width@Base 2.5.3
++ webkit_dom_html_iframe_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_iframe_element_set_sandbox@Base 2.5.3
++ webkit_dom_html_iframe_element_set_scrolling@Base 2.5.3
++ webkit_dom_html_iframe_element_set_src@Base 2.5.3
++ (optional)webkit_dom_html_iframe_element_set_srcdoc@Base 2.5.3
++ webkit_dom_html_iframe_element_set_width@Base 2.5.3
++ webkit_dom_html_image_element_get_align@Base 2.5.3
++ webkit_dom_html_image_element_get_alt@Base 2.5.3
++ webkit_dom_html_image_element_get_border@Base 2.5.3
++ webkit_dom_html_image_element_get_complete@Base 2.5.3
++ (optional)webkit_dom_html_image_element_get_cross_origin@Base 2.5.3
++ (optional)webkit_dom_html_image_element_get_current_src@Base 2.5.3
++ webkit_dom_html_image_element_get_height@Base 2.5.3
++ webkit_dom_html_image_element_get_hspace@Base 2.5.3
++ webkit_dom_html_image_element_get_is_map@Base 2.5.3
++ webkit_dom_html_image_element_get_long_desc@Base 2.5.3
++ webkit_dom_html_image_element_get_lowsrc@Base 2.5.3
++ webkit_dom_html_image_element_get_name@Base 2.5.3
++ webkit_dom_html_image_element_get_natural_height@Base 2.5.3
++ webkit_dom_html_image_element_get_natural_width@Base 2.5.3
++ (optional)webkit_dom_html_image_element_get_sizes@Base 2.5.3
++ webkit_dom_html_image_element_get_src@Base 2.5.3
++ (optional)webkit_dom_html_image_element_get_srcset@Base 2.5.3
++ webkit_dom_html_image_element_get_type@Base 2.5.3
++ webkit_dom_html_image_element_get_use_map@Base 2.5.3
++ webkit_dom_html_image_element_get_vspace@Base 2.5.3
++ webkit_dom_html_image_element_get_width@Base 2.5.3
++ webkit_dom_html_image_element_get_x@Base 2.5.3
++ webkit_dom_html_image_element_get_y@Base 2.5.3
++ webkit_dom_html_image_element_set_align@Base 2.5.3
++ webkit_dom_html_image_element_set_alt@Base 2.5.3
++ webkit_dom_html_image_element_set_border@Base 2.5.3
++ (optional)webkit_dom_html_image_element_set_cross_origin@Base 2.5.3
++ webkit_dom_html_image_element_set_height@Base 2.5.3
++ webkit_dom_html_image_element_set_hspace@Base 2.5.3
++ webkit_dom_html_image_element_set_is_map@Base 2.5.3
++ webkit_dom_html_image_element_set_long_desc@Base 2.5.3
++ webkit_dom_html_image_element_set_lowsrc@Base 2.5.3
++ webkit_dom_html_image_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_image_element_set_sizes@Base 2.5.3
++ webkit_dom_html_image_element_set_src@Base 2.5.3
++ (optional)webkit_dom_html_image_element_set_srcset@Base 2.5.3
++ webkit_dom_html_image_element_set_use_map@Base 2.5.3
++ webkit_dom_html_image_element_set_vspace@Base 2.5.3
++ webkit_dom_html_image_element_set_width@Base 2.5.3
++ (optional)webkit_dom_html_input_element_check_validity@Base 2.5.3
++ webkit_dom_html_input_element_get_accept@Base 2.5.3
++ webkit_dom_html_input_element_get_align@Base 2.5.3
++ webkit_dom_html_input_element_get_alt@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_autocomplete@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_autocorrect@Base 2.5.3
++ webkit_dom_html_input_element_get_autofocus@Base 2.5.3
++ webkit_dom_html_input_element_get_capture@Base 2.5.3
++ webkit_dom_html_input_element_get_checked@Base 2.5.3
++ webkit_dom_html_input_element_get_default_checked@Base 2.5.3
++ webkit_dom_html_input_element_get_default_value@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_dir_name@Base 2.5.3
++ webkit_dom_html_input_element_get_disabled@Base 2.5.3
++ webkit_dom_html_input_element_get_files@Base 2.5.3
++ webkit_dom_html_input_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_form_action@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_form_enctype@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_form_method@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_form_no_validate@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_form_target@Base 2.5.3
++ webkit_dom_html_input_element_get_height@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_incremental@Base 2.5.3
++ webkit_dom_html_input_element_get_indeterminate@Base 2.5.3
++ webkit_dom_html_input_element_get_input_type@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_labels@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_list@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_max@Base 2.5.3
++ webkit_dom_html_input_element_get_max_length@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_min@Base 2.5.3
++ webkit_dom_html_input_element_get_multiple@Base 2.5.3
++ webkit_dom_html_input_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_pattern@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_placeholder@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_read_only@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_required@Base 2.5.3
++ webkit_dom_html_input_element_get_size@Base 2.5.3
++ webkit_dom_html_input_element_get_src@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_step@Base 2.5.3
++ webkit_dom_html_input_element_get_type@Base 2.5.3
++ webkit_dom_html_input_element_get_use_map@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_validity@Base 2.5.3
++ webkit_dom_html_input_element_get_value@Base 2.5.3
++ (optional)webkit_dom_html_input_element_get_value_as_number@Base 2.5.3
++ webkit_dom_html_input_element_get_width@Base 2.5.3
++ webkit_dom_html_input_element_get_will_validate@Base 2.5.3
++ webkit_dom_html_input_element_is_edited@Base 2.5.3
++ webkit_dom_html_input_element_select@Base 2.5.3
++ webkit_dom_html_input_element_set_accept@Base 2.5.3
++ webkit_dom_html_input_element_set_align@Base 2.5.3
++ webkit_dom_html_input_element_set_alt@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_autocomplete@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_autocorrect@Base 2.5.3
++ webkit_dom_html_input_element_set_autofocus@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_capture@Base 2.5.3
++ webkit_dom_html_input_element_set_checked@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_custom_validity@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_default_checked@Base 2.5.3
++ webkit_dom_html_input_element_set_default_value@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_dir_name@Base 2.5.3
++ webkit_dom_html_input_element_set_disabled@Base 2.5.3
++ webkit_dom_html_input_element_set_files@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_form_action@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_form_enctype@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_form_method@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_form_no_validate@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_form_target@Base 2.5.3
++ webkit_dom_html_input_element_set_height@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_incremental@Base 2.5.3
++ webkit_dom_html_input_element_set_indeterminate@Base 2.5.3
++ webkit_dom_html_input_element_set_input_type@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_max@Base 2.5.3
++ webkit_dom_html_input_element_set_max_length@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_min@Base 2.5.3
++ webkit_dom_html_input_element_set_multiple@Base 2.5.3
++ webkit_dom_html_input_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_pattern@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_placeholder@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_range_text@Base 2.5.3
++ webkit_dom_html_input_element_set_read_only@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_required@Base 2.5.3
++ webkit_dom_html_input_element_set_size@Base 2.5.3
++ webkit_dom_html_input_element_set_src@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_step@Base 2.5.3
++ webkit_dom_html_input_element_set_use_map@Base 2.5.3
++ webkit_dom_html_input_element_set_value@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_value_as_number@Base 2.5.3
++ (optional)webkit_dom_html_input_element_set_value_for_user@Base 2.5.3
++ webkit_dom_html_input_element_set_width@Base 2.5.3
++ (optional)webkit_dom_html_input_element_step_down@Base 2.5.3
++ (optional)webkit_dom_html_input_element_step_up@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_check_validity@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_autofocus@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_challenge@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_disabled@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_keygen_type@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_keytype@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_labels@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_validity@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_get_will_validate@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_autofocus@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_challenge@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_custom_validity@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_disabled@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_keytype@Base 2.5.3
++ (optional)webkit_dom_html_keygen_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_label_element_get_control@Base 2.5.3
++ webkit_dom_html_label_element_get_form@Base 2.5.3
++ webkit_dom_html_label_element_get_html_for@Base 2.5.3
++ webkit_dom_html_label_element_get_type@Base 2.5.3
++ webkit_dom_html_label_element_set_html_for@Base 2.5.3
++ webkit_dom_html_legend_element_get_align@Base 2.5.3
++ webkit_dom_html_legend_element_get_form@Base 2.5.3
++ webkit_dom_html_legend_element_get_type@Base 2.5.3
++ webkit_dom_html_legend_element_set_align@Base 2.5.3
++ webkit_dom_html_li_element_get_type@Base 2.5.3
++ webkit_dom_html_li_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_li_element_get_value@Base 2.5.3
++ webkit_dom_html_li_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_li_element_set_value@Base 2.5.3
++ webkit_dom_html_link_element_get_charset@Base 2.5.3
++ webkit_dom_html_link_element_get_disabled@Base 2.5.3
++ webkit_dom_html_link_element_get_href@Base 2.5.3
++ webkit_dom_html_link_element_get_hreflang@Base 2.5.3
++ webkit_dom_html_link_element_get_media@Base 2.5.3
++ webkit_dom_html_link_element_get_rel@Base 2.5.3
++ webkit_dom_html_link_element_get_rev@Base 2.5.3
++ webkit_dom_html_link_element_get_sheet@Base 2.5.3
++ webkit_dom_html_link_element_get_target@Base 2.5.3
++ webkit_dom_html_link_element_get_type@Base 2.5.3
++ webkit_dom_html_link_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_link_element_set_charset@Base 2.5.3
++ webkit_dom_html_link_element_set_disabled@Base 2.5.3
++ webkit_dom_html_link_element_set_href@Base 2.5.3
++ webkit_dom_html_link_element_set_hreflang@Base 2.5.3
++ webkit_dom_html_link_element_set_media@Base 2.5.3
++ webkit_dom_html_link_element_set_rel@Base 2.5.3
++ webkit_dom_html_link_element_set_rev@Base 2.5.3
++ webkit_dom_html_link_element_set_target@Base 2.5.3
++ webkit_dom_html_link_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_map_element_get_areas@Base 2.5.3
++ webkit_dom_html_map_element_get_name@Base 2.5.3
++ webkit_dom_html_map_element_get_type@Base 2.5.3
++ webkit_dom_html_map_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_behavior@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_bg_color@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_direction@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_height@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_hspace@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_loop@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_scroll_amount@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_scroll_delay@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_true_speed@Base 2.5.3
++ webkit_dom_html_marquee_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_vspace@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_get_width@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_behavior@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_bg_color@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_direction@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_height@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_hspace@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_loop@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_scroll_amount@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_scroll_delay@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_true_speed@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_vspace@Base 2.5.3
++ (optional)webkit_dom_html_marquee_element_set_width@Base 2.5.3
++ webkit_dom_html_marquee_element_start@Base 2.5.3
++ webkit_dom_html_marquee_element_stop@Base 2.5.3
++ (optional)webkit_dom_html_media_element_add_text_track@Base 2.5.3
++ (optional)webkit_dom_html_media_element_can_play_type@Base 2.5.3
++ (optional)webkit_dom_html_media_element_fast_seek@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_audio_tracks@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_autoplay@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_buffered@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_controller@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_controls@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_current_src@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_current_time@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_default_muted@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_default_playback_rate@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_duration@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_ended@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_error@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_loop@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_media_group@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_muted@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_network_state@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_paused@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_playback_rate@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_played@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_preload@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_ready_state@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_seekable@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_seeking@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_src@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_text_tracks@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_video_tracks@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_volume@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_audio_decoded_byte_count@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_closed_captions_visible@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_current_playback_target_is_wireless@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_has_closed_captions@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_preserves_pitch@Base 2.5.3
++ (optional)webkit_dom_html_media_element_get_webkit_video_decoded_byte_count@Base 2.5.3
++ (optional)webkit_dom_html_media_element_load@Base 2.5.3
++ (optional)webkit_dom_html_media_element_pause@Base 2.5.3
++ (optional)webkit_dom_html_media_element_play@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_autoplay@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_controls@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_current_time@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_default_muted@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_default_playback_rate@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_loop@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_media_group@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_muted@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_playback_rate@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_preload@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_src@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_volume@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_webkit_closed_captions_visible@Base 2.5.3
++ (optional)webkit_dom_html_media_element_set_webkit_preserves_pitch@Base 2.5.3
++ (optional)webkit_dom_html_media_element_webkit_show_playback_target_picker@Base 2.5.3
++ webkit_dom_html_menu_element_get_compact@Base 2.5.3
++ webkit_dom_html_menu_element_get_type@Base 2.5.3
++ webkit_dom_html_menu_element_set_compact@Base 2.5.3
++ webkit_dom_html_meta_element_get_content@Base 2.5.3
++ webkit_dom_html_meta_element_get_http_equiv@Base 2.5.3
++ webkit_dom_html_meta_element_get_name@Base 2.5.3
++ webkit_dom_html_meta_element_get_scheme@Base 2.5.3
++ webkit_dom_html_meta_element_get_type@Base 2.5.3
++ webkit_dom_html_meta_element_set_content@Base 2.5.3
++ webkit_dom_html_meta_element_set_http_equiv@Base 2.5.3
++ webkit_dom_html_meta_element_set_name@Base 2.5.3
++ webkit_dom_html_meta_element_set_scheme@Base 2.5.3
++ webkit_dom_html_mod_element_get_cite@Base 2.5.3
++ webkit_dom_html_mod_element_get_date_time@Base 2.5.3
++ webkit_dom_html_mod_element_get_type@Base 2.5.3
++ webkit_dom_html_mod_element_set_cite@Base 2.5.3
++ webkit_dom_html_mod_element_set_date_time@Base 2.5.3
++ webkit_dom_html_o_list_element_get_compact@Base 2.5.3
++ (optional)webkit_dom_html_o_list_element_get_reversed@Base 2.5.3
++ webkit_dom_html_o_list_element_get_start@Base 2.5.3
++ webkit_dom_html_o_list_element_get_type@Base 2.5.3
++ webkit_dom_html_o_list_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_o_list_element_set_compact@Base 2.5.3
++ (optional)webkit_dom_html_o_list_element_set_reversed@Base 2.5.3
++ webkit_dom_html_o_list_element_set_start@Base 2.5.3
++ webkit_dom_html_o_list_element_set_type_attr@Base 2.5.3
++ (optional)webkit_dom_html_object_element_check_validity@Base 2.5.3
++ webkit_dom_html_object_element_get_align@Base 2.5.3
++ webkit_dom_html_object_element_get_archive@Base 2.5.3
++ webkit_dom_html_object_element_get_border@Base 2.5.3
++ webkit_dom_html_object_element_get_code@Base 2.5.3
++ webkit_dom_html_object_element_get_code_base@Base 2.5.3
++ webkit_dom_html_object_element_get_code_type@Base 2.5.3
++ webkit_dom_html_object_element_get_content_document@Base 2.5.3
++ webkit_dom_html_object_element_get_data@Base 2.5.3
++ webkit_dom_html_object_element_get_declare@Base 2.5.3
++ webkit_dom_html_object_element_get_form@Base 2.5.3
++ webkit_dom_html_object_element_get_height@Base 2.5.3
++ webkit_dom_html_object_element_get_hspace@Base 2.5.3
++ webkit_dom_html_object_element_get_name@Base 2.5.3
++ webkit_dom_html_object_element_get_standby@Base 2.5.3
++ webkit_dom_html_object_element_get_type@Base 2.5.3
++ webkit_dom_html_object_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_object_element_get_use_map@Base 2.5.3
++ (optional)webkit_dom_html_object_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_object_element_get_validity@Base 2.5.3
++ webkit_dom_html_object_element_get_vspace@Base 2.5.3
++ webkit_dom_html_object_element_get_width@Base 2.5.3
++ (optional)webkit_dom_html_object_element_get_will_validate@Base 2.5.3
++ webkit_dom_html_object_element_set_align@Base 2.5.3
++ webkit_dom_html_object_element_set_archive@Base 2.5.3
++ webkit_dom_html_object_element_set_border@Base 2.5.3
++ webkit_dom_html_object_element_set_code@Base 2.5.3
++ webkit_dom_html_object_element_set_code_base@Base 2.5.3
++ webkit_dom_html_object_element_set_code_type@Base 2.5.3
++ (optional)webkit_dom_html_object_element_set_custom_validity@Base 2.5.3
++ webkit_dom_html_object_element_set_data@Base 2.5.3
++ webkit_dom_html_object_element_set_declare@Base 2.5.3
++ webkit_dom_html_object_element_set_height@Base 2.5.3
++ webkit_dom_html_object_element_set_hspace@Base 2.5.3
++ webkit_dom_html_object_element_set_name@Base 2.5.3
++ webkit_dom_html_object_element_set_standby@Base 2.5.3
++ webkit_dom_html_object_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_object_element_set_use_map@Base 2.5.3
++ webkit_dom_html_object_element_set_vspace@Base 2.5.3
++ webkit_dom_html_object_element_set_width@Base 2.5.3
++ webkit_dom_html_opt_group_element_get_disabled@Base 2.5.3
++ webkit_dom_html_opt_group_element_get_label@Base 2.5.3
++ webkit_dom_html_opt_group_element_get_type@Base 2.5.3
++ webkit_dom_html_opt_group_element_set_disabled@Base 2.5.3
++ webkit_dom_html_opt_group_element_set_label@Base 2.5.3
++ webkit_dom_html_option_element_get_default_selected@Base 2.5.3
++ webkit_dom_html_option_element_get_disabled@Base 2.5.3
++ webkit_dom_html_option_element_get_form@Base 2.5.3
++ webkit_dom_html_option_element_get_index@Base 2.5.3
++ webkit_dom_html_option_element_get_label@Base 2.5.3
++ webkit_dom_html_option_element_get_selected@Base 2.5.3
++ webkit_dom_html_option_element_get_text@Base 2.5.3
++ webkit_dom_html_option_element_get_type@Base 2.5.3
++ webkit_dom_html_option_element_get_value@Base 2.5.3
++ webkit_dom_html_option_element_set_default_selected@Base 2.5.3
++ webkit_dom_html_option_element_set_disabled@Base 2.5.3
++ webkit_dom_html_option_element_set_label@Base 2.5.3
++ webkit_dom_html_option_element_set_selected@Base 2.5.3
++ webkit_dom_html_option_element_set_value@Base 2.5.3
++ webkit_dom_html_options_collection_get_length@Base 2.5.3
++ webkit_dom_html_options_collection_get_selected_index@Base 2.5.3
++ webkit_dom_html_options_collection_get_type@Base 2.5.3
++ webkit_dom_html_options_collection_named_item@Base 2.5.3
++ webkit_dom_html_options_collection_set_selected_index@Base 2.5.3
++ webkit_dom_html_paragraph_element_get_align@Base 2.5.3
++ webkit_dom_html_paragraph_element_get_type@Base 2.5.3
++ webkit_dom_html_paragraph_element_set_align@Base 2.5.3
++ webkit_dom_html_param_element_get_name@Base 2.5.3
++ webkit_dom_html_param_element_get_type@Base 2.5.3
++ webkit_dom_html_param_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_param_element_get_value@Base 2.5.3
++ webkit_dom_html_param_element_get_value_type@Base 2.5.3
++ webkit_dom_html_param_element_set_name@Base 2.5.3
++ webkit_dom_html_param_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_param_element_set_value@Base 2.5.3
++ webkit_dom_html_param_element_set_value_type@Base 2.5.3
++ webkit_dom_html_pre_element_get_type@Base 2.5.3
++ webkit_dom_html_pre_element_get_width@Base 2.5.3
++ webkit_dom_html_pre_element_get_wrap@Base 2.5.3
++ webkit_dom_html_pre_element_set_width@Base 2.5.3
++ webkit_dom_html_pre_element_set_wrap@Base 2.5.3
++ webkit_dom_html_quote_element_get_cite@Base 2.5.3
++ webkit_dom_html_quote_element_get_type@Base 2.5.3
++ webkit_dom_html_quote_element_set_cite@Base 2.5.3
++ (optional)webkit_dom_html_script_element_get_async@Base 2.5.3
++ webkit_dom_html_script_element_get_charset@Base 2.5.3
++ (optional)webkit_dom_html_script_element_get_cross_origin@Base 2.5.3
++ webkit_dom_html_script_element_get_defer@Base 2.5.3
++ webkit_dom_html_script_element_get_event@Base 2.5.3
++ webkit_dom_html_script_element_get_html_for@Base 2.5.3
++ (optional)webkit_dom_html_script_element_get_nonce@Base 2.5.3
++ webkit_dom_html_script_element_get_src@Base 2.5.3
++ webkit_dom_html_script_element_get_text@Base 2.5.3
++ webkit_dom_html_script_element_get_type@Base 2.5.3
++ webkit_dom_html_script_element_get_type_attr@Base 2.5.3
++ (optional)webkit_dom_html_script_element_set_async@Base 2.5.3
++ (optional)webkit_dom_html_script_element_set_charset@Base 2.5.3
++ (optional)webkit_dom_html_script_element_set_cross_origin@Base 2.5.3
++ webkit_dom_html_script_element_set_defer@Base 2.5.3
++ webkit_dom_html_script_element_set_event@Base 2.5.3
++ webkit_dom_html_script_element_set_html_for@Base 2.5.3
++ (optional)webkit_dom_html_script_element_set_nonce@Base 2.5.3
++ webkit_dom_html_script_element_set_src@Base 2.5.3
++ webkit_dom_html_script_element_set_text@Base 2.5.3
++ webkit_dom_html_script_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_select_element_add@Base 2.5.3
++ (optional)webkit_dom_html_select_element_check_validity@Base 2.5.3
++ webkit_dom_html_select_element_get_autofocus@Base 2.5.3
++ webkit_dom_html_select_element_get_disabled@Base 2.5.3
++ webkit_dom_html_select_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_select_element_get_labels@Base 2.5.3
++ webkit_dom_html_select_element_get_length@Base 2.5.3
++ webkit_dom_html_select_element_get_multiple@Base 2.5.3
++ webkit_dom_html_select_element_get_name@Base 2.5.3
++ webkit_dom_html_select_element_get_options@Base 2.5.3
++ (optional)webkit_dom_html_select_element_get_required@Base 2.5.3
++ webkit_dom_html_select_element_get_select_type@Base 2.5.3
++ webkit_dom_html_select_element_get_selected_index@Base 2.5.3
++ (optional)webkit_dom_html_select_element_get_selected_options@Base 2.5.3
++ webkit_dom_html_select_element_get_size@Base 2.5.3
++ webkit_dom_html_select_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_select_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_select_element_get_validity@Base 2.5.3
++ webkit_dom_html_select_element_get_value@Base 2.5.3
++ webkit_dom_html_select_element_get_will_validate@Base 2.5.3
++ webkit_dom_html_select_element_item@Base 2.5.3
++ webkit_dom_html_select_element_named_item@Base 2.5.3
++ webkit_dom_html_select_element_remove@Base 2.5.3
++ webkit_dom_html_select_element_set_autofocus@Base 2.5.3
++ (optional)webkit_dom_html_select_element_set_custom_validity@Base 2.5.3
++ webkit_dom_html_select_element_set_disabled@Base 2.5.3
++ webkit_dom_html_select_element_set_length@Base 2.5.3
++ webkit_dom_html_select_element_set_multiple@Base 2.5.3
++ webkit_dom_html_select_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_select_element_set_required@Base 2.5.3
++ webkit_dom_html_select_element_set_selected_index@Base 2.5.3
++ webkit_dom_html_select_element_set_size@Base 2.5.3
++ webkit_dom_html_select_element_set_value@Base 2.5.3
++ webkit_dom_html_style_element_get_disabled@Base 2.5.3
++ webkit_dom_html_style_element_get_media@Base 2.5.3
++ webkit_dom_html_style_element_get_sheet@Base 2.5.3
++ webkit_dom_html_style_element_get_type@Base 2.5.3
++ webkit_dom_html_style_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_style_element_set_disabled@Base 2.5.3
++ webkit_dom_html_style_element_set_media@Base 2.5.3
++ webkit_dom_html_style_element_set_type_attr@Base 2.5.3
++ webkit_dom_html_table_caption_element_get_align@Base 2.5.3
++ webkit_dom_html_table_caption_element_get_type@Base 2.5.3
++ webkit_dom_html_table_caption_element_set_align@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_abbr@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_align@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_axis@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_bg_color@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_cell_index@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_ch@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_ch_off@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_col_span@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_headers@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_height@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_no_wrap@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_row_span@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_scope@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_type@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_v_align@Base 2.5.3
++ webkit_dom_html_table_cell_element_get_width@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_abbr@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_align@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_axis@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_bg_color@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_ch@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_ch_off@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_col_span@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_headers@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_height@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_no_wrap@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_row_span@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_scope@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_v_align@Base 2.5.3
++ webkit_dom_html_table_cell_element_set_width@Base 2.5.3
++ webkit_dom_html_table_col_element_get_align@Base 2.5.3
++ webkit_dom_html_table_col_element_get_ch@Base 2.5.3
++ webkit_dom_html_table_col_element_get_ch_off@Base 2.5.3
++ webkit_dom_html_table_col_element_get_span@Base 2.5.3
++ webkit_dom_html_table_col_element_get_type@Base 2.5.3
++ webkit_dom_html_table_col_element_get_v_align@Base 2.5.3
++ webkit_dom_html_table_col_element_get_width@Base 2.5.3
++ webkit_dom_html_table_col_element_set_align@Base 2.5.3
++ webkit_dom_html_table_col_element_set_ch@Base 2.5.3
++ webkit_dom_html_table_col_element_set_ch_off@Base 2.5.3
++ webkit_dom_html_table_col_element_set_span@Base 2.5.3
++ webkit_dom_html_table_col_element_set_v_align@Base 2.5.3
++ webkit_dom_html_table_col_element_set_width@Base 2.5.3
++ webkit_dom_html_table_element_create_caption@Base 2.5.3
++ (optional)webkit_dom_html_table_element_create_t_body@Base 2.5.3
++ webkit_dom_html_table_element_create_t_foot@Base 2.5.3
++ webkit_dom_html_table_element_create_t_head@Base 2.5.3
++ webkit_dom_html_table_element_delete_caption@Base 2.5.3
++ webkit_dom_html_table_element_delete_row@Base 2.5.3
++ webkit_dom_html_table_element_delete_t_foot@Base 2.5.3
++ webkit_dom_html_table_element_delete_t_head@Base 2.5.3
++ webkit_dom_html_table_element_get_align@Base 2.5.3
++ webkit_dom_html_table_element_get_bg_color@Base 2.5.3
++ webkit_dom_html_table_element_get_border@Base 2.5.3
++ webkit_dom_html_table_element_get_caption@Base 2.5.3
++ webkit_dom_html_table_element_get_cell_padding@Base 2.5.3
++ webkit_dom_html_table_element_get_cell_spacing@Base 2.5.3
++ (optional)webkit_dom_html_table_element_get_frame@Base 2.5.3
++ webkit_dom_html_table_element_get_rows@Base 2.5.3
++ webkit_dom_html_table_element_get_rules@Base 2.5.3
++ webkit_dom_html_table_element_get_summary@Base 2.5.3
++ webkit_dom_html_table_element_get_t_bodies@Base 2.5.3
++ webkit_dom_html_table_element_get_t_foot@Base 2.5.3
++ webkit_dom_html_table_element_get_t_head@Base 2.5.3
++ webkit_dom_html_table_element_get_type@Base 2.5.3
++ webkit_dom_html_table_element_get_width@Base 2.5.3
++ webkit_dom_html_table_element_insert_row@Base 2.5.3
++ webkit_dom_html_table_element_set_align@Base 2.5.3
++ webkit_dom_html_table_element_set_bg_color@Base 2.5.3
++ webkit_dom_html_table_element_set_border@Base 2.5.3
++ webkit_dom_html_table_element_set_caption@Base 2.5.3
++ webkit_dom_html_table_element_set_cell_padding@Base 2.5.3
++ webkit_dom_html_table_element_set_cell_spacing@Base 2.5.3
++ (optional)webkit_dom_html_table_element_set_frame@Base 2.5.3
++ webkit_dom_html_table_element_set_rules@Base 2.5.3
++ webkit_dom_html_table_element_set_summary@Base 2.5.3
++ webkit_dom_html_table_element_set_t_foot@Base 2.5.3
++ webkit_dom_html_table_element_set_t_head@Base 2.5.3
++ webkit_dom_html_table_element_set_width@Base 2.5.3
++ webkit_dom_html_table_row_element_delete_cell@Base 2.5.3
++ webkit_dom_html_table_row_element_get_align@Base 2.5.3
++ webkit_dom_html_table_row_element_get_bg_color@Base 2.5.3
++ webkit_dom_html_table_row_element_get_cells@Base 2.5.3
++ webkit_dom_html_table_row_element_get_ch@Base 2.5.3
++ webkit_dom_html_table_row_element_get_ch_off@Base 2.5.3
++ webkit_dom_html_table_row_element_get_row_index@Base 2.5.3
++ webkit_dom_html_table_row_element_get_section_row_index@Base 2.5.3
++ webkit_dom_html_table_row_element_get_type@Base 2.5.3
++ webkit_dom_html_table_row_element_get_v_align@Base 2.5.3
++ webkit_dom_html_table_row_element_insert_cell@Base 2.5.3
++ webkit_dom_html_table_row_element_set_align@Base 2.5.3
++ webkit_dom_html_table_row_element_set_bg_color@Base 2.5.3
++ webkit_dom_html_table_row_element_set_ch@Base 2.5.3
++ webkit_dom_html_table_row_element_set_ch_off@Base 2.5.3
++ webkit_dom_html_table_row_element_set_v_align@Base 2.5.3
++ webkit_dom_html_table_section_element_delete_row@Base 2.5.3
++ webkit_dom_html_table_section_element_get_align@Base 2.5.3
++ webkit_dom_html_table_section_element_get_ch@Base 2.5.3
++ webkit_dom_html_table_section_element_get_ch_off@Base 2.5.3
++ webkit_dom_html_table_section_element_get_rows@Base 2.5.3
++ webkit_dom_html_table_section_element_get_type@Base 2.5.3
++ webkit_dom_html_table_section_element_get_v_align@Base 2.5.3
++ webkit_dom_html_table_section_element_insert_row@Base 2.5.3
++ webkit_dom_html_table_section_element_set_align@Base 2.5.3
++ webkit_dom_html_table_section_element_set_ch@Base 2.5.3
++ webkit_dom_html_table_section_element_set_ch_off@Base 2.5.3
++ webkit_dom_html_table_section_element_set_v_align@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_check_validity@Base 2.5.3
++ webkit_dom_html_text_area_element_get_area_type@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_autocorrect@Base 2.5.3
++ webkit_dom_html_text_area_element_get_autofocus@Base 2.5.3
++ webkit_dom_html_text_area_element_get_cols@Base 2.5.3
++ webkit_dom_html_text_area_element_get_default_value@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_dir_name@Base 2.5.3
++ webkit_dom_html_text_area_element_get_disabled@Base 2.5.3
++ webkit_dom_html_text_area_element_get_form@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_labels@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_max_length@Base 2.5.3
++ webkit_dom_html_text_area_element_get_name@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_placeholder@Base 2.5.3
++ webkit_dom_html_text_area_element_get_read_only@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_required@Base 2.5.3
++ webkit_dom_html_text_area_element_get_rows@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_selection_direction@Base 2.5.3
++ webkit_dom_html_text_area_element_get_selection_end@Base 2.5.3
++ webkit_dom_html_text_area_element_get_selection_start@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_text_length@Base 2.5.3
++ webkit_dom_html_text_area_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_validation_message@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_validity@Base 2.5.3
++ webkit_dom_html_text_area_element_get_value@Base 2.5.3
++ webkit_dom_html_text_area_element_get_will_validate@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_get_wrap@Base 2.5.3
++ webkit_dom_html_text_area_element_is_edited@Base 2.5.3
++ webkit_dom_html_text_area_element_select@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_autocapitalize@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_autocorrect@Base 2.5.3
++ webkit_dom_html_text_area_element_set_autofocus@Base 2.5.3
++ webkit_dom_html_text_area_element_set_cols@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_custom_validity@Base 2.5.3
++ webkit_dom_html_text_area_element_set_default_value@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_dir_name@Base 2.5.3
++ webkit_dom_html_text_area_element_set_disabled@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_max_length@Base 2.5.3
++ webkit_dom_html_text_area_element_set_name@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_placeholder@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_range_text@Base 2.5.3
++ webkit_dom_html_text_area_element_set_read_only@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_required@Base 2.5.3
++ webkit_dom_html_text_area_element_set_rows@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_selection_direction@Base 2.5.3
++ webkit_dom_html_text_area_element_set_selection_end@Base 2.5.3
++ webkit_dom_html_text_area_element_set_selection_range@Base 2.5.3
++ webkit_dom_html_text_area_element_set_selection_start@Base 2.5.3
++ webkit_dom_html_text_area_element_set_value@Base 2.5.3
++ (optional)webkit_dom_html_text_area_element_set_wrap@Base 2.5.3
++ webkit_dom_html_title_element_get_text@Base 2.5.3
++ webkit_dom_html_title_element_get_type@Base 2.5.3
++ webkit_dom_html_title_element_set_text@Base 2.5.3
++ webkit_dom_html_u_list_element_get_compact@Base 2.5.3
++ webkit_dom_html_u_list_element_get_type@Base 2.5.3
++ webkit_dom_html_u_list_element_get_type_attr@Base 2.5.3
++ webkit_dom_html_u_list_element_set_compact@Base 2.5.3
++ webkit_dom_html_u_list_element_set_type_attr@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_height@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_poster@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_type@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_video_height@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_video_width@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_webkit_decoded_frame_count@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_webkit_displaying_fullscreen@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_webkit_dropped_frame_count@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_webkit_supports_fullscreen@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_webkit_wireless_video_playback_disabled@Base 2.5.3
++ (optional)webkit_dom_html_video_element_get_width@Base 2.5.3
++ (optional)webkit_dom_html_video_element_set_height@Base 2.5.3
++ (optional)webkit_dom_html_video_element_set_poster@Base 2.5.3
++ (optional)webkit_dom_html_video_element_set_webkit_wireless_video_playback_disabled@Base 2.5.3
++ (optional)webkit_dom_html_video_element_set_width@Base 2.5.3
++ (optional)webkit_dom_html_video_element_webkit_enter_full_screen@Base 2.5.3
++ (optional)webkit_dom_html_video_element_webkit_enter_fullscreen@Base 2.5.3
++ (optional)webkit_dom_html_video_element_webkit_exit_full_screen@Base 2.5.3
++ (optional)webkit_dom_html_video_element_webkit_exit_fullscreen@Base 2.5.3
++ webkit_dom_keyboard_event_get_alt_graph_key@Base 2.5.3
++ webkit_dom_keyboard_event_get_alt_key@Base 2.5.3
++ webkit_dom_keyboard_event_get_ctrl_key@Base 2.5.3
++ webkit_dom_keyboard_event_get_key_identifier@Base 2.5.3
++ webkit_dom_keyboard_event_get_key_location@Base 2.5.3
++ webkit_dom_keyboard_event_get_meta_key@Base 2.5.3
++ webkit_dom_keyboard_event_get_modifier_state@Base 2.5.3
++ webkit_dom_keyboard_event_get_shift_key@Base 2.5.3
++ webkit_dom_keyboard_event_get_type@Base 2.5.3
++ webkit_dom_keyboard_event_init_keyboard_event@Base 2.5.3
++ (optional)webkit_dom_location_get_ancestor_origins@Base 2.5.3
++ (optional)webkit_dom_location_get_hash@Base 2.5.3
++ (optional)webkit_dom_location_get_host@Base 2.5.3
++ (optional)webkit_dom_location_get_hostname@Base 2.5.3
++ (optional)webkit_dom_location_get_href@Base 2.5.3
++ (optional)webkit_dom_location_get_origin@Base 2.5.3
++ (optional)webkit_dom_location_get_pathname@Base 2.5.3
++ (optional)webkit_dom_location_get_port@Base 2.5.3
++ (optional)webkit_dom_location_get_protocol@Base 2.5.3
++ (optional)webkit_dom_location_get_search@Base 2.5.3
++ (optional)webkit_dom_location_get_type@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_buffered@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_current_time@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_default_playback_rate@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_duration@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_muted@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_paused@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_playback_rate@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_playback_state@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_played@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_seekable@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_type@Base 2.5.3
++ (optional)webkit_dom_media_controller_get_volume@Base 2.5.3
++ (optional)webkit_dom_media_controller_pause@Base 2.5.3
++ (optional)webkit_dom_media_controller_play@Base 2.5.3
++ (optional)webkit_dom_media_controller_set_current_time@Base 2.5.3
++ (optional)webkit_dom_media_controller_set_default_playback_rate@Base 2.5.3
++ (optional)webkit_dom_media_controller_set_muted@Base 2.5.3
++ (optional)webkit_dom_media_controller_set_playback_rate@Base 2.5.3
++ (optional)webkit_dom_media_controller_set_volume@Base 2.5.3
++ (optional)webkit_dom_media_controller_unpause@Base 2.5.3
++ (optional)webkit_dom_media_error_get_code@Base 2.5.3
++ (optional)webkit_dom_media_error_get_type@Base 2.5.3
++ webkit_dom_media_list_append_medium@Base 2.5.3
++ webkit_dom_media_list_delete_medium@Base 2.5.3
++ webkit_dom_media_list_get_length@Base 2.5.3
++ webkit_dom_media_list_get_media_text@Base 2.5.3
++ webkit_dom_media_list_get_type@Base 2.5.3
++ webkit_dom_media_list_item@Base 2.5.3
++ webkit_dom_media_list_set_media_text@Base 2.5.3
++ (optional)webkit_dom_media_query_list_get_matches@Base 2.5.3
++ (optional)webkit_dom_media_query_list_get_media@Base 2.5.3
++ (optional)webkit_dom_media_query_list_get_type@Base 2.5.3
++ (optional)webkit_dom_message_port_get_type@Base 2.5.3
++ webkit_dom_mouse_event_get_alt_key@Base 2.5.3
++ webkit_dom_mouse_event_get_button@Base 2.5.3
++ webkit_dom_mouse_event_get_client_x@Base 2.5.3
++ webkit_dom_mouse_event_get_client_y@Base 2.5.3
++ webkit_dom_mouse_event_get_ctrl_key@Base 2.5.3
++ webkit_dom_mouse_event_get_from_element@Base 2.5.3
++ webkit_dom_mouse_event_get_meta_key@Base 2.5.3
++ (optional)webkit_dom_mouse_event_get_movement_x@Base 2.5.3
++ (optional)webkit_dom_mouse_event_get_movement_y@Base 2.5.3
++ webkit_dom_mouse_event_get_offset_x@Base 2.5.3
++ webkit_dom_mouse_event_get_offset_y@Base 2.5.3
++ webkit_dom_mouse_event_get_related_target@Base 2.5.3
++ webkit_dom_mouse_event_get_screen_x@Base 2.5.3
++ webkit_dom_mouse_event_get_screen_y@Base 2.5.3
++ webkit_dom_mouse_event_get_shift_key@Base 2.5.3
++ webkit_dom_mouse_event_get_to_element@Base 2.5.3
++ webkit_dom_mouse_event_get_type@Base 2.5.3
++ webkit_dom_mouse_event_get_x@Base 2.5.3
++ webkit_dom_mouse_event_get_y@Base 2.5.3
++ webkit_dom_mouse_event_init_mouse_event@Base 2.5.3
++ webkit_dom_named_node_map_get_length@Base 2.5.3
++ webkit_dom_named_node_map_get_named_item@Base 2.5.3
++ webkit_dom_named_node_map_get_named_item_ns@Base 2.5.3
++ webkit_dom_named_node_map_get_type@Base 2.5.3
++ webkit_dom_named_node_map_item@Base 2.5.3
++ webkit_dom_named_node_map_remove_named_item@Base 2.5.3
++ webkit_dom_named_node_map_remove_named_item_ns@Base 2.5.3
++ webkit_dom_named_node_map_set_named_item@Base 2.5.3
++ webkit_dom_named_node_map_set_named_item_ns@Base 2.5.3
++ (optional)webkit_dom_navigator_get_app_code_name@Base 2.5.3
++ (optional)webkit_dom_navigator_get_app_name@Base 2.5.3
++ (optional)webkit_dom_navigator_get_app_version@Base 2.5.3
++ (optional)webkit_dom_navigator_get_cookie_enabled@Base 2.5.3
++ (optional)webkit_dom_navigator_get_geolocation@Base 2.5.3
++ (optional)webkit_dom_navigator_get_hardware_concurrency@Base 2.5.3
++ (optional)webkit_dom_navigator_get_language@Base 2.5.3
++ (optional)webkit_dom_navigator_get_mime_types@Base 2.5.3
++ (optional)webkit_dom_navigator_get_on_line@Base 2.5.3
++ (optional)webkit_dom_navigator_get_platform@Base 2.5.3
++ (optional)webkit_dom_navigator_get_plugins@Base 2.5.3
++ (optional)webkit_dom_navigator_get_product@Base 2.5.3
++ (optional)webkit_dom_navigator_get_product_sub@Base 2.5.3
++ (optional)webkit_dom_navigator_get_storage_updates@Base 2.5.3
++ (optional)webkit_dom_navigator_get_type@Base 2.5.3
++ (optional)webkit_dom_navigator_get_user_agent@Base 2.5.3
++ (optional)webkit_dom_navigator_get_vendor@Base 2.5.3
++ (optional)webkit_dom_navigator_get_vendor_sub@Base 2.5.3
++ (optional)webkit_dom_navigator_get_webkit_battery@Base 2.5.3
++ (optional)webkit_dom_navigator_is_protocol_handler_registered@Base 2.5.3
++ (optional)webkit_dom_navigator_java_enabled@Base 2.5.3
++ (optional)webkit_dom_navigator_register_protocol_handler@Base 2.5.3
++ (optional)webkit_dom_navigator_unregister_protocol_handler@Base 2.5.3
++ (optional)webkit_dom_navigator_vibrate@Base 2.5.3
++ (optional)webkit_dom_navigator_webkit_get_gamepads@Base 2.5.3
++ webkit_dom_node_append_child@Base 2.5.3
++ webkit_dom_node_clone_node@Base 2.5.3
++ webkit_dom_node_compare_document_position@Base 2.5.3
++ webkit_dom_node_contains@Base 2.5.3
++ webkit_dom_node_filter_accept_node@Base 2.5.3
++ webkit_dom_node_filter_get_type@Base 2.5.3
++ webkit_dom_node_get_base_uri@Base 2.5.3
++ webkit_dom_node_get_child_nodes@Base 2.5.3
++ webkit_dom_node_get_first_child@Base 2.5.3
++ webkit_dom_node_get_last_child@Base 2.5.3
++ webkit_dom_node_get_local_name@Base 2.5.3
++ webkit_dom_node_get_namespace_uri@Base 2.5.3
++ webkit_dom_node_get_next_sibling@Base 2.5.3
++ webkit_dom_node_get_node_name@Base 2.5.3
++ webkit_dom_node_get_node_type@Base 2.5.3
++ webkit_dom_node_get_node_value@Base 2.5.3
++ webkit_dom_node_get_owner_document@Base 2.5.3
++ webkit_dom_node_get_parent_element@Base 2.5.3
++ webkit_dom_node_get_parent_node@Base 2.5.3
++ webkit_dom_node_get_prefix@Base 2.5.3
++ webkit_dom_node_get_previous_sibling@Base 2.5.3
++ webkit_dom_node_get_text_content@Base 2.5.3
++ webkit_dom_node_get_type@Base 2.5.3
++ webkit_dom_node_has_child_nodes@Base 2.5.3
++ webkit_dom_node_insert_before@Base 2.5.3
++ webkit_dom_node_is_default_namespace@Base 2.5.3
++ webkit_dom_node_is_equal_node@Base 2.5.3
++ webkit_dom_node_is_same_node@Base 2.5.3
++ webkit_dom_node_is_supported@Base 2.5.3
++ webkit_dom_node_iterator_detach@Base 2.5.3
++ webkit_dom_node_iterator_get_expand_entity_references@Base 2.5.3
++ webkit_dom_node_iterator_get_filter@Base 2.5.3
++ webkit_dom_node_iterator_get_pointer_before_reference_node@Base 2.5.3
++ webkit_dom_node_iterator_get_reference_node@Base 2.5.3
++ webkit_dom_node_iterator_get_root@Base 2.5.3
++ webkit_dom_node_iterator_get_type@Base 2.5.3
++ webkit_dom_node_iterator_get_what_to_show@Base 2.5.3
++ webkit_dom_node_iterator_next_node@Base 2.5.3
++ webkit_dom_node_iterator_previous_node@Base 2.5.3
++ webkit_dom_node_list_get_length@Base 2.5.3
++ webkit_dom_node_list_get_type@Base 2.5.3
++ webkit_dom_node_list_item@Base 2.5.3
++ webkit_dom_node_lookup_namespace_uri@Base 2.5.3
++ webkit_dom_node_lookup_prefix@Base 2.5.3
++ webkit_dom_node_normalize@Base 2.5.3
++ webkit_dom_node_remove_child@Base 2.5.3
++ webkit_dom_node_replace_child@Base 2.5.3
++ webkit_dom_node_set_node_value@Base 2.5.3
++ webkit_dom_node_set_prefix@Base 2.5.3
++ webkit_dom_node_set_text_content@Base 2.5.3
++ webkit_dom_object_get_type@Base 2.5.3
++ (optional)webkit_dom_performance_entry_get_duration@Base 2.5.3
++ (optional)webkit_dom_performance_entry_get_entry_type@Base 2.5.3
++ (optional)webkit_dom_performance_entry_get_name@Base 2.5.3
++ (optional)webkit_dom_performance_entry_get_start_time@Base 2.5.3
++ (optional)webkit_dom_performance_entry_get_type@Base 2.5.3
++ (optional)webkit_dom_performance_entry_list_get_length@Base 2.5.3
++ (optional)webkit_dom_performance_entry_list_get_type@Base 2.5.3
++ (optional)webkit_dom_performance_entry_list_item@Base 2.5.3
++ (optional)webkit_dom_performance_get_navigation@Base 2.5.3
++ (optional)webkit_dom_performance_get_timing@Base 2.5.3
++ (optional)webkit_dom_performance_get_type@Base 2.5.3
++ webkit_navigation_policy_decision_get_navigation_action@Base 2.5.3
++ (optional)webkit_dom_performance_navigation_get_navigation_type@Base 2.5.3
++ (optional)webkit_dom_performance_navigation_get_redirect_count@Base 2.5.3
++ (optional)webkit_dom_performance_navigation_get_type@Base 2.5.3
++ (optional)webkit_dom_performance_now@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_connect_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_connect_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_dom_complete@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_dom_content_loaded_event_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_dom_content_loaded_event_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_dom_interactive@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_dom_loading@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_domain_lookup_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_domain_lookup_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_fetch_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_load_event_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_load_event_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_navigation_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_redirect_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_redirect_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_request_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_response_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_response_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_secure_connection_start@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_type@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_unload_event_end@Base 2.5.3
++ (optional)webkit_dom_performance_timing_get_unload_event_start@Base 2.5.3
++ webkit_dom_processing_instruction_get_sheet@Base 2.5.3
++ webkit_dom_processing_instruction_get_target@Base 2.5.3
++ webkit_dom_processing_instruction_get_type@Base 2.5.3
++ webkit_dom_range_clone_contents@Base 2.5.3
++ webkit_dom_range_clone_range@Base 2.5.3
++ webkit_dom_range_collapse@Base 2.5.3
++ webkit_dom_range_compare_boundary_points@Base 2.5.3
++ webkit_dom_range_compare_node@Base 2.5.3
++ webkit_dom_range_compare_point@Base 2.5.3
++ webkit_dom_range_create_contextual_fragment@Base 2.5.3
++ webkit_dom_range_delete_contents@Base 2.5.3
++ webkit_dom_range_detach@Base 2.5.3
++ (optional)webkit_dom_range_expand@Base 2.5.3
++ webkit_dom_range_extract_contents@Base 2.5.3
++ webkit_dom_range_get_collapsed@Base 2.5.3
++ webkit_dom_range_get_common_ancestor_container@Base 2.5.3
++ webkit_dom_range_get_end_container@Base 2.5.3
++ webkit_dom_range_get_end_offset@Base 2.5.3
++ webkit_dom_range_get_start_container@Base 2.5.3
++ webkit_dom_range_get_start_offset@Base 2.5.3
++ webkit_dom_range_get_text@Base 2.5.3
++ webkit_dom_range_get_type@Base 2.5.3
++ webkit_dom_range_insert_node@Base 2.5.3
++ webkit_dom_range_intersects_node@Base 2.5.3
++ webkit_dom_range_is_point_in_range@Base 2.5.3
++ webkit_dom_range_select_node@Base 2.5.3
++ webkit_dom_range_select_node_contents@Base 2.5.3
++ webkit_dom_range_set_end@Base 2.5.3
++ webkit_dom_range_set_end_after@Base 2.5.3
++ webkit_dom_range_set_end_before@Base 2.5.3
++ webkit_dom_range_set_start@Base 2.5.3
++ webkit_dom_range_set_start_after@Base 2.5.3
++ webkit_dom_range_set_start_before@Base 2.5.3
++ webkit_dom_range_surround_contents@Base 2.5.3
++ webkit_dom_range_to_string@Base 2.5.3
++ (optional)webkit_dom_screen_get_avail_height@Base 2.5.3
++ (optional)webkit_dom_screen_get_avail_left@Base 2.5.3
++ (optional)webkit_dom_screen_get_avail_top@Base 2.5.3
++ (optional)webkit_dom_screen_get_avail_width@Base 2.5.3
++ (optional)webkit_dom_screen_get_color_depth@Base 2.5.3
++ (optional)webkit_dom_screen_get_height@Base 2.5.3
++ (optional)webkit_dom_screen_get_pixel_depth@Base 2.5.3
++ (optional)webkit_dom_screen_get_type@Base 2.5.3
++ (optional)webkit_dom_screen_get_width@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_cancel@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_event_get_char_index@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_event_get_elapsed_time@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_event_get_name@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_event_get_type@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_get_paused@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_get_pending@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_get_speaking@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_get_type@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_pause@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_resume@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_speak@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_lang@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_pitch@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_rate@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_text@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_type@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_voice@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_get_volume@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_lang@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_pitch@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_rate@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_text@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_voice@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_utterance_set_volume@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_default@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_lang@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_local_service@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_name@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_type@Base 2.5.3
++ (optional)webkit_dom_speech_synthesis_voice_get_voice_uri@Base 2.5.3
++ (optional)webkit_dom_storage_clear@Base 2.5.3
++ (optional)webkit_dom_storage_get_item@Base 2.5.3
++ (optional)webkit_dom_storage_get_length@Base 2.5.3
++ (optional)webkit_dom_storage_get_type@Base 2.5.3
++ (optional)webkit_dom_storage_key@Base 2.5.3
++ (optional)webkit_dom_storage_remove_item@Base 2.5.3
++ (optional)webkit_dom_storage_set_item@Base 2.5.3
++ (optional)webkit_dom_style_media_get_media_type@Base 2.5.3
++ (optional)webkit_dom_style_media_get_type@Base 2.5.3
++ (optional)webkit_dom_style_media_match_medium@Base 2.5.3
++ webkit_dom_style_sheet_get_content_type@Base 2.5.3
++ webkit_dom_style_sheet_get_disabled@Base 2.5.3
++ webkit_dom_style_sheet_get_href@Base 2.5.3
++ webkit_dom_style_sheet_get_media@Base 2.5.3
++ webkit_dom_style_sheet_get_owner_node@Base 2.5.3
++ webkit_dom_style_sheet_get_parent_style_sheet@Base 2.5.3
++ webkit_dom_style_sheet_get_title@Base 2.5.3
++ webkit_dom_style_sheet_get_type@Base 2.5.3
++ webkit_dom_style_sheet_list_get_length@Base 2.5.3
++ webkit_dom_style_sheet_list_get_type@Base 2.5.3
++ webkit_dom_style_sheet_list_item@Base 2.5.3
++ webkit_dom_style_sheet_set_disabled@Base 2.5.3
++ webkit_dom_text_get_type@Base 2.5.3
++ webkit_dom_text_get_whole_text@Base 2.5.3
++ webkit_dom_text_replace_whole_text@Base 2.5.3
++ webkit_dom_text_split_text@Base 2.5.3
++ (optional)webkit_dom_text_track_add_cue@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_end_time@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_id@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_pause_on_exit@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_start_time@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_track@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_get_type@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_list_get_cue_by_id@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_list_get_length@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_list_get_type@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_list_item@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_set_end_time@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_set_id@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_set_pause_on_exit@Base 2.5.3
++ (optional)webkit_dom_text_track_cue_set_start_time@Base 2.5.3
++ (optional)webkit_dom_text_track_get_active_cues@Base 2.5.3
++ (optional)webkit_dom_text_track_get_cues@Base 2.5.3
++ (optional)webkit_dom_text_track_get_id@Base 2.5.3
++ (optional)webkit_dom_text_track_get_in_band_metadata_track_dispatch_type@Base 2.5.3
++ (optional)webkit_dom_text_track_get_label@Base 2.5.3
++ (optional)webkit_dom_text_track_get_language@Base 2.5.3
++ (optional)webkit_dom_text_track_get_type@Base 2.5.3
++ (optional)webkit_dom_text_track_list_get_length@Base 2.5.3
++ (optional)webkit_dom_text_track_list_get_track_by_id@Base 2.5.3
++ (optional)webkit_dom_text_track_list_get_type@Base 2.5.3
++ (optional)webkit_dom_text_track_list_item@Base 2.5.3
++ (optional)webkit_dom_text_track_remove_cue@Base 2.5.3
++ (optional)webkit_dom_time_ranges_end@Base 2.5.3
++ (optional)webkit_dom_time_ranges_get_length@Base 2.5.3
++ (optional)webkit_dom_time_ranges_get_type@Base 2.5.3
++ (optional)webkit_dom_time_ranges_start@Base 2.5.3
++ (optional)webkit_dom_touch_get_client_x@Base 2.5.3
++ (optional)webkit_dom_touch_get_client_y@Base 2.5.3
++ (optional)webkit_dom_touch_get_identifier@Base 2.5.3
++ (optional)webkit_dom_touch_get_page_x@Base 2.5.3
++ (optional)webkit_dom_touch_get_page_y@Base 2.5.3
++ (optional)webkit_dom_touch_get_screen_x@Base 2.5.3
++ (optional)webkit_dom_touch_get_screen_y@Base 2.5.3
++ (optional)webkit_dom_touch_get_target@Base 2.5.3
++ (optional)webkit_dom_touch_get_type@Base 2.5.3
++ (optional)webkit_dom_touch_get_webkit_force@Base 2.5.3
++ (optional)webkit_dom_touch_get_webkit_radius_x@Base 2.5.3
++ (optional)webkit_dom_touch_get_webkit_radius_y@Base 2.5.3
++ (optional)webkit_dom_touch_get_webkit_rotation_angle@Base 2.5.3
++ (optional)webkit_dom_track_event_get_type@Base 2.5.3
++ webkit_dom_tree_walker_first_child@Base 2.5.3
++ webkit_dom_tree_walker_get_current_node@Base 2.5.3
++ webkit_dom_tree_walker_get_expand_entity_references@Base 2.5.3
++ webkit_dom_tree_walker_get_filter@Base 2.5.3
++ webkit_dom_tree_walker_get_root@Base 2.5.3
++ webkit_dom_tree_walker_get_type@Base 2.5.3
++ webkit_dom_tree_walker_get_what_to_show@Base 2.5.3
++ webkit_dom_tree_walker_last_child@Base 2.5.3
++ webkit_dom_tree_walker_next_node@Base 2.5.3
++ webkit_dom_tree_walker_next_sibling@Base 2.5.3
++ webkit_dom_tree_walker_parent_node@Base 2.5.3
++ webkit_dom_tree_walker_previous_node@Base 2.5.3
++ webkit_dom_tree_walker_previous_sibling@Base 2.5.3
++ webkit_dom_tree_walker_set_current_node@Base 2.5.3
++ webkit_dom_ui_event_get_char_code@Base 2.5.3
++ webkit_dom_ui_event_get_detail@Base 2.5.3
++ webkit_dom_ui_event_get_key_code@Base 2.5.3
++ webkit_dom_ui_event_get_layer_x@Base 2.5.3
++ webkit_dom_ui_event_get_layer_y@Base 2.5.3
++ webkit_dom_ui_event_get_page_x@Base 2.5.3
++ webkit_dom_ui_event_get_page_y@Base 2.5.3
++ webkit_dom_ui_event_get_type@Base 2.5.3
++ webkit_dom_ui_event_get_view@Base 2.5.3
++ (optional)webkit_dom_ui_event_get_which@Base 2.5.3
++ webkit_dom_ui_event_init_ui_event@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_bad_input@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_custom_error@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_pattern_mismatch@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_range_overflow@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_range_underflow@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_step_mismatch@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_too_long@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_type@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_type_mismatch@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_valid@Base 2.5.3
++ (optional)webkit_dom_validity_state_get_value_missing@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_corrupted_video_frames@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_creation_time@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_dropped_video_frames@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_total_frame_delay@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_total_video_frames@Base 2.5.3
++ (optional)webkit_dom_video_playback_quality_get_type@Base 2.5.3
++ (optional)webkit_dom_video_track_get_id@Base 2.5.3
++ (optional)webkit_dom_video_track_get_kind@Base 2.5.3
++ (optional)webkit_dom_video_track_get_label@Base 2.5.3
++ (optional)webkit_dom_video_track_get_language@Base 2.5.3
++ (optional)webkit_dom_video_track_get_selected@Base 2.5.3
++ (optional)webkit_dom_video_track_get_type@Base 2.5.3
++ (optional)webkit_dom_video_track_list_get_length@Base 2.5.3
++ (optional)webkit_dom_video_track_list_get_selected_index@Base 2.5.3
++ (optional)webkit_dom_video_track_list_get_track_by_id@Base 2.5.3
++ (optional)webkit_dom_video_track_list_get_type@Base 2.5.3
++ (optional)webkit_dom_video_track_list_item@Base 2.5.3
++ (optional)webkit_dom_video_track_set_selected@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_align@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_cue_as_html@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_line@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_position@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_size@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_snap_to_lines@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_text@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_type@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_get_vertical@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_align@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_line@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_position@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_size@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_snap_to_lines@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_text@Base 2.5.3
++ (optional)webkit_dom_vtt_cue_set_vertical@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_content@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_first_empty_region_index@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_name@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_overset@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_regions@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_regions_by_content@Base 2.5.3
++ (optional)webkit_dom_webkit_named_flow_get_type@Base 2.5.3
++ (optional)webkit_dom_webkit_point_get_type@Base 2.5.3
++ (optional)webkit_dom_webkit_point_get_x@Base 2.5.3
++ (optional)webkit_dom_webkit_point_get_y@Base 2.5.3
++ (optional)webkit_dom_webkit_point_set_x@Base 2.5.3
++ (optional)webkit_dom_webkit_point_set_y@Base 2.5.3
++ (optional)webkit_dom_wheel_event_get_delta_mode@Base 2.5.3
++ (optional)webkit_dom_wheel_event_get_delta_x@Base 2.5.3
++ (optional)webkit_dom_wheel_event_get_delta_y@Base 2.5.3
++ (optional)webkit_dom_wheel_event_get_delta_z@Base 2.5.3
++ webkit_dom_wheel_event_get_type@Base 2.5.3
++ (optional)webkit_dom_wheel_event_get_webkit_direction_inverted_from_device@Base 2.5.3
++ webkit_dom_wheel_event_get_wheel_delta@Base 2.5.3
++ webkit_dom_wheel_event_get_wheel_delta_x@Base 2.5.3
++ webkit_dom_wheel_event_get_wheel_delta_y@Base 2.5.3
++ webkit_dom_wheel_event_init_wheel_event@Base 2.5.3
++ webkit_dom_xpath_expression_evaluate@Base 2.5.3
++ webkit_dom_xpath_expression_get_type@Base 2.5.3
++ webkit_dom_xpath_ns_resolver_get_type@Base 2.5.3
++ webkit_dom_xpath_ns_resolver_lookup_namespace_uri@Base 2.5.3
++ webkit_dom_xpath_result_get_boolean_value@Base 2.5.3
++ webkit_dom_xpath_result_get_invalid_iterator_state@Base 2.5.3
++ webkit_dom_xpath_result_get_number_value@Base 2.5.3
++ webkit_dom_xpath_result_get_result_type@Base 2.5.3
++ webkit_dom_xpath_result_get_single_node_value@Base 2.5.3
++ webkit_dom_xpath_result_get_snapshot_length@Base 2.5.3
++ webkit_dom_xpath_result_get_string_value@Base 2.5.3
++ webkit_dom_xpath_result_get_type@Base 2.5.3
++ webkit_dom_xpath_result_iterate_next@Base 2.5.3
++ webkit_dom_xpath_result_snapshot_item@Base 2.5.3
++ webkit_download_cancel@Base 2.5.3
++ webkit_download_error_get_type@Base 2.5.3
++ webkit_download_error_quark@Base 2.5.3
++ webkit_download_get_allow_overwrite@Base 2.6.0
++ webkit_download_get_destination@Base 2.5.3
++ webkit_download_get_elapsed_time@Base 2.5.3
++ webkit_download_get_estimated_progress@Base 2.5.3
++ webkit_download_get_received_data_length@Base 2.5.3
++ webkit_download_get_request@Base 2.5.3
++ webkit_download_get_response@Base 2.5.3
++ webkit_download_get_type@Base 2.5.3
++ webkit_download_get_web_view@Base 2.5.3
++ webkit_download_set_allow_overwrite@Base 2.6.0
++ webkit_download_set_destination@Base 2.5.3
++ webkit_favicon_database_clear@Base 2.5.3
++ webkit_favicon_database_error_get_type@Base 2.5.3
++ webkit_favicon_database_error_quark@Base 2.5.3
++ webkit_favicon_database_get_favicon@Base 2.5.3
++ webkit_favicon_database_get_favicon_finish@Base 2.5.3
++ webkit_favicon_database_get_favicon_uri@Base 2.5.3
++ webkit_favicon_database_get_type@Base 2.5.3
++ webkit_file_chooser_request_cancel@Base 2.5.3
++ webkit_file_chooser_request_get_mime_types@Base 2.5.3
++ webkit_file_chooser_request_get_mime_types_filter@Base 2.5.3
++ webkit_file_chooser_request_get_select_multiple@Base 2.5.3
++ webkit_file_chooser_request_get_selected_files@Base 2.5.3
++ webkit_file_chooser_request_get_type@Base 2.5.3
++ webkit_file_chooser_request_select_files@Base 2.5.3
++ webkit_find_controller_count_matches@Base 2.5.3
++ webkit_find_controller_get_max_match_count@Base 2.5.3
++ webkit_find_controller_get_options@Base 2.5.3
++ webkit_find_controller_get_search_text@Base 2.5.3
++ webkit_find_controller_get_type@Base 2.5.3
++ webkit_find_controller_get_web_view@Base 2.5.3
++ webkit_find_controller_search@Base 2.5.3
++ webkit_find_controller_search_finish@Base 2.5.3
++ webkit_find_controller_search_next@Base 2.5.3
++ webkit_find_controller_search_previous@Base 2.5.3
++ webkit_find_options_get_type@Base 2.5.3
++ webkit_form_submission_request_get_text_fields@Base 2.5.3
++ webkit_form_submission_request_get_type@Base 2.5.3
++ webkit_form_submission_request_submit@Base 2.5.3
++ webkit_frame_get_javascript_context_for_script_world@Base 2.5.3
++ webkit_frame_get_javascript_global_context@Base 2.5.3
++ webkit_frame_get_type@Base 2.5.3
++ webkit_frame_get_uri@Base 2.5.3
++ webkit_frame_is_main_frame@Base 2.5.3
++ webkit_geolocation_permission_request_get_type@Base 2.5.3
++ webkit_get_major_version@Base 2.5.3
++ webkit_get_micro_version@Base 2.5.3
++ webkit_get_minor_version@Base 2.5.3
++ webkit_hit_test_result_context_get_type@Base 2.5.3
++ webkit_hit_test_result_context_is_editable@Base 2.5.3
++ webkit_hit_test_result_context_is_image@Base 2.5.3
++ webkit_hit_test_result_context_is_link@Base 2.5.3
++ webkit_hit_test_result_context_is_media@Base 2.5.3
++ webkit_hit_test_result_context_is_scrollbar@Base 2.5.3
++ webkit_hit_test_result_get_context@Base 2.5.3
++ webkit_hit_test_result_get_image_uri@Base 2.5.3
++ webkit_hit_test_result_get_link_label@Base 2.5.3
++ webkit_hit_test_result_get_link_title@Base 2.5.3
++ webkit_hit_test_result_get_link_uri@Base 2.5.3
++ webkit_hit_test_result_get_media_uri@Base 2.5.3
++ webkit_hit_test_result_get_type@Base 2.5.3
++ webkit_insecure_content_event_get_type@Base 2.5.3
++ webkit_javascript_error_get_type@Base 2.5.3
++ webkit_javascript_error_quark@Base 2.5.3
++ webkit_javascript_result_get_global_context@Base 2.5.3
++ webkit_javascript_result_get_type@Base 2.5.3
++ webkit_javascript_result_get_value@Base 2.5.3
++ webkit_javascript_result_ref@Base 2.5.3
++ webkit_javascript_result_unref@Base 2.5.3
++ webkit_load_event_get_type@Base 2.5.3
++ webkit_marshal_BOOLEAN__BOXED@Base 2.5.3
++ webkit_marshal_BOOLEAN__BOXED_STRING@Base 2.5.3
++ webkit_marshal_BOOLEAN__ENUM_STRING_POINTER@Base 2.5.3
++ webkit_marshal_BOOLEAN__OBJECT@Base 2.5.3
++ webkit_marshal_BOOLEAN__OBJECT_BOXED_OBJECT@Base 2.5.3
++ webkit_marshal_BOOLEAN__OBJECT_ENUM@Base 2.5.3
++ webkit_marshal_BOOLEAN__OBJECT_OBJECT@Base 2.5.3
++ webkit_marshal_BOOLEAN__STRING@Base 2.5.3
++ webkit_marshal_BOOLEAN__VOID@Base 2.5.3
++ webkit_marshal_OBJECT__VOID@Base 2.5.3
++ webkit_marshal_VOID__OBJECT_OBJECT@Base 2.5.3
++ webkit_marshal_VOID__OBJECT_POINTER@Base 2.5.3
++ webkit_marshal_VOID__OBJECT_UINT@Base 2.5.3
++ webkit_marshal_VOID__STRING_STRING@Base 2.5.3
++ webkit_marshal_VOID__UINT64@Base 2.5.3
++ webkit_mime_info_get_description@Base 2.5.3
++ webkit_mime_info_get_extensions@Base 2.5.3
++ webkit_mime_info_get_mime_type@Base 2.5.3
++ webkit_mime_info_get_type@Base 2.5.3
++ webkit_mime_info_ref@Base 2.5.3
++ webkit_mime_info_unref@Base 2.5.3
++ webkit_navigation_action_copy@Base 2.5.3
++ webkit_navigation_action_free@Base 2.5.3
++ webkit_navigation_action_get_modifiers@Base 2.5.3
++ webkit_navigation_action_get_mouse_button@Base 2.5.3
++ webkit_navigation_action_get_navigation_type@Base 2.5.3
++ webkit_navigation_action_get_request@Base 2.5.3
++ webkit_navigation_action_get_type@Base 2.5.3
++ webkit_navigation_action_is_user_gesture@Base 2.5.3
++ webkit_navigation_policy_decision_get_frame_name@Base 2.5.3
++ webkit_navigation_policy_decision_get_modifiers@Base 2.5.3
++ webkit_navigation_policy_decision_get_mouse_button@Base 2.5.3
++ webkit_navigation_policy_decision_get_navigation_type@Base 2.5.3
++ webkit_navigation_policy_decision_get_request@Base 2.5.3
++ webkit_navigation_policy_decision_get_type@Base 2.5.3
++ webkit_navigation_type_get_type@Base 2.5.3
++ webkit_network_error_get_type@Base 2.5.3
++ webkit_network_error_quark@Base 2.5.3
++ webkit_permission_request_allow@Base 2.5.3
++ webkit_permission_request_deny@Base 2.5.3
++ webkit_permission_request_get_type@Base 2.5.3
++ webkit_plugin_error_get_type@Base 2.5.3
++ webkit_plugin_error_quark@Base 2.5.3
++ webkit_plugin_get_description@Base 2.5.3
++ webkit_plugin_get_mime_info_list@Base 2.5.3
++ webkit_plugin_get_name@Base 2.5.3
++ webkit_plugin_get_path@Base 2.5.3
++ webkit_plugin_get_type@Base 2.5.3
++ webkit_policy_decision_download@Base 2.5.3
++ webkit_policy_decision_get_type@Base 2.5.3
++ webkit_policy_decision_ignore@Base 2.5.3
++ webkit_policy_decision_type_get_type@Base 2.5.3
++ webkit_policy_decision_use@Base 2.5.3
++ webkit_policy_error_get_type@Base 2.5.3
++ webkit_policy_error_quark@Base 2.5.3
++ webkit_print_error_get_type@Base 2.5.3
++ webkit_print_error_quark@Base 2.5.3
++ webkit_print_operation_get_page_setup@Base 2.5.3
++ webkit_print_operation_get_print_settings@Base 2.5.3
++ webkit_print_operation_get_type@Base 2.5.3
++ webkit_print_operation_new@Base 2.5.3
++ webkit_print_operation_print@Base 2.5.3
++ webkit_print_operation_response_get_type@Base 2.5.3
++ webkit_print_operation_run_dialog@Base 2.5.3
++ webkit_print_operation_set_page_setup@Base 2.5.3
++ webkit_print_operation_set_print_settings@Base 2.5.3
++ webkit_process_model_get_type@Base 2.5.3
++ webkit_response_policy_decision_get_request@Base 2.5.3
++ webkit_response_policy_decision_get_response@Base 2.5.3
++ webkit_response_policy_decision_get_type@Base 2.5.3
++ webkit_response_policy_decision_is_mime_type_supported@Base 2.5.3
++ webkit_save_mode_get_type@Base 2.5.3
++ webkit_script_dialog_confirm_set_confirmed@Base 2.5.3
++ webkit_script_dialog_get_dialog_type@Base 2.5.3
++ webkit_script_dialog_get_message@Base 2.5.3
++ webkit_script_dialog_get_type@Base 2.5.3
++ webkit_script_dialog_prompt_get_default_text@Base 2.5.3
++ webkit_script_dialog_prompt_set_text@Base 2.5.3
++ webkit_script_dialog_type_get_type@Base 2.5.3
++ webkit_script_world_get_default@Base 2.5.3
++ webkit_script_world_get_type@Base 2.5.3
++ webkit_script_world_new@Base 2.5.3
++ webkit_security_manager_get_type@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_cors_enabled@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_display_isolated@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_empty_document@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_local@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_no_access@Base 2.5.3
++ webkit_security_manager_register_uri_scheme_as_secure@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_cors_enabled@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_display_isolated@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_empty_document@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_local@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_no_access@Base 2.5.3
++ webkit_security_manager_uri_scheme_is_secure@Base 2.5.3
++ webkit_settings_get_allow_modal_dialogs@Base 2.5.3
++ webkit_settings_get_auto_load_images@Base 2.5.3
++ webkit_settings_get_cursive_font_family@Base 2.5.3
++ webkit_settings_get_default_charset@Base 2.5.3
++ webkit_settings_get_default_font_family@Base 2.5.3
++ webkit_settings_get_default_font_size@Base 2.5.3
++ webkit_settings_get_default_monospace_font_size@Base 2.5.3
++ webkit_settings_get_draw_compositing_indicators@Base 2.5.3
++ webkit_settings_get_enable_accelerated_2d_canvas@Base 2.5.3
++ webkit_settings_get_enable_caret_browsing@Base 2.5.3
++ webkit_settings_get_enable_developer_extras@Base 2.5.3
++ webkit_settings_get_enable_dns_prefetching@Base 2.5.3
++ webkit_settings_get_enable_frame_flattening@Base 2.5.3
++ webkit_settings_get_enable_fullscreen@Base 2.5.3
++ webkit_settings_get_enable_html5_database@Base 2.5.3
++ webkit_settings_get_enable_html5_local_storage@Base 2.5.3
++ webkit_settings_get_enable_hyperlink_auditing@Base 2.5.3
++ webkit_settings_get_enable_java@Base 2.5.3
++ webkit_settings_get_enable_javascript@Base 2.5.3
++ webkit_settings_get_enable_media_stream@Base 2.5.3
++ webkit_settings_get_enable_mediasource@Base 2.5.3
++ webkit_settings_get_enable_offline_web_application_cache@Base 2.5.3
++ webkit_settings_get_enable_page_cache@Base 2.5.3
++ webkit_settings_get_enable_plugins@Base 2.5.3
++ webkit_settings_get_enable_private_browsing@Base 2.5.3
++ webkit_settings_get_enable_resizable_text_areas@Base 2.5.3
++ webkit_settings_get_enable_site_specific_quirks@Base 2.5.3
++ webkit_settings_get_enable_smooth_scrolling@Base 2.5.3
++ webkit_settings_get_enable_spatial_navigation@Base 2.5.3
++ webkit_settings_get_enable_tabs_to_links@Base 2.5.3
++ webkit_settings_get_enable_webaudio@Base 2.5.3
++ webkit_settings_get_enable_webgl@Base 2.5.3
++ webkit_settings_get_enable_write_console_messages_to_stdout@Base 2.5.3
++ webkit_settings_get_enable_xss_auditor@Base 2.5.3
++ webkit_settings_get_fantasy_font_family@Base 2.5.3
++ webkit_settings_get_javascript_can_access_clipboard@Base 2.5.3
++ webkit_settings_get_javascript_can_open_windows_automatically@Base 2.5.3
++ webkit_settings_get_load_icons_ignoring_image_load_setting@Base 2.5.3
++ webkit_settings_get_media_playback_allows_inline@Base 2.5.3
++ webkit_settings_get_media_playback_requires_user_gesture@Base 2.5.3
++ webkit_settings_get_minimum_font_size@Base 2.5.3
++ webkit_settings_get_monospace_font_family@Base 2.5.3
++ webkit_settings_get_pictograph_font_family@Base 2.5.3
++ webkit_settings_get_print_backgrounds@Base 2.5.3
++ webkit_settings_get_sans_serif_font_family@Base 2.5.3
++ webkit_settings_get_serif_font_family@Base 2.5.3
++ webkit_settings_get_type@Base 2.5.3
++ webkit_settings_get_user_agent@Base 2.5.3
++ webkit_settings_get_zoom_text_only@Base 2.5.3
++ webkit_settings_new@Base 2.5.3
++ webkit_settings_new_with_settings@Base 2.5.3
++ webkit_settings_set_allow_modal_dialogs@Base 2.5.3
++ webkit_settings_set_auto_load_images@Base 2.5.3
++ webkit_settings_set_cursive_font_family@Base 2.5.3
++ webkit_settings_set_default_charset@Base 2.5.3
++ webkit_settings_set_default_font_family@Base 2.5.3
++ webkit_settings_set_default_font_size@Base 2.5.3
++ webkit_settings_set_default_monospace_font_size@Base 2.5.3
++ webkit_settings_set_draw_compositing_indicators@Base 2.5.3
++ webkit_settings_set_enable_accelerated_2d_canvas@Base 2.5.3
++ webkit_settings_set_enable_caret_browsing@Base 2.5.3
++ webkit_settings_set_enable_developer_extras@Base 2.5.3
++ webkit_settings_set_enable_dns_prefetching@Base 2.5.3
++ webkit_settings_set_enable_frame_flattening@Base 2.5.3
++ webkit_settings_set_enable_fullscreen@Base 2.5.3
++ webkit_settings_set_enable_html5_database@Base 2.5.3
++ webkit_settings_set_enable_html5_local_storage@Base 2.5.3
++ webkit_settings_set_enable_hyperlink_auditing@Base 2.5.3
++ webkit_settings_set_enable_java@Base 2.5.3
++ webkit_settings_set_enable_javascript@Base 2.5.3
++ webkit_settings_set_enable_media_stream@Base 2.5.3
++ webkit_settings_set_enable_mediasource@Base 2.5.3
++ webkit_settings_set_enable_offline_web_application_cache@Base 2.5.3
++ webkit_settings_set_enable_page_cache@Base 2.5.3
++ webkit_settings_set_enable_plugins@Base 2.5.3
++ webkit_settings_set_enable_private_browsing@Base 2.5.3
++ webkit_settings_set_enable_resizable_text_areas@Base 2.5.3
++ webkit_settings_set_enable_site_specific_quirks@Base 2.5.3
++ webkit_settings_set_enable_smooth_scrolling@Base 2.5.3
++ webkit_settings_set_enable_spatial_navigation@Base 2.5.3
++ webkit_settings_set_enable_tabs_to_links@Base 2.5.3
++ webkit_settings_set_enable_webaudio@Base 2.5.3
++ webkit_settings_set_enable_webgl@Base 2.5.3
++ webkit_settings_set_enable_write_console_messages_to_stdout@Base 2.5.3
++ webkit_settings_set_enable_xss_auditor@Base 2.5.3
++ webkit_settings_set_fantasy_font_family@Base 2.5.3
++ webkit_settings_set_javascript_can_access_clipboard@Base 2.5.3
++ webkit_settings_set_javascript_can_open_windows_automatically@Base 2.5.3
++ webkit_settings_set_load_icons_ignoring_image_load_setting@Base 2.5.3
++ webkit_settings_set_media_playback_allows_inline@Base 2.5.3
++ webkit_settings_set_media_playback_requires_user_gesture@Base 2.5.3
++ webkit_settings_set_minimum_font_size@Base 2.5.3
++ webkit_settings_set_monospace_font_family@Base 2.5.3
++ webkit_settings_set_pictograph_font_family@Base 2.5.3
++ webkit_settings_set_print_backgrounds@Base 2.5.3
++ webkit_settings_set_sans_serif_font_family@Base 2.5.3
++ webkit_settings_set_serif_font_family@Base 2.5.3
++ webkit_settings_set_user_agent@Base 2.5.3
++ webkit_settings_set_user_agent_with_application_details@Base 2.5.3
++ webkit_settings_set_zoom_text_only@Base 2.5.3
++ webkit_snapshot_error_get_type@Base 2.5.3
++ webkit_snapshot_error_quark@Base 2.5.3
++ webkit_snapshot_options_get_type@Base 2.5.3
++ webkit_snapshot_region_get_type@Base 2.5.3
++ (optional)webkit_soup_cookie_jar_sqlite_get_type@Base 2.5.3
++ (optional)webkit_soup_request_generic_get_type@Base 2.5.3
++ (optional)webkit_soup_request_input_stream_get_type@Base 2.5.3
++ webkit_tls_errors_policy_get_type@Base 2.5.3
++ webkit_uri_request_get_http_headers@Base 2.5.3
++ webkit_uri_request_get_type@Base 2.5.3
++ webkit_uri_request_get_uri@Base 2.5.3
++ webkit_uri_request_new@Base 2.5.3
++ webkit_uri_request_set_uri@Base 2.5.3
++ webkit_uri_response_get_content_length@Base 2.5.3
++ webkit_uri_response_get_http_headers@Base 2.6.0
++ webkit_uri_response_get_mime_type@Base 2.5.3
++ webkit_uri_response_get_status_code@Base 2.5.3
++ webkit_uri_response_get_suggested_filename@Base 2.5.3
++ webkit_uri_response_get_type@Base 2.5.3
++ webkit_uri_response_get_uri@Base 2.5.3
++ webkit_uri_scheme_request_finish@Base 2.5.3
++ webkit_uri_scheme_request_finish_error@Base 2.5.3
++ webkit_uri_scheme_request_get_path@Base 2.5.3
++ webkit_uri_scheme_request_get_scheme@Base 2.5.3
++ webkit_uri_scheme_request_get_type@Base 2.5.3
++ webkit_uri_scheme_request_get_uri@Base 2.5.3
++ webkit_uri_scheme_request_get_web_view@Base 2.5.3
++ webkit_user_content_injected_frames_get_type@Base 2.5.3
++ webkit_user_content_manager_add_script@Base 2.5.3
++ webkit_user_content_manager_add_style_sheet@Base 2.5.3
++ webkit_user_content_manager_get_type@Base 2.5.3
++ webkit_user_content_manager_new@Base 2.5.3
++ webkit_user_content_manager_remove_all_scripts@Base 2.5.3
++ webkit_user_content_manager_remove_all_style_sheets@Base 2.5.3
++ webkit_user_script_get_type@Base 2.5.3
++ webkit_user_script_injection_time_get_type@Base 2.5.3
++ webkit_user_script_new@Base 2.5.3
++ webkit_user_script_ref@Base 2.5.3
++ webkit_user_script_unref@Base 2.5.3
++ webkit_user_style_level_get_type@Base 2.5.3
++ webkit_user_style_sheet_get_type@Base 2.5.3
++ webkit_user_style_sheet_new@Base 2.5.3
++ webkit_user_style_sheet_ref@Base 2.5.3
++ webkit_user_style_sheet_unref@Base 2.5.3
++ webkit_web_context_allow_tls_certificate_for_host@Base 2.5.3
++ webkit_web_context_clear_cache@Base 2.5.3
++ webkit_web_context_download_uri@Base 2.5.3
++ webkit_web_context_get_cache_model@Base 2.5.3
++ webkit_web_context_get_cookie_manager@Base 2.5.3
++ webkit_web_context_get_default@Base 2.5.3
++ webkit_web_context_get_favicon_database@Base 2.5.3
++ webkit_web_context_get_favicon_database_directory@Base 2.5.3
++ webkit_web_context_get_plugins@Base 2.5.3
++ webkit_web_context_get_plugins_finish@Base 2.5.3
++ webkit_web_context_get_process_model@Base 2.5.3
++ webkit_web_context_get_security_manager@Base 2.5.3
++ webkit_web_context_get_spell_checking_enabled@Base 2.5.3
++ webkit_web_context_get_spell_checking_languages@Base 2.5.3
++ webkit_web_context_get_tls_errors_policy@Base 2.5.3
++ webkit_web_context_get_type@Base 2.5.3
++ webkit_web_context_prefetch_dns@Base 2.5.3
++ webkit_web_context_register_uri_scheme@Base 2.5.3
++ webkit_web_context_set_additional_plugins_directory@Base 2.5.3
++ webkit_web_context_set_cache_model@Base 2.5.3
++ webkit_web_context_set_disk_cache_directory@Base 2.5.3
++ webkit_web_context_set_favicon_database_directory@Base 2.5.3
++ webkit_web_context_set_preferred_languages@Base 2.5.3
++ webkit_web_context_set_process_model@Base 2.5.3
++ webkit_web_context_set_spell_checking_enabled@Base 2.5.3
++ webkit_web_context_set_spell_checking_languages@Base 2.5.3
++ webkit_web_context_set_tls_errors_policy@Base 2.5.3
++ webkit_web_context_set_web_extensions_directory@Base 2.5.3
++ webkit_web_context_set_web_extensions_initialization_user_data@Base 2.5.3
++ webkit_web_extension_get_page@Base 2.5.3
++ webkit_web_extension_get_type@Base 2.5.3
++ webkit_web_inspector_attach@Base 2.5.3
++ webkit_web_inspector_close@Base 2.5.3
++ webkit_web_inspector_detach@Base 2.5.3
++ webkit_web_inspector_get_attached_height@Base 2.5.3
++ webkit_web_inspector_get_inspected_uri@Base 2.5.3
++ webkit_web_inspector_get_type@Base 2.5.3
++ webkit_web_inspector_get_web_view@Base 2.5.3
++ webkit_web_inspector_is_attached@Base 2.5.3
++ webkit_web_inspector_show@Base 2.5.3
++ webkit_web_page_get_dom_document@Base 2.5.3
++ webkit_web_page_get_id@Base 2.5.3
++ webkit_web_page_get_main_frame@Base 2.5.3
++ webkit_web_page_get_type@Base 2.5.3
++ webkit_web_page_get_uri@Base 2.5.3
++ webkit_web_resource_get_data@Base 2.5.3
++ webkit_web_resource_get_data_finish@Base 2.5.3
++ webkit_web_resource_get_response@Base 2.5.3
++ webkit_web_resource_get_type@Base 2.5.3
++ webkit_web_resource_get_uri@Base 2.5.3
++ webkit_web_src_get_type@Base 2.5.3
++ webkit_web_view_base_accessible_get_type@Base 2.5.3
++ webkit_web_view_base_get_type@Base 2.5.3
++ webkit_web_view_can_execute_editing_command@Base 2.5.3
++ webkit_web_view_can_execute_editing_command_finish@Base 2.5.3
++ webkit_web_view_can_go_back@Base 2.5.3
++ webkit_web_view_can_go_forward@Base 2.5.3
++ webkit_web_view_can_show_mime_type@Base 2.5.3
++ webkit_web_view_download_uri@Base 2.5.3
++ webkit_web_view_execute_editing_command@Base 2.5.3
++ webkit_web_view_get_back_forward_list@Base 2.5.3
++ webkit_web_view_get_context@Base 2.5.3
++ webkit_web_view_get_custom_charset@Base 2.5.3
++ webkit_web_view_get_estimated_load_progress@Base 2.5.3
++ webkit_web_view_get_favicon@Base 2.5.3
++ webkit_web_view_get_find_controller@Base 2.5.3
++ webkit_web_view_get_inspector@Base 2.5.3
++ webkit_web_view_get_javascript_global_context@Base 2.5.3
++ webkit_web_view_get_main_resource@Base 2.5.3
++ webkit_web_view_get_page_id@Base 2.5.3
++ webkit_web_view_get_settings@Base 2.5.3
++ webkit_web_view_get_snapshot@Base 2.5.3
++ webkit_web_view_get_snapshot_finish@Base 2.5.3
++ webkit_web_view_get_title@Base 2.5.3
++ webkit_web_view_get_tls_info@Base 2.5.3
++ webkit_web_view_get_type@Base 2.5.3
++ webkit_web_view_get_uri@Base 2.5.3
++ webkit_web_view_get_user_content_manager@Base 2.5.3
++ webkit_web_view_get_window_properties@Base 2.5.3
++ webkit_web_view_get_zoom_level@Base 2.5.3
++ webkit_web_view_go_back@Base 2.5.3
++ webkit_web_view_go_forward@Base 2.5.3
++ webkit_web_view_go_to_back_forward_list_item@Base 2.5.3
++ webkit_web_view_is_loading@Base 2.5.3
++ webkit_web_view_load_alternate_html@Base 2.5.3
++ webkit_web_view_load_bytes@Base 2.5.3
++ webkit_web_view_load_html@Base 2.5.3
++ webkit_web_view_load_plain_text@Base 2.5.3
++ webkit_web_view_load_request@Base 2.5.3
++ webkit_web_view_load_uri@Base 2.5.3
++ webkit_web_view_new@Base 2.5.3
++ webkit_web_view_new_with_context@Base 2.5.3
++ webkit_web_view_new_with_related_view@Base 2.5.3
++ webkit_web_view_new_with_settings@Base 2.5.3
++ webkit_web_view_new_with_user_content_manager@Base 2.5.3
++ webkit_web_view_reload@Base 2.5.3
++ webkit_web_view_reload_bypass_cache@Base 2.5.3
++ webkit_web_view_run_javascript@Base 2.5.3
++ webkit_web_view_run_javascript_finish@Base 2.5.3
++ webkit_web_view_run_javascript_from_gresource@Base 2.5.3
++ webkit_web_view_run_javascript_from_gresource_finish@Base 2.5.3
++ webkit_web_view_save@Base 2.5.3
++ webkit_web_view_save_finish@Base 2.5.3
++ webkit_web_view_save_to_file@Base 2.5.3
++ webkit_web_view_save_to_file_finish@Base 2.5.3
++ webkit_web_view_set_custom_charset@Base 2.5.3
++ webkit_web_view_set_settings@Base 2.5.3
++ webkit_web_view_set_zoom_level@Base 2.5.3
++ webkit_web_view_stop_loading@Base 2.5.3
++ webkit_window_properties_get_fullscreen@Base 2.5.3
++ webkit_window_properties_get_geometry@Base 2.5.3
++ webkit_window_properties_get_locationbar_visible@Base 2.5.3
++ webkit_window_properties_get_menubar_visible@Base 2.5.3
++ webkit_window_properties_get_resizable@Base 2.5.3
++ webkit_window_properties_get_scrollbars_visible@Base 2.5.3
++ webkit_window_properties_get_statusbar_visible@Base 2.5.3
++ webkit_window_properties_get_toolbar_visible@Base 2.5.3
++ webkit_window_properties_get_type@Base 2.5.3
--- /dev/null
--- /dev/null
++usr/include/webkitgtk-4.0/webkit2
++usr/include/webkitgtk-4.0/webkitdom
++usr/lib/*/libwebkit2gtk-4.0.so
++usr/lib/*/pkgconfig/webkit2gtk-4.0.pc
++usr/lib/*/pkgconfig/webkit2gtk-web-extension-4.0.pc
++usr/share/gir-1.0/WebKit2-4.0.gir usr/share/gir-1.0/
++usr/share/gir-1.0/WebKit2WebExtension-4.0.gir usr/share/gir-1.0/
--- /dev/null
--- /dev/null
++Document: webkit2gtk
++Title: WebKit2GTK+ reference manual
++Author: WebKitGTK+ development team
++Abstract: This manual contains the developer documentation of
++ WebKitGTK+, a web content engine, designed to be embedded in other
++ applications, such as mail readers, or web browsers.
++ .
++ It is able to display content such as HTML, SVG, XML, and others. It
++ also supports DOM, XMLHttpRequest, XSLT, CSS, JavaScript/ECMAScript
++ and more.
++Section: Programming
++
++Format: HTML
++Index: /usr/share/doc/libwebkit2gtk-4.0-doc/html/index.html
++Files: /usr/share/doc/libwebkit2gtk-4.0-doc/html/*.html
--- /dev/null
--- /dev/null
++Documentation/webkit2gtk/html/* usr/share/doc/libwebkit2gtk-4.0-doc/html/
--- /dev/null
--- /dev/null
++usr/share/doc/libwebkit2gtk-4.0-doc/html usr/share/gtk-doc/html/webkit2gtk-4.0
++usr/share/doc/libwebkit2gtk-4.0-doc/html/webkit2gtk.devhelp2.gz usr/share/doc/libwebkit2gtk-4.0-doc/html/webkit2gtk-4.0.devhelp2.gz
--- /dev/null
--- /dev/null
++From: Joanmarie Diggs <jdiggs@igalia.com>
++Subject: Accessible values are no longer accessible via AT-SPI2
++Origin: http://trac.webkit.org/changeset/176193
++Index: webkitgtk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceValue.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceValue.cpp
+++++ webkitgtk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceValue.cpp
++@@ -114,7 +114,7 @@ static AtkRange* webkitAccessibleGetRang
++ gchar* valueDescription = g_strdup_printf("%s", coreObject->valueDescription().utf8().data());
++ return atk_range_new(minValue, maxValue, valueDescription);
++ }
++-#else
+++#endif
++ static void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue)
++ {
++ g_return_if_fail(ATK_VALUE(value));
++@@ -184,7 +184,6 @@ static void webkitAccessibleValueGetMini
++ AccessibilityObject* coreObject = core(value);
++ g_value_set_float(gValue, webkitAccessibleGetIncrementValue(coreObject));
++ }
++-#endif
++
++ void webkitAccessibleValueInterfaceInit(AtkValueIface* iface)
++ {
++@@ -193,13 +192,12 @@ void webkitAccessibleValueInterfaceInit(
++ iface->get_increment = webkitAccessibleGetIncrement;
++ iface->set_value = webkitAccessibleSetValue;
++ iface->get_range = webkitAccessibleGetRange;
++-#else
+++#endif
++ iface->get_current_value = webkitAccessibleValueGetCurrentValue;
++ iface->get_maximum_value = webkitAccessibleValueGetMaximumValue;
++ iface->get_minimum_value = webkitAccessibleValueGetMinimumValue;
++ iface->set_current_value = webkitAccessibleValueSetCurrentValue;
++ iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement;
++-#endif
++ }
++
++ #endif
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Some architectures need to add -latomic explicitly
++Index: webkitgtk/Source/cmake/OptionsCommon.cmake
++===================================================================
++--- webkitgtk.orig/Source/cmake/OptionsCommon.cmake
+++++ webkitgtk/Source/cmake/OptionsCommon.cmake
++@@ -69,3 +69,10 @@ endif ()
++ # files must be used to deal with very long linker command lines.
++ # See https://bugs.webkit.org/show_bug.cgi?id=129771
++ set(CMAKE_NINJA_FORCE_RESPONSE_FILE 1)
+++
+++try_compile(ATOMIC_BUILD_SUCCEEDED ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/atomic.cpp)
+++if (NOT ATOMIC_BUILD_SUCCEEDED)
+++ message(STATUS "Adding -latomic to the linker flags")
+++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--push-state,--no-as-needed,-latomic,--pop-state")
+++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--push-state,--no-as-needed,-latomic,--pop-state")
+++endif()
++Index: webkitgtk/atomic.cpp
++===================================================================
++--- /dev/null
+++++ webkitgtk/atomic.cpp
++@@ -0,0 +1,7 @@
+++#include <atomic>
+++
+++int main() {
+++ std::atomic<int64_t> i(0);
+++ i++;
+++ return 0;
+++}
--- /dev/null
--- /dev/null
++From: Joanmarie Diggs <jdiggs@igalia.com>
++Subject: Fix accessible focus events in non-focused combo boxes
++Origin: http://trac.webkit.org/changeset/176177, http://trac.webkit.org/changeset/176178
++Index: webkitgtk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp
+++++ webkitgtk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp
++@@ -175,8 +175,12 @@ static void notifyChildrenSelectionChang
++ if (axItem) {
++ bool isSelected = item->isSelected();
++ atk_object_notify_state_change(axItem, ATK_STATE_SELECTED, isSelected);
++- g_signal_emit_by_name(axItem, "focus-event", isSelected);
++- atk_object_notify_state_change(axItem, ATK_STATE_FOCUSED, isSelected);
+++ // When the selection changes in a collapsed widget such as a combo box
+++ // whose child menu is not showing, that collapsed widget retains focus.
+++ if (!object->isCollapsed()) {
+++ g_signal_emit_by_name(axItem, "focus-event", isSelected);
+++ atk_object_notify_state_change(axItem, ATK_STATE_FOCUSED, isSelected);
+++ }
++ }
++
++ // Update pointers to the previously involved objects.
++@@ -199,7 +203,8 @@ void AXObjectCache::postPlatformNotifica
++
++ case AXSelectedChildrenChanged:
++ case AXMenuListValueChanged:
++- if (notification == AXMenuListValueChanged && coreObject->isMenuList()) {
+++ // Accessible focus claims should not be made if the associated widget is not focused.
+++ if (notification == AXMenuListValueChanged && coreObject->isMenuList() && coreObject->isFocused()) {
++ g_signal_emit_by_name(axObject, "focus-event", true);
++ atk_object_notify_state_change(axObject, ATK_STATE_FOCUSED, true);
++ }
++Index: webkitgtk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
+++++ webkitgtk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
++@@ -748,13 +748,15 @@ static AtkRole atkRole(AccessibilityObje
++
++ static AtkRole webkitAccessibleGetRole(AtkObject* object)
++ {
++- g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), ATK_ROLE_UNKNOWN);
++- returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), ATK_ROLE_UNKNOWN);
+++ // ATK_ROLE_UNKNOWN should only be applied in cases where there is a valid
+++ // WebCore accessible object for which the platform role mapping is unknown.
+++ g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), ATK_ROLE_INVALID);
+++ returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), ATK_ROLE_INVALID);
++
++ AccessibilityObject* coreObject = core(object);
++
++ if (!coreObject)
++- return ATK_ROLE_UNKNOWN;
+++ return ATK_ROLE_INVALID;
++
++ // Note: Why doesn't WebCore have a password field for this
++ if (coreObject->isPasswordField())
++Index: webkitgtk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
++===================================================================
++--- webkitgtk.orig/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
+++++ webkitgtk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
++@@ -369,6 +369,8 @@ const gchar* roleToString(AtkObject* obj
++ return "AXImage";
++ case ATK_ROLE_IMAGE_MAP:
++ return "AXImageMap";
+++ case ATK_ROLE_INVALID:
+++ return "AXInvalid";
++ case ATK_ROLE_LABEL:
++ return "AXLabel";
++ case ATK_ROLE_LINK:
++@@ -1013,9 +1015,6 @@ JSRetainPtr<JSStringRef> AccessibilityUI
++ if (!ATK_IS_OBJECT(m_element.get()))
++ return JSStringCreateWithCharacters(0, 0);
++
++- if (!atk_object_get_role(ATK_OBJECT(m_element.get())))
++- return JSStringCreateWithCharacters(0, 0);
++-
++ GUniquePtr<char> roleStringWithPrefix(g_strdup_printf("AXRole: %s", roleToString(ATK_OBJECT(m_element.get()))));
++ return JSStringCreateWithUTF8CString(roleStringWithPrefix.get());
++ }
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Check TLS errors as soon as they are set in the SoupMessage
++Bug: https://bugs.webkit.org/show_bug.cgi?id=142244
++Origin: http://trac.webkit.org/changeset/181074
++Index: webkitgtk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++++ webkitgtk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
++@@ -331,16 +331,21 @@ static bool handleUnignoredTLSErrors(Res
++ return true;
++ }
++
++-static void gotHeadersCallback(SoupMessage* message, gpointer data)
+++static void tlsErrorsChangedCallback(SoupMessage* message, GParamSpec*, gpointer data)
++ {
++ ResourceHandle* handle = static_cast<ResourceHandle*>(data);
++ if (!handle || handle->cancelledOrClientless())
++ return;
++
++- if (handleUnignoredTLSErrors(handle, message)) {
+++ if (handleUnignoredTLSErrors(handle, message))
++ handle->cancel();
+++}
+++
+++static void gotHeadersCallback(SoupMessage* message, gpointer data)
+++{
+++ ResourceHandle* handle = static_cast<ResourceHandle*>(data);
+++ if (!handle || handle->cancelledOrClientless())
++ return;
++- }
++
++ ResourceHandleInternal* d = handle->getInternal();
++
++@@ -931,6 +936,7 @@ static bool createSoupMessageForHandleAn
++ && (!request.httpBody() || request.httpBody()->isEmpty()))
++ soup_message_headers_set_content_length(soupMessage->request_headers, 0);
++
+++ g_signal_connect(d->m_soupMessage.get(), "notify::tls-errors", G_CALLBACK(tlsErrorsChangedCallback), handle);
++ g_signal_connect(d->m_soupMessage.get(), "got-headers", G_CALLBACK(gotHeadersCallback), handle);
++ g_signal_connect(d->m_soupMessage.get(), "wrote-body-data", G_CALLBACK(wroteBodyDataCallback), handle);
++
++Index: webkitgtk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
++===================================================================
++--- webkitgtk.orig/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
+++++ webkitgtk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
++@@ -129,16 +129,21 @@ static void testInsecureContent(Insecure
++ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
++ }
++
+++static bool assertIfSSLRequestProcessed = false;
+++
++ static void testTLSErrorsPolicy(SSLTest* test, gconstpointer)
++ {
++ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
++ // TLS errors are treated as transport failures by default.
++ g_assert(webkit_web_context_get_tls_errors_policy(context) == WEBKIT_TLS_ERRORS_POLICY_FAIL);
+++
+++ assertIfSSLRequestProcessed = true;
++ test->loadURI(kHttpsServer->getURIForPath("/").data());
++ test->waitUntilLoadFinished();
++ g_assert(test->m_loadFailed);
++ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
++ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+++ assertIfSSLRequestProcessed = false;
++
++ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
++ g_assert(webkit_web_context_get_tls_errors_policy(context) == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
++@@ -158,11 +163,13 @@ static void testTLSErrorsRedirect(SSLTes
++ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
++ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
++
+++ assertIfSSLRequestProcessed = true;
++ test->loadURI(kHttpsServer->getURIForPath("/redirect").data());
++ test->waitUntilLoadFinished();
++ g_assert(test->m_loadFailed);
++ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
++ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+++ assertIfSSLRequestProcessed = false;
++
++ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
++ }
++@@ -180,12 +187,14 @@ static void testTLSErrorsHTTPAuth(SSLTes
++ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
++ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
++
+++ assertIfSSLRequestProcessed = true;
++ g_signal_connect(test->m_webView, "authenticate", G_CALLBACK(webViewAuthenticationCallback), NULL);
++ test->loadURI(kHttpsServer->getURIForPath("/auth").data());
++ test->waitUntilLoadFinished();
++ g_assert(test->m_loadFailed);
++ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
++ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+++ assertIfSSLRequestProcessed = false;
++
++ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
++ }
++@@ -235,6 +244,7 @@ static void testLoadFailedWithTLSErrors(
++ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
++ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
++
+++ assertIfSSLRequestProcessed = true;
++ // The load-failed-with-tls-errors signal should be emitted when there is a TLS failure.
++ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data());
++ test->waitUntilLoadFinished();
++@@ -244,6 +254,7 @@ static void testLoadFailedWithTLSErrors(
++ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
++ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadFailedWithTLSErrors);
++ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+++ assertIfSSLRequestProcessed = false;
++
++ // Test allowing an exception for this certificate on this host.
++ webkit_web_context_allow_tls_certificate_for_host(context, test->certificate(), test->host());
++@@ -267,6 +278,8 @@ static void httpsServerCallback(SoupServ
++ return;
++ }
++
+++ g_assert(!assertIfSSLRequestProcessed);
+++
++ if (g_str_equal(path, "/")) {
++ soup_message_set_status(message, SOUP_STATUS_OK);
++ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, indexHTML, strlen(indexHTML));
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <cgarcia@igalia.com>
++Subject: Enable CSS_IMAGE_SET, required in order to display all inspector icons
++Origin: http://trac.webkit.org/changeset/173999
++Index: webkitgtk/Source/cmake/OptionsGTK.cmake
++===================================================================
++--- webkitgtk.orig/Source/cmake/OptionsGTK.cmake
+++++ webkitgtk/Source/cmake/OptionsGTK.cmake
++@@ -111,7 +111,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS3_TEXT OFF)
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_DEVICE_ADAPTATION OFF)
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_GRID_LAYOUT OFF)
++-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_IMAGE_SET OFF)
+++WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_IMAGE_SET ON)
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_REGIONS ON)
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_SELECTORS_LEVEL4 ON)
++ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CUSTOM_SCHEME_HANDLER OFF)
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Enable DFG JIT on FreeBSD and Hurd
++Bug: https://bugs.webkit.org/show_bug.cgi?id=128898
++Index: webkitgtk/Source/WTF/wtf/Platform.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/Platform.h
+++++ webkitgtk/Source/WTF/wtf/Platform.h
++@@ -713,7 +713,7 @@
++
++ #if !defined(ENABLE_DFG_JIT) && ENABLE(JIT)
++ /* Enable the DFG JIT on X86 and X86_64. */
++-#if (CPU(X86) || CPU(X86_64)) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD) || OS(WINDOWS))
+++#if (CPU(X86) || CPU(X86_64)) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD) || OS(WINDOWS) || OS(HURD))
++ #define ENABLE_DFG_JIT 1
++ #endif
++ /* Enable the DFG JIT on ARMv7. Only tested on iOS and Qt/GTK+ Linux. */
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Recursive crash at WebCore::accessibleNameForNode
++Bug: https://bugs.webkit.org/show_bug.cgi?id=139616
++Origin: http://trac.webkit.org/changeset/178359
++Index: webkitgtk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
+++++ webkitgtk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
++@@ -86,7 +86,7 @@ namespace WebCore {
++
++ using namespace HTMLNames;
++
++-static String accessibleNameForNode(Node*);
+++static String accessibleNameForNode(Node* node, Node* labelledbyNode = nullptr);
++
++ AccessibilityNodeObject::AccessibilityNodeObject(Node* node)
++ : AccessibilityObject()
++@@ -1664,6 +1664,8 @@ String AccessibilityNodeObject::textUnde
++
++ StringBuilder builder;
++ for (AccessibilityObject* child = firstChild(); child; child = child->nextSibling()) {
+++ if (mode.ignoredChildNode && child->node() == mode.ignoredChildNode)
+++ continue;
++
++ bool shouldDeriveNameFromAuthor = (mode.childrenInclusion == AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren && !child->accessibleNameDerivesFromContent());
++ if (shouldDeriveNameFromAuthor) {
++@@ -1840,7 +1842,7 @@ void AccessibilityNodeObject::colorValue
++
++ // This function implements the ARIA accessible name as described by the Mozilla
++ // ARIA Implementer's Guide.
++-static String accessibleNameForNode(Node* node)
+++static String accessibleNameForNode(Node* node, Node* labelledbyNode)
++ {
++ ASSERT(node);
++ if (!node || !node->isElementNode())
++@@ -1870,7 +1872,7 @@ static String accessibleNameForNode(Node
++ String text;
++ if (axObject) {
++ if (axObject->accessibleNameDerivesFromContent())
++- text = axObject->textUnderElement(AccessibilityTextUnderElementMode(AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren, true));
+++ text = axObject->textUnderElement(AccessibilityTextUnderElementMode(AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren, true, labelledbyNode));
++ } else
++ text = element->innerText();
++
++@@ -1889,7 +1891,7 @@ String AccessibilityNodeObject::accessib
++ StringBuilder builder;
++ unsigned size = elements.size();
++ for (unsigned i = 0; i < size; ++i)
++- appendNameToStringBuilder(builder, accessibleNameForNode(elements[i]));
+++ appendNameToStringBuilder(builder, accessibleNameForNode(elements[i], node()));
++ return builder.toString();
++ }
++
++Index: webkitgtk/Source/WebCore/accessibility/AccessibilityObject.h
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/AccessibilityObject.h
+++++ webkitgtk/Source/WebCore/accessibility/AccessibilityObject.h
++@@ -253,11 +253,13 @@ struct AccessibilityTextUnderElementMode
++
++ ChildrenInclusion childrenInclusion;
++ bool includeFocusableContent;
+++ Node* ignoredChildNode;
++
++- AccessibilityTextUnderElementMode(ChildrenInclusion c = TextUnderElementModeSkipIgnoredChildren, bool i = false)
++- : childrenInclusion(c)
++- , includeFocusableContent(i)
++- { }
+++ AccessibilityTextUnderElementMode(ChildrenInclusion c = TextUnderElementModeSkipIgnoredChildren, bool i = false, Node* ignored = nullptr)
+++ : childrenInclusion(c)
+++ , includeFocusableContent(i)
+++ , ignoredChildNode(ignored)
+++ { }
++ };
++
++ enum AccessibilityOrientation {
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Fix segfault when calling clearSelection on a detached RenderObject
++Bug: https://bugs.webkit.org/show_bug.cgi?id=140275
++Origin: http://trac.webkit.org/changeset/178360
++Index: webkitgtk/Source/WebCore/rendering/RenderBox.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/rendering/RenderBox.cpp
+++++ webkitgtk/Source/WebCore/rendering/RenderBox.cpp
++@@ -1828,6 +1828,8 @@ LayoutUnit RenderBox::containingBlockLog
++ #endif
++
++ RenderBlock* cb = containingBlock();
+++ if (!cb)
+++ return LayoutUnit();
++ return cb->availableLogicalWidth();
++ }
++
++@@ -1839,6 +1841,8 @@ LayoutUnit RenderBox::containingBlockLog
++ #endif
++
++ RenderBlock* cb = containingBlock();
+++ if (!cb)
+++ return LayoutUnit();
++ return cb->availableLogicalHeight(heightType);
++ }
++
++Index: webkitgtk/Source/WebCore/rendering/RenderView.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/rendering/RenderView.cpp
+++++ webkitgtk/Source/WebCore/rendering/RenderView.cpp
++@@ -1105,7 +1105,7 @@ void RenderView::getSelection(RenderObje
++ void RenderView::clearSelection()
++ {
++ layer()->repaintBlockSelectionGaps();
++- setSelection(0, -1, 0, -1, RepaintNewMinusOld);
+++ setSelection(nullptr, -1, nullptr, -1, RepaintNewMinusOld);
++ }
++
++ bool RenderView::printing() const
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: String(new Date(Mar 30 2014 01:00:00)) is wrong in CET
++Bug: https://bugs.webkit.org/show_bug.cgi?id=130967
++Origin: http://trac.webkit.org/changeset/175904
++Index: webkitgtk/Source/JavaScriptCore/runtime/DateConstructor.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/DateConstructor.cpp
+++++ webkitgtk/Source/JavaScriptCore/runtime/DateConstructor.cpp
++@@ -166,7 +166,7 @@ JSObject* constructDate(ExecState* exec,
++ t.setSecond(JSC::toInt32(doubleArguments[5]));
++ t.setIsDST(-1);
++ double ms = (numArgs >= 7) ? doubleArguments[6] : 0;
++- value = gregorianDateTimeToMS(vm, t, ms, false);
+++ value = gregorianDateTimeToMS(vm, t, ms, WTF::LocalTime);
++ }
++ }
++
++@@ -190,7 +190,7 @@ static EncodedJSValue JSC_HOST_CALL call
++ {
++ VM& vm = exec->vm();
++ GregorianDateTime ts;
++- msToGregorianDateTime(vm, currentTimeMS(), false, ts);
+++ msToGregorianDateTime(vm, currentTimeMS(), WTF::LocalTime, ts);
++ return JSValue::encode(jsNontrivialString(&vm, formatDateTime(ts, DateTimeFormatDateAndTime, false)));
++ }
++
++@@ -244,7 +244,7 @@ EncodedJSValue JSC_HOST_CALL dateUTC(Exe
++ t.setMinute(JSC::toInt32(doubleArguments[4]));
++ t.setSecond(JSC::toInt32(doubleArguments[5]));
++ double ms = (n >= 7) ? doubleArguments[6] : 0;
++- return JSValue::encode(jsNumber(timeClip(gregorianDateTimeToMS(exec->vm(), t, ms, true))));
+++ return JSValue::encode(jsNumber(timeClip(gregorianDateTimeToMS(exec->vm(), t, ms, WTF::UTCTime))));
++ }
++
++ } // namespace JSC
++Index: webkitgtk/Source/JavaScriptCore/runtime/DateInstance.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/DateInstance.cpp
+++++ webkitgtk/Source/JavaScriptCore/runtime/DateInstance.cpp
++@@ -69,7 +69,7 @@ const GregorianDateTime* DateInstance::c
++ m_data = vm.dateInstanceCache.add(milli);
++
++ if (m_data->m_gregorianDateTimeCachedForMS != milli) {
++- msToGregorianDateTime(vm, milli, false, m_data->m_cachedGregorianDateTime);
+++ msToGregorianDateTime(vm, milli, WTF::LocalTime, m_data->m_cachedGregorianDateTime);
++ m_data->m_gregorianDateTimeCachedForMS = milli;
++ }
++ return &m_data->m_cachedGregorianDateTime;
++@@ -86,7 +86,7 @@ const GregorianDateTime* DateInstance::c
++ m_data = vm.dateInstanceCache.add(milli);
++
++ if (m_data->m_gregorianDateTimeUTCCachedForMS != milli) {
++- msToGregorianDateTime(vm, milli, true, m_data->m_cachedGregorianDateTimeUTC);
+++ msToGregorianDateTime(vm, milli, WTF::UTCTime, m_data->m_cachedGregorianDateTimeUTC);
++ m_data->m_gregorianDateTimeUTCCachedForMS = milli;
++ }
++ return &m_data->m_cachedGregorianDateTimeUTC;
++Index: webkitgtk/Source/JavaScriptCore/runtime/DatePrototype.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/DatePrototype.cpp
+++++ webkitgtk/Source/JavaScriptCore/runtime/DatePrototype.cpp
++@@ -859,7 +859,7 @@ EncodedJSValue JSC_HOST_CALL dateProtoFu
++ return JSValue::encode(result);
++ }
++
++-static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, bool inputIsUTC)
+++static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
++ {
++ JSValue thisValue = exec->thisValue();
++ if (!thisValue.inherits(DateInstance::info()))
++@@ -878,7 +878,7 @@ static EncodedJSValue setNewValueFromTim
++ double secs = floor(milli / msPerSecond);
++ double ms = milli - secs * msPerSecond;
++
++- const GregorianDateTime* other = inputIsUTC
+++ const GregorianDateTime* other = inputTimeType == WTF::UTCTime
++ ? thisDateObj->gregorianDateTimeUTC(exec)
++ : thisDateObj->gregorianDateTime(exec);
++ if (!other)
++@@ -892,12 +892,12 @@ static EncodedJSValue setNewValueFromTim
++ return JSValue::encode(result);
++ }
++
++- JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputIsUTC));
+++ JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType));
++ thisDateObj->setInternalValue(vm, result);
++ return JSValue::encode(result);
++ }
++
++-static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, bool inputIsUTC)
+++static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
++ {
++ JSValue thisValue = exec->thisValue();
++ if (!thisValue.inherits(DateInstance::info()))
++@@ -916,10 +916,10 @@ static EncodedJSValue setNewValueFromDat
++
++ GregorianDateTime gregorianDateTime;
++ if (numArgsToUse == 3 && std::isnan(milli))
++- msToGregorianDateTime(vm, 0, true, gregorianDateTime);
+++ msToGregorianDateTime(vm, 0, WTF::UTCTime, gregorianDateTime);
++ else {
++ ms = milli - floor(milli / msPerSecond) * msPerSecond;
++- const GregorianDateTime* other = inputIsUTC
+++ const GregorianDateTime* other = inputTimeType == WTF::UTCTime
++ ? thisDateObj->gregorianDateTimeUTC(exec)
++ : thisDateObj->gregorianDateTime(exec);
++ if (!other)
++@@ -933,93 +933,93 @@ static EncodedJSValue setNewValueFromDat
++ return JSValue::encode(result);
++ }
++
++- JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputIsUTC));
+++ JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType));
++ thisDateObj->setInternalValue(vm, result);
++ return JSValue::encode(result);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetMilliSeconds(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromTimeArgs(exec, 1, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromTimeArgs(exec, 1, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCMilliseconds(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromTimeArgs(exec, 1, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromTimeArgs(exec, 1, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetSeconds(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromTimeArgs(exec, 2, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromTimeArgs(exec, 2, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCSeconds(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromTimeArgs(exec, 2, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromTimeArgs(exec, 2, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetMinutes(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromTimeArgs(exec, 3, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromTimeArgs(exec, 3, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCMinutes(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromTimeArgs(exec, 3, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromTimeArgs(exec, 3, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetHours(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromTimeArgs(exec, 4, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromTimeArgs(exec, 4, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCHours(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromTimeArgs(exec, 4, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromTimeArgs(exec, 4, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetDate(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromDateArgs(exec, 1, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromDateArgs(exec, 1, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCDate(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromDateArgs(exec, 1, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromDateArgs(exec, 1, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetMonth(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromDateArgs(exec, 2, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromDateArgs(exec, 2, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCMonth(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromDateArgs(exec, 2, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromDateArgs(exec, 2, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetFullYear(ExecState* exec)
++ {
++- const bool inputIsUTC = false;
++- return setNewValueFromDateArgs(exec, 3, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::LocalTime;
+++ return setNewValueFromDateArgs(exec, 3, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetUTCFullYear(ExecState* exec)
++ {
++- const bool inputIsUTC = true;
++- return setNewValueFromDateArgs(exec, 3, inputIsUTC);
+++ const WTF::TimeType inputTimeType = WTF::UTCTime;
+++ return setNewValueFromDateArgs(exec, 3, inputTimeType);
++ }
++
++ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec)
++@@ -1043,7 +1043,7 @@ EncodedJSValue JSC_HOST_CALL dateProtoFu
++ if (std::isnan(milli))
++ // Based on ECMA 262 B.2.5 (setYear)
++ // the time must be reset to +0 if it is NaN.
++- msToGregorianDateTime(vm, 0, true, gregorianDateTime);
+++ msToGregorianDateTime(vm, 0, WTF::UTCTime, gregorianDateTime);
++ else {
++ double secs = floor(milli / msPerSecond);
++ ms = milli - secs * msPerSecond;
++@@ -1059,7 +1059,7 @@ EncodedJSValue JSC_HOST_CALL dateProtoFu
++ }
++
++ gregorianDateTime.setYear(toInt32((year >= 0 && year <= 99) ? (year + 1900) : year));
++- JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, false));
+++ JSValue result = jsNumber(gregorianDateTimeToMS(vm, gregorianDateTime, ms, WTF::LocalTime));
++ thisDateObj->setInternalValue(vm, result);
++ return JSValue::encode(result);
++ }
++Index: webkitgtk/Source/JavaScriptCore/runtime/JSDateMath.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/JSDateMath.cpp
+++++ webkitgtk/Source/JavaScriptCore/runtime/JSDateMath.cpp
++@@ -132,13 +132,14 @@ static inline int msToWeekDay(double ms)
++ // NOTE: The implementation relies on the fact that no time zones have
++ // more than one daylight savings offset change per month.
++ // If this function is called with NaN it returns NaN.
++-static LocalTimeOffset localTimeOffset(VM& vm, double ms)
+++static LocalTimeOffset localTimeOffset(VM& vm, double ms, WTF::TimeType inputTimeType = WTF::UTCTime)
++ {
++ LocalTimeOffsetCache& cache = vm.localTimeOffsetCache;
++ double start = cache.start;
++ double end = cache.end;
+++ WTF::TimeType cachedTimeType = cache.timeType;
++
++- if (start <= ms) {
+++ if (cachedTimeType == inputTimeType && start <= ms) {
++ // If the time fits in the cached interval, return the cached offset.
++ if (ms <= end) return cache.offset;
++
++@@ -146,7 +147,7 @@ static LocalTimeOffset localTimeOffset(V
++ double newEnd = end + cache.increment;
++
++ if (ms <= newEnd) {
++- LocalTimeOffset endOffset = calculateLocalTimeOffset(newEnd);
+++ LocalTimeOffset endOffset = calculateLocalTimeOffset(newEnd, inputTimeType);
++ if (cache.offset == endOffset) {
++ // If the offset at the end of the new interval still matches
++ // the offset in the cache, we grow the cached time interval
++@@ -155,7 +156,7 @@ static LocalTimeOffset localTimeOffset(V
++ cache.increment = msPerMonth;
++ return endOffset;
++ }
++- LocalTimeOffset offset = calculateLocalTimeOffset(ms);
+++ LocalTimeOffset offset = calculateLocalTimeOffset(ms, inputTimeType);
++ if (offset == endOffset) {
++ // The offset at the given time is equal to the offset at the
++ // new end of the interval, so that means that we've just skipped
++@@ -180,31 +181,31 @@ static LocalTimeOffset localTimeOffset(V
++ // Compute the DST offset for the time and shrink the cache interval
++ // to only contain the time. This allows fast repeated DST offset
++ // computations for the same time.
++- LocalTimeOffset offset = calculateLocalTimeOffset(ms);
+++ LocalTimeOffset offset = calculateLocalTimeOffset(ms, inputTimeType);
++ cache.offset = offset;
++ cache.start = ms;
++ cache.end = ms;
++ cache.increment = msPerMonth;
+++ cache.timeType = inputTimeType;
++ return offset;
++ }
++
++-double gregorianDateTimeToMS(VM& vm, const GregorianDateTime& t, double milliSeconds, bool inputIsUTC)
+++double gregorianDateTimeToMS(VM& vm, const GregorianDateTime& t, double milliSeconds, WTF::TimeType inputTimeType)
++ {
++ double day = dateToDaysFrom1970(t.year(), t.month(), t.monthDay());
++ double ms = timeToMS(t.hour(), t.minute(), t.second(), milliSeconds);
++- double result = (day * WTF::msPerDay) + ms;
+++ double localTimeResult = (day * WTF::msPerDay) + ms;
+++ double localToUTCTimeOffset = inputTimeType == LocalTime
+++ ? localTimeOffset(vm, localTimeResult, inputTimeType).offset : 0;
++
++- if (!inputIsUTC)
++- result -= localTimeOffset(vm, result).offset;
++-
++- return result;
+++ return localTimeResult - localToUTCTimeOffset;
++ }
++
++ // input is UTC
++-void msToGregorianDateTime(VM& vm, double ms, bool outputIsUTC, GregorianDateTime& tm)
+++void msToGregorianDateTime(VM& vm, double ms, WTF::TimeType outputTimeType, GregorianDateTime& tm)
++ {
++ LocalTimeOffset localTime;
++- if (!outputIsUTC) {
+++ if (outputTimeType == WTF::LocalTime) {
++ localTime = localTimeOffset(vm, ms);
++ ms += localTime.offset;
++ }
++@@ -226,15 +227,15 @@ double parseDateFromNullTerminatedCharac
++ {
++ bool haveTZ;
++ int offset;
++- double ms = WTF::parseDateFromNullTerminatedCharacters(dateString, haveTZ, offset);
++- if (std::isnan(ms))
+++ double localTimeMS = WTF::parseDateFromNullTerminatedCharacters(dateString, haveTZ, offset);
+++ if (std::isnan(localTimeMS))
++ return std::numeric_limits<double>::quiet_NaN();
++
++- // fall back to local timezone
+++ // fall back to local timezone.
++ if (!haveTZ)
++- offset = localTimeOffset(vm, ms).offset / WTF::msPerMinute;
+++ offset = localTimeOffset(vm, localTimeMS, WTF::LocalTime).offset / WTF::msPerMinute;
++
++- return ms - (offset * WTF::msPerMinute);
+++ return localTimeMS - (offset * WTF::msPerMinute);
++ }
++
++ double parseDate(VM& vm, const String& date)
++Index: webkitgtk/Source/JavaScriptCore/runtime/JSDateMath.h
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/JSDateMath.h
+++++ webkitgtk/Source/JavaScriptCore/runtime/JSDateMath.h
++@@ -50,8 +50,8 @@ namespace JSC {
++
++ class VM;
++
++-JS_EXPORT_PRIVATE void msToGregorianDateTime(VM&, double, bool outputIsUTC, GregorianDateTime&);
++-JS_EXPORT_PRIVATE double gregorianDateTimeToMS(VM&, const GregorianDateTime&, double, bool inputIsUTC);
+++JS_EXPORT_PRIVATE void msToGregorianDateTime(VM&, double, WTF::TimeType outputTimeType, GregorianDateTime&);
+++JS_EXPORT_PRIVATE double gregorianDateTimeToMS(VM&, const GregorianDateTime&, double, WTF::TimeType inputTimeType);
++ JS_EXPORT_PRIVATE double getUTCOffset(VM&);
++ JS_EXPORT_PRIVATE double parseDateFromNullTerminatedCharacters(VM&, const char* dateString);
++ JS_EXPORT_PRIVATE double parseDate(VM&, const WTF::String&);
++Index: webkitgtk/Source/JavaScriptCore/runtime/VM.h
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/VM.h
+++++ webkitgtk/Source/JavaScriptCore/runtime/VM.h
++@@ -133,6 +133,7 @@ struct LocalTimeOffsetCache {
++ : start(0.0)
++ , end(-1.0)
++ , increment(0.0)
+++ , timeType(WTF::UTCTime)
++ {
++ }
++
++@@ -142,12 +143,14 @@ struct LocalTimeOffsetCache {
++ start = 0.0;
++ end = -1.0;
++ increment = 0.0;
+++ timeType = WTF::UTCTime;
++ }
++
++ LocalTimeOffset offset;
++ double start;
++ double end;
++ double increment;
+++ WTF::TimeType timeType;
++ };
++
++ class ConservativeRoots;
++Index: webkitgtk/Source/WTF/wtf/DateMath.cpp
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/DateMath.cpp
+++++ webkitgtk/Source/WTF/wtf/DateMath.cpp
++@@ -363,8 +363,6 @@ int equivalentYearForDST(int year)
++ return year;
++ }
++
++-#if !HAVE(TM_GMTOFF)
++-
++ static int32_t calculateUTCOffset()
++ {
++ #if OS(WINDOWS)
++@@ -406,6 +404,8 @@ static int32_t calculateUTCOffset()
++ #endif
++ }
++
+++#if !HAVE(TM_GMTOFF)
+++
++ #if OS(WINDOWS)
++ // Code taken from http://support.microsoft.com/kb/167296
++ static void UnixTimeToFileTime(time_t t, LPFILETIME pft)
++@@ -467,8 +467,16 @@ static double calculateDSTOffset(time_t
++ #endif
++
++ // Returns combined offset in millisecond (UTC + DST).
++-LocalTimeOffset calculateLocalTimeOffset(double ms)
+++LocalTimeOffset calculateLocalTimeOffset(double ms, TimeType inputTimeType)
++ {
+++#if HAVE(TM_GMTOFF)
+++ double localToUTCTimeOffset = inputTimeType == LocalTime ? calculateUTCOffset() : 0;
+++#else
+++ double localToUTCTimeOffset = calculateUTCOffset();
+++#endif
+++ if (inputTimeType == LocalTime)
+++ ms -= localToUTCTimeOffset;
+++
++ // On Mac OS X, the call to localtime (see calculateDSTOffset) will return historically accurate
++ // DST information (e.g. New Zealand did not have DST from 1946 to 1974) however the JavaScript
++ // standard explicitly dictates that historical information should not be considered when
++@@ -498,9 +506,8 @@ LocalTimeOffset calculateLocalTimeOffset
++ getLocalTime(&localTime, &localTM);
++ return LocalTimeOffset(localTM.tm_isdst, localTM.tm_gmtoff * msPerSecond);
++ #else
++- double utcOffset = calculateUTCOffset();
++- double dstOffset = calculateDSTOffset(localTime, utcOffset);
++- return LocalTimeOffset(dstOffset, utcOffset + dstOffset);
+++ double dstOffset = calculateDSTOffset(localTime, localToUTCTimeOffset);
+++ return LocalTimeOffset(dstOffset, localToUTCTimeOffset + dstOffset);
++ #endif
++ }
++
++@@ -1091,7 +1098,7 @@ double parseDateFromNullTerminatedCharac
++
++ // fall back to local timezone
++ if (!haveTZ)
++- offset = calculateLocalTimeOffset(ms).offset / msPerMinute;
+++ offset = calculateLocalTimeOffset(ms, LocalTime).offset / msPerMinute; // ms value is in local time milliseconds.
++
++ return ms - (offset * msPerMinute);
++ }
++Index: webkitgtk/Source/WTF/wtf/DateMath.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/DateMath.h
+++++ webkitgtk/Source/WTF/wtf/DateMath.h
++@@ -53,6 +53,11 @@
++
++ namespace WTF {
++
+++enum TimeType {
+++ UTCTime = 0,
+++ LocalTime
+++};
+++
++ struct LocalTimeOffset {
++ LocalTimeOffset()
++ : isDST(false)
++@@ -126,7 +131,7 @@ WTF_EXPORT_PRIVATE int monthFromDayInYea
++ WTF_EXPORT_PRIVATE int dayInMonthFromDayInYear(int dayInYear, bool leapYear);
++
++ // Returns combined offset in millisecond (UTC + DST).
++-WTF_EXPORT_PRIVATE LocalTimeOffset calculateLocalTimeOffset(double utcInMilliseconds);
+++WTF_EXPORT_PRIVATE LocalTimeOffset calculateLocalTimeOffset(double utcInMilliseconds, TimeType = UTCTime);
++
++ } // namespace WTF
++
--- /dev/null
--- /dev/null
++From: Helge Deller <deller@gmx.de>
++Subject: Fix FTBFS in HPPA
++Bug-Debian: http://bugs.debian.org/776281
++Index: webkitgtk/CMakeLists.txt
++===================================================================
++--- webkitgtk.orig/CMakeLists.txt
+++++ webkitgtk/CMakeLists.txt
++@@ -99,6 +99,8 @@ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR
++ set(WTF_CPU_PPC64 1)
++ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
++ set(WTF_CPU_PPC64LE 1)
+++elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "parisc*")
+++ set(WTF_CPU_HPPA 1)
++ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390")
++ set(WTF_CPU_S390 1)
++ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
++Index: webkitgtk/Source/JavaScriptCore/CMakeLists.txt
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/CMakeLists.txt
+++++ webkitgtk/Source/JavaScriptCore/CMakeLists.txt
++@@ -1056,6 +1056,7 @@ if (WTF_CPU_ARM)
++ list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_DIR}/GeneratedJITStubs.obj)
++ endif ()
++ elseif (WTF_CPU_ARM64)
+++elseif (WTF_CPU_HPPA)
++ elseif (WTF_CPU_PPC)
++ elseif (WTF_CPU_PPC64)
++ elseif (WTF_CPU_PPC64LE)
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Fix memory leak in GStreamer code
++Bug: https://bugs.webkit.org/show_bug.cgi?id=46560
++Origin: http://trac.webkit.org/changeset/175945
++Index: webkitgtk/Source/WebCore/platform/graphics/MediaPlayer.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/graphics/MediaPlayer.cpp
+++++ webkitgtk/Source/WebCore/platform/graphics/MediaPlayer.cpp
++@@ -130,7 +130,7 @@ public:
++ virtual double minTimeSeekable() const { return 0; }
++ virtual std::unique_ptr<PlatformTimeRanges> buffered() const { return PlatformTimeRanges::create(); }
++
++- virtual unsigned totalBytes() const { return 0; }
+++ virtual unsigned long long totalBytes() const { return 0; }
++ virtual bool didLoadingProgress() const { return false; }
++
++ virtual void setSize(const IntSize&) { }
++Index: webkitgtk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
+++++ webkitgtk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
++@@ -130,6 +130,7 @@ public:
++ virtual MediaTime minMediaTimeSeekable() const { return MediaTime::createWithDouble(minTimeSeekable()); }
++ virtual std::unique_ptr<PlatformTimeRanges> buffered() const = 0;
++
+++ virtual unsigned long long totalBytes() const { return 0; }
++ virtual bool didLoadingProgress() const = 0;
++
++ virtual void setSize(const IntSize&) = 0;
++@@ -242,8 +243,16 @@ public:
++
++ virtual String languageOfPrimaryAudioTrack() const { return emptyString(); }
++
++- virtual size_t extraMemoryCost() const { return 0; }
++-
+++ virtual size_t extraMemoryCost() const
+++ {
+++ MediaTime duration = this->durationMediaTime();
+++ if (!duration)
+++ return 0;
+++
+++ unsigned long long extra = totalBytes() * buffered()->totalDuration().toDouble() / duration.toDouble();
+++ return static_cast<unsigned>(extra);
+++ }
+++
++ virtual unsigned long long fileSize() const { return 0; }
++
++ #if ENABLE(MEDIA_SOURCE)
++Index: webkitgtk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
+++++ webkitgtk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
++@@ -211,7 +211,7 @@ MediaPlayerPrivateGStreamer::MediaPlayer
++ , m_volumeAndMuteInitialized(false)
++ , m_hasVideo(false)
++ , m_hasAudio(false)
++- , m_totalBytes(-1)
+++ , m_totalBytes(0)
++ , m_preservesPitch(false)
++ , m_requestedState(GST_STATE_VOID_PENDING)
++ , m_missingPlugins(false)
++@@ -1228,12 +1228,12 @@ bool MediaPlayerPrivateGStreamer::didLoa
++ return didLoadingProgress;
++ }
++
++-unsigned MediaPlayerPrivateGStreamer::totalBytes() const
+++unsigned long long MediaPlayerPrivateGStreamer::totalBytes() const
++ {
++ if (m_errorOccured)
++ return 0;
++
++- if (m_totalBytes != -1)
+++ if (m_totalBytes)
++ return m_totalBytes;
++
++ if (!m_source)
++@@ -1243,7 +1243,7 @@ unsigned MediaPlayerPrivateGStreamer::to
++ gint64 length = 0;
++ if (gst_element_query_duration(m_source.get(), fmt, &length)) {
++ INFO_MEDIA_MESSAGE("totalBytes %" G_GINT64_FORMAT, length);
++- m_totalBytes = static_cast<unsigned>(length);
+++ m_totalBytes = static_cast<unsigned long long>(length);
++ m_isStreaming = !length;
++ return m_totalBytes;
++ }
++@@ -1278,7 +1278,7 @@ unsigned MediaPlayerPrivateGStreamer::to
++ gst_iterator_free(iter);
++
++ INFO_MEDIA_MESSAGE("totalBytes %" G_GINT64_FORMAT, length);
++- m_totalBytes = static_cast<unsigned>(length);
+++ m_totalBytes = static_cast<unsigned long long>(length);
++ m_isStreaming = !length;
++ return m_totalBytes;
++ }
++Index: webkitgtk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
+++++ webkitgtk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
++@@ -92,7 +92,7 @@ public:
++ std::unique_ptr<PlatformTimeRanges> buffered() const;
++ float maxTimeSeekable() const;
++ bool didLoadingProgress() const;
++- unsigned totalBytes() const;
+++ unsigned long long totalBytes() const;
++ float maxTimeLoaded() const;
++
++ void loadStateChanged();
++@@ -207,7 +207,7 @@ private:
++ GThreadSafeMainLoopSource m_videoTimerHandler;
++ GThreadSafeMainLoopSource m_videoCapsTimerHandler;
++ GThreadSafeMainLoopSource m_readyTimerHandler;
++- mutable long m_totalBytes;
+++ mutable unsigned long long m_totalBytes;
++ URL m_url;
++ bool m_preservesPitch;
++ GstState m_requestedState;
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Fix crash due to integer overflow
++Bug: https://bugs.webkit.org/show_bug.cgi?id=139165
++Origin: http://trac.webkit.org/changeset/178283
++Index: webkitgtk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
+++++ webkitgtk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
++@@ -2023,7 +2023,7 @@ void ByteCodeParser::handleGetById(
++ {
++ NodeType getById = getByIdStatus.makesCalls() ? GetByIdFlush : GetById;
++
++- if (!getByIdStatus.isSimple() || !Options::enableAccessInlining()) {
+++ if (!getByIdStatus.isSimple() || !getByIdStatus.numVariants() || !Options::enableAccessInlining()) {
++ set(VirtualRegister(destinationOperand),
++ addToGraph(getById, OpInfo(identifierNumber), OpInfo(prediction), base));
++ return;
++@@ -2138,7 +2138,7 @@ void ByteCodeParser::handlePutById(
++ Node* base, unsigned identifierNumber, Node* value,
++ const PutByIdStatus& putByIdStatus, bool isDirect)
++ {
++- if (!putByIdStatus.isSimple() || !Options::enableAccessInlining()) {
+++ if (!putByIdStatus.isSimple() || !putByIdStatus.numVariants() || !Options::enableAccessInlining()) {
++ if (!putByIdStatus.isSet())
++ addToGraph(ForceOSRExit);
++ emitPutById(base, identifierNumber, value, putByIdStatus, isDirect);
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Fix crash in SpeculativeJIT::compile() when loading theblaze.com
++Bug: https://bugs.webkit.org/show_bug.cgi?id=137642
++Origin: http://trac.webkit.org/changeset/178264
++Index: webkitgtk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
+++++ webkitgtk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
++@@ -1692,7 +1692,26 @@ void SpeculativeJIT::compile(Node* node)
++ break;
++
++ case Identity: {
++- RELEASE_ASSERT_NOT_REACHED();
+++ speculate(node, node->child1());
+++ switch (node->child1().useKind()) {
+++ case DoubleRepUse:
+++ case DoubleRepRealUse: {
+++ SpeculateDoubleOperand op(this, node->child1());
+++ doubleResult(op.fpr(), node);
+++ break;
+++ }
+++ case Int52RepUse:
+++ case MachineIntUse:
+++ case DoubleRepMachineIntUse: {
+++ RELEASE_ASSERT_NOT_REACHED();
+++ break;
+++ }
+++ default: {
+++ JSValueOperand op(this, node->child1());
+++ jsValueResult(op.tagGPR(), op.payloadGPR(), node);
+++ break;
+++ }
+++ } // switch
++ break;
++ }
++
++Index: webkitgtk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
+++++ webkitgtk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
++@@ -1795,8 +1795,26 @@ void SpeculativeJIT::compile(Node* node)
++ break;
++
++ case Identity: {
++- // CSE should always eliminate this.
++- DFG_CRASH(m_jit.graph(), node, "Unexpected Identity node");
+++ speculate(node, node->child1());
+++ switch (node->child1().useKind()) {
+++ case DoubleRepUse:
+++ case DoubleRepRealUse:
+++ case DoubleRepMachineIntUse: {
+++ SpeculateDoubleOperand op(this, node->child1());
+++ doubleResult(op.fpr(), node);
+++ break;
+++ }
+++ case Int52RepUse: {
+++ SpeculateInt52Operand op(this, node->child1());
+++ int52Result(op.gpr(), node);
+++ break;
+++ }
+++ default: {
+++ JSValueOperand op(this, node->child1());
+++ jsValueResult(op.gpr(), node);
+++ break;
+++ }
+++ } // switch
++ break;
++ }
++
--- /dev/null
--- /dev/null
++From: YunQiang Su <wzssyqa@gmail.com>
++Subject: Fix build in MIPS64EL
++Bug-Debian: http://bugs.debian.org/767598
++Bug: https://bugs.webkit.org/show_bug.cgi?id=124370
++Index: webkitgtk/Source/WTF/wtf/Platform.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/Platform.h
+++++ webkitgtk/Source/WTF/wtf/Platform.h
++@@ -80,16 +80,20 @@
++ #endif
++ #endif
++
++-/* CPU(MIPS) - MIPS 32-bit */
++-/* Note: Only O32 ABI is tested, so we enable it for O32 ABI for now. */
++-#if (defined(mips) || defined(__mips__) || defined(MIPS) || defined(_MIPS_)) \
++- && defined(_ABIO32)
+++/* CPU(MIPS) - MIPS 32-bit and 64-bit */
+++#if (defined(mips) || defined(__mips__) || defined(MIPS) || defined(_MIPS_) \
+++ || defined(__mips64))
+++#if defined(__mips64)
+++#define WTF_CPU_MIPS64 1
+++#define WTF_MIPS_ARCH __mips64
+++#else
++ #define WTF_CPU_MIPS 1
+++#define WTF_MIPS_ARCH __mips
+++#endif
++ #if defined(__MIPSEB__)
++ #define WTF_CPU_BIG_ENDIAN 1
++ #endif
++ #define WTF_MIPS_PIC (defined __PIC__)
++-#define WTF_MIPS_ARCH __mips
++ #define WTF_MIPS_ISA(v) (defined WTF_MIPS_ARCH && WTF_MIPS_ARCH == v)
++ #define WTF_MIPS_ISA_AT_LEAST(v) (defined WTF_MIPS_ARCH && WTF_MIPS_ARCH >= v)
++ #define WTF_MIPS_ARCH_REV __mips_isa_rev
++@@ -662,6 +666,7 @@
++ || CPU(ARM64) \
++ || CPU(SPARC64) \
++ || CPU(S390X) \
+++ || CPU(MIPS64) \
++ || CPU(PPC64) \
++ || CPU(PPC64LE)
++ #define WTF_USE_JSVALUE64 1
++Index: webkitgtk/Source/WTF/wtf/dtoa/utils.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/dtoa/utils.h
+++++ webkitgtk/Source/WTF/wtf/dtoa/utils.h
++@@ -49,7 +49,7 @@
++ defined(__ARMEL__) || \
++ defined(_MIPS_ARCH_MIPS32R2)
++ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
++-#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
+++#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
++ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
++ #elif defined(_M_IX86) || defined(__i386__)
++ #if defined(_WIN32)
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: NULL pointer check in HTMLPlugInImageElement
++Bug: https://bugs.webkit.org/show_bug.cgi?id=139057
++Origin: http://trac.webkit.org/changeset/178276
++Index: webkitgtk/Source/WebCore/html/HTMLPlugInImageElement.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/html/HTMLPlugInImageElement.cpp
+++++ webkitgtk/Source/WebCore/html/HTMLPlugInImageElement.cpp
++@@ -334,6 +334,9 @@ void HTMLPlugInImageElement::updateSnaps
++
++ m_snapshotImage = image;
++
+++ if (!renderer())
+++ return;
+++
++ if (renderer()->isSnapshottedPlugIn()) {
++ toRenderSnapshottedPlugIn(renderer())->updateSnapshot(image);
++ return;
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Add NULL check to convertToUTF8String()
++Bug: https://bugs.webkit.org/show_bug.cgi?id=133904
++Origin: http://trac.webkit.org/changeset/178339
++Index: webkitgtk/Source/WebCore/bindings/gobject/ConvertToUTF8String.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/bindings/gobject/ConvertToUTF8String.cpp
+++++ webkitgtk/Source/WebCore/bindings/gobject/ConvertToUTF8String.cpp
++@@ -29,11 +29,14 @@
++
++ gchar* convertToUTF8String(WTF::String const& s)
++ {
+++ if (s.isNull())
+++ return 0;
+++
++ return g_strdup(s.utf8().data());
++ }
++
++ gchar* convertToUTF8String(WebCore::URL const& s)
++ {
++- return g_strdup(s.string().utf8().data());
+++ return convertToUTF8String(s.string());
++ }
++
++Index: webkitgtk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
++===================================================================
++--- webkitgtk.orig/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
+++++ webkitgtk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
++@@ -108,6 +108,9 @@ private:
++ // Body shouldn't have any children at this point.
++ g_assert(!webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
++
+++ // The value of a non-existent attribute should be null, not an empty string
+++ g_assert(!webkit_dom_html_body_element_get_background(WEBKIT_DOM_HTML_BODY_ELEMENT(body)));
+++
++ // Insert one P element.
++ WebKitDOMElement* p = webkit_dom_document_create_element(document, "P", 0);
++ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(p));
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Timers might never be fired during animations
++Bug: https://bugs.webkit.org/show_bug.cgi?id=139062
++Origin: http://trac.webkit.org/changeset/178348
++Index: webkitgtk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
+++++ webkitgtk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
++@@ -72,7 +72,7 @@ LayerTreeHostGtk::LayerTreeHostGtk(WebPa
++ : LayerTreeHost(webPage)
++ , m_isValid(true)
++ , m_notifyAfterScheduledLayerFlush(false)
++- , m_lastFlushTime(0)
+++ , m_lastImmediateFlushTime(0)
++ , m_layerFlushSchedulingEnabled(true)
++ {
++ }
++@@ -273,16 +273,44 @@ void LayerTreeHostGtk::paintContents(con
++ // FIXME: Draw page overlays. https://bugs.webkit.org/show_bug.cgi?id=131433.
++ }
++
+++static inline bool shouldSkipNextFrameBecauseOfContinousImmediateFlushes(double current, double lastImmediateFlushTime)
+++{
+++ // 100ms is about a perceptable delay in UI, so when scheduling layer flushes immediately for more than 100ms,
+++ // we skip the next frame to ensure pending timers have a change to be fired.
+++ static const double maxDurationOfImmediateFlushes = 0.100;
+++ if (!lastImmediateFlushTime)
+++ return false;
+++ return lastImmediateFlushTime + maxDurationOfImmediateFlushes < current;
+++}
+++
+++// Use a higher priority than WebCore timers.
+++static const int layerFlushTimerPriority = GDK_PRIORITY_REDRAW - 1;
+++
++ void LayerTreeHostGtk::layerFlushTimerFired()
++ {
+++ double fireTime = monotonicallyIncreasingTime();
++ flushAndRenderLayers();
+++ if (m_layerFlushTimerCallback.isScheduled() || !toTextureMapperLayer(m_rootLayer.get())->descendantsOrSelfHaveRunningAnimations())
+++ return;
++
++- if (!m_layerFlushTimerCallback.isScheduled() && toTextureMapperLayer(m_rootLayer.get())->descendantsOrSelfHaveRunningAnimations()) {
++- const double targetFPS = 60;
++- double nextFlush = std::max((1 / targetFPS) - (currentTime() - m_lastFlushTime), 0.0);
++- m_layerFlushTimerCallback.scheduleAfterDelay("[WebKit] layerFlushTimer", std::bind(&LayerTreeHostGtk::layerFlushTimerFired, this),
++- std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::duration<double>(nextFlush)), GDK_PRIORITY_EVENTS);
+++ static const double targetFramerate = 1 / 60.0;
+++ // When rendering layers takes more time than the target delay (0.016), we end up scheduling layer flushes
+++ // immediately. Since the layer flush timer has a higher priority than WebCore timers, these are never
+++ // fired while we keep scheduling layer flushes immediately.
+++ double current = monotonicallyIncreasingTime();
+++ double timeToNextFlush = std::max(targetFramerate - (current - fireTime), 0.0);
+++ if (timeToNextFlush)
+++ m_lastImmediateFlushTime = 0;
+++ else if (!m_lastImmediateFlushTime)
+++ m_lastImmediateFlushTime = current;
+++
+++ if (shouldSkipNextFrameBecauseOfContinousImmediateFlushes(current, m_lastImmediateFlushTime)) {
+++ timeToNextFlush = targetFramerate;
+++ m_lastImmediateFlushTime = 0;
++ }
+++
+++ m_layerFlushTimerCallback.scheduleAfterDelay("[WebKit] layerFlushTimer", std::bind(&LayerTreeHostGtk::layerFlushTimerFired, this),
+++ std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::duration<double>(timeToNextFlush)), layerFlushTimerPriority);
++ }
++
++ bool LayerTreeHostGtk::flushPendingLayerChanges()
++@@ -335,7 +363,6 @@ void LayerTreeHostGtk::flushAndRenderLay
++ if (!context || !context->makeContextCurrent())
++ return;
++
++- m_lastFlushTime = currentTime();
++ if (!flushPendingLayerChanges())
++ return;
++
++@@ -381,7 +408,7 @@ void LayerTreeHostGtk::scheduleLayerFlus
++
++ // We use a GLib timer because otherwise GTK+ event handling during dragging can starve WebCore timers, which have a lower priority.
++ if (!m_layerFlushTimerCallback.isScheduled())
++- m_layerFlushTimerCallback.schedule("[WebKit] layerFlushTimer", std::bind(&LayerTreeHostGtk::layerFlushTimerFired, this), GDK_PRIORITY_EVENTS);
+++ m_layerFlushTimerCallback.schedule("[WebKit] layerFlushTimer", std::bind(&LayerTreeHostGtk::layerFlushTimerFired, this), layerFlushTimerPriority);
++ }
++
++ void LayerTreeHostGtk::setLayerFlushSchedulingEnabled(bool layerFlushingEnabled)
++Index: webkitgtk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h
+++++ webkitgtk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h
++@@ -103,7 +103,7 @@ private:
++ PageOverlayLayerMap m_pageOverlayLayers;
++ std::unique_ptr<WebCore::TextureMapper> m_textureMapper;
++ OwnPtr<WebCore::GLContext> m_context;
++- double m_lastFlushTime;
+++ double m_lastImmediateFlushTime;
++ bool m_layerFlushSchedulingEnabled;
++ GMainLoopSource m_layerFlushTimerCallback;
++ };
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Fix crash in the Flash plugin
++Bug: https://bugs.webkit.org/show_bug.cgi?id=137849
++Bug-Debian: http://bugs.debian.org/768341
++Index: webkitgtk/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp
+++++ webkitgtk/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp
++@@ -202,7 +202,9 @@ void NetscapePlugin::platformPreInitiali
++ bool NetscapePlugin::platformPostInitialize()
++ {
++ uint64_t windowID = 0;
++- bool needsXEmbed = false;
+++ // NPPVpluginNeedsXEmbed is a boolean value, but at least the
+++ // Flash player plugin is using an 'int' instead.
+++ int needsXEmbed = 0;
++ if (m_isWindowed) {
++ NPP_GetValue(NPPVpluginNeedsXEmbed, &needsXEmbed);
++ if (needsXEmbed) {
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: HTTP header values should be treated as latin1, not UTF-8
++Bug: https://bugs.webkit.org/show_bug.cgi?id=128739
++Origin: http://trac.webkit.org/changeset/178328
++Index: webkitgtk/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
+++++ webkitgtk/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
++@@ -65,12 +65,12 @@ void ResourceRequest::updateFromSoupMess
++ const char* headerName;
++ const char* headerValue;
++ while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue))
++- m_httpHeaderFields.set(String::fromUTF8(headerName), String::fromUTF8(headerValue));
+++ m_httpHeaderFields.set(String(headerName), String(headerValue));
++ }
++
++ void ResourceRequest::updateSoupMessage(SoupMessage* soupMessage) const
++ {
++- g_object_set(soupMessage, SOUP_MESSAGE_METHOD, httpMethod().utf8().data(), NULL);
+++ g_object_set(soupMessage, SOUP_MESSAGE_METHOD, httpMethod().ascii().data(), NULL);
++
++ GUniquePtr<SoupURI> uri = createSoupURI();
++ soup_message_set_uri(soupMessage, uri.get());
++@@ -80,7 +80,7 @@ void ResourceRequest::updateSoupMessage(
++
++ SoupMessage* ResourceRequest::toSoupMessage() const
++ {
++- SoupMessage* soupMessage = soup_message_new(httpMethod().utf8().data(), url().string().utf8().data());
+++ SoupMessage* soupMessage = soup_message_new(httpMethod().ascii().data(), url().string().utf8().data());
++ if (!soupMessage)
++ return 0;
++
++@@ -102,7 +102,7 @@ void ResourceRequest::updateFromSoupMess
++ if (shouldPortBeResetToZero)
++ m_url.setPort(0);
++
++- m_httpMethod = String::fromUTF8(soupMessage->method);
+++ m_httpMethod = String(soupMessage->method);
++
++ updateFromSoupMessageHeaders(soupMessage->request_headers);
++
++Index: webkitgtk/Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp
+++++ webkitgtk/Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp
++@@ -87,7 +87,7 @@ void ResourceResponse::updateFromSoupMes
++
++ soup_message_headers_iter_init(&headersIter, headers);
++ while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue))
++- addHTTPHeaderField(String::fromUTF8WithLatin1Fallback(headerName, strlen(headerName)), String::fromUTF8WithLatin1Fallback(headerValue, strlen(headerValue)));
+++ addHTTPHeaderField(String(headerName), String(headerValue));
++
++ String contentType;
++ const char* officialType = soup_message_headers_get_one(headers, "Content-Type");
++@@ -108,7 +108,8 @@ CertificateInfo ResourceResponse::platfo
++
++ String ResourceResponse::platformSuggestedFilename() const
++ {
++- return filenameFromHTTPContentDisposition(httpHeaderField(HTTPHeaderName::ContentDisposition));
+++ String contentDisposition(httpHeaderField(HTTPHeaderName::ContentDisposition));
+++ return filenameFromHTTPContentDisposition(String::fromUTF8WithLatin1Fallback(contentDisposition.characters8(), contentDisposition.length()));
++ }
++
++ }
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Install the MiniBrowser binary
++Forwarded: not-needed
++Index: webkitgtk/Tools/MiniBrowser/gtk/main.c
++===================================================================
++--- webkitgtk.orig/Tools/MiniBrowser/gtk/main.c
+++++ webkitgtk/Tools/MiniBrowser/gtk/main.c
++@@ -240,7 +240,6 @@ aboutURISchemeRequestCallback(WebKitURIS
++ int main(int argc, char *argv[])
++ {
++ gtk_init(&argc, &argv);
++- g_setenv("WEBKIT_INJECTED_BUNDLE_PATH", WEBKIT_INJECTED_BUNDLE_PATH, FALSE);
++
++ const gchar *multiprocess = g_getenv("MINIBROWSER_MULTIPROCESS");
++ if (multiprocess && *multiprocess) {
++Index: webkitgtk/Tools/MiniBrowser/gtk/CMakeLists.txt
++===================================================================
++--- webkitgtk.orig/Tools/MiniBrowser/gtk/CMakeLists.txt
+++++ webkitgtk/Tools/MiniBrowser/gtk/CMakeLists.txt
++@@ -52,3 +52,4 @@ include_directories(${MiniBrowser_INCLUD
++ add_executable(MiniBrowser ${MiniBrowser_SOURCES})
++ target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
++ set_target_properties(MiniBrowser PROPERTIES FOLDER "Tools")
+++install(TARGETS MiniBrowser DESTINATION "${LIBEXEC_INSTALL_DIR}")
++Index: webkitgtk/CMakeLists.txt
++===================================================================
++--- webkitgtk.orig/CMakeLists.txt
+++++ webkitgtk/CMakeLists.txt
++@@ -184,3 +184,4 @@ add_subdirectory(Source)
++ if (ENABLE_TOOLS)
++ add_subdirectory(Tools)
++ endif ()
+++add_subdirectory(Tools/MiniBrowser/gtk)
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Fix FTBFS in Hurd
++Forwarded: no
++Index: webkitgtk/Source/WTF/wtf/InlineASM.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/InlineASM.h
+++++ webkitgtk/Source/WTF/wtf/InlineASM.h
++@@ -82,6 +82,7 @@
++ #elif OS(LINUX) \
++ || OS(FREEBSD) \
++ || OS(OPENBSD) \
+++ || OS(HURD) \
++ || OS(NETBSD)
++ // GNU as-compatible syntax.
++ #define LOCAL_LABEL_STRING(name) ".L" #name
--- /dev/null
--- /dev/null
++From: Carlos Alberto Lopez Perez <clopez@igalia.com>
++Subject: Don't use a SSL3.0 record version in client hello
++Origin: http://trac.webkit.org/changeset/176253
++Index: webkitgtk/Source/WebKit2/NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp
+++++ webkitgtk/Source/WebKit2/NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp
++@@ -39,7 +39,7 @@ int main(int argc, char** argv)
++ // overwrite this priority string if it's already set by the user.
++ // Keep this in sync with WebProcessMain.cpp.
++ // https://bugzilla.gnome.org/show_bug.cgi?id=738633
++- setenv("G_TLS_GNUTLS_PRIORITY", "NORMAL:%COMPAT:!VERS-SSL3.0", 0);
+++ setenv("G_TLS_GNUTLS_PRIORITY", "NORMAL:%COMPAT:%LATEST_RECORD_VERSION:!VERS-SSL3.0", 0);
++
++ return NetworkProcessMainUnix(argc, argv);
++ }
++Index: webkitgtk/Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp
+++++ webkitgtk/Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp
++@@ -39,7 +39,7 @@ int main(int argc, char** argv)
++ // overwrite this priority string if it's already set by the user.
++ // Keep this in sync with NetworkProcessMain.cpp.
++ // https://bugzilla.gnome.org/show_bug.cgi?id=738633
++- setenv("G_TLS_GNUTLS_PRIORITY", "NORMAL:%COMPAT:!VERS-SSL3.0", 0);
+++ setenv("G_TLS_GNUTLS_PRIORITY", "NORMAL:%COMPAT:%LATEST_RECORD_VERSION:!VERS-SSL3.0", 0);
++
++ return WebProcessMainUnix(argc, argv);
++ }
--- /dev/null
--- /dev/null
++From: Joanmarie Diggs <jdiggs@igalia.com>
++Subject: Check for NULL pointers in AccessibilityMenuListOption
++Origin: http://trac.webkit.org/changeset/176389
++Index: webkitgtk/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp
+++++ webkitgtk/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp
++@@ -104,9 +104,13 @@ bool AccessibilityMenuListOption::comput
++ LayoutRect AccessibilityMenuListOption::elementRect() const
++ {
++ AccessibilityObject* parent = parentObject();
+++ if (!parent)
+++ return boundingBoxRect();
++ ASSERT(parent->isMenuListPopup());
++
++ AccessibilityObject* grandparent = parent->parentObject();
+++ if (!grandparent)
+++ return boundingBoxRect();
++ ASSERT(grandparent->isMenuList());
++
++ return grandparent->elementRect();
--- /dev/null
--- /dev/null
++From: Csaba Osztrogonác <ossy@webkit.org>
++Subject: Check for NULL pointer in ApplyStyleCommand
++Origin: http://trac.webkit.org/changeset/176182
++Index: webkitgtk/Source/WebCore/editing/ApplyStyleCommand.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/editing/ApplyStyleCommand.cpp
+++++ webkitgtk/Source/WebCore/editing/ApplyStyleCommand.cpp
++@@ -257,6 +257,9 @@ void ApplyStyleCommand::applyBlockStyle(
++ // addBlockStyleIfNeeded may moveParagraphs, which can remove these endpoints.
++ // Calculate start and end indices from the start of the tree that they're in.
++ Node* scope = highestEditableRoot(visibleStart.deepEquivalent());
+++ if (!scope)
+++ return;
+++
++ RefPtr<Range> startRange = Range::create(document(), firstPositionInNode(scope), visibleStart.deepEquivalent().parentAnchoredEquivalent());
++ RefPtr<Range> endRange = Range::create(document(), firstPositionInNode(scope), visibleEnd.deepEquivalent().parentAnchoredEquivalent());
++ int startIndex = TextIterator::rangeLength(startRange.get(), true);
--- /dev/null
--- /dev/null
++From: Jeffrey Pfau <jpfau@apple.com>
++Subject: Check for NULL pointer in FrameProgressTracker
++Origin: http://trac.webkit.org/changeset/175919
++Index: webkitgtk/Source/WebCore/loader/FrameLoader.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/loader/FrameLoader.cpp
+++++ webkitgtk/Source/WebCore/loader/FrameLoader.cpp
++@@ -189,8 +189,7 @@ public:
++
++ ~FrameProgressTracker()
++ {
++- ASSERT(!m_inProgress || m_frame.page());
++- if (m_inProgress)
+++ if (m_inProgress && m_frame.page())
++ m_frame.page()->progress().progressCompleted(m_frame);
++ }
++
--- /dev/null
--- /dev/null
++From: David Kilzer <ddkilzer@apple.com>
++Subject: Protect Document in ProcessingInstruction::setXSLStyleSheet()
++Origin: http://trac.webkit.org/changeset/176014
++Index: webkitgtk/Source/WebCore/dom/ProcessingInstruction.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/dom/ProcessingInstruction.cpp
+++++ webkitgtk/Source/WebCore/dom/ProcessingInstruction.cpp
++@@ -215,6 +215,7 @@ void ProcessingInstruction::setXSLStyleS
++ {
++ ASSERT(m_isXSL);
++ m_sheet = XSLStyleSheet::create(this, href, baseURL);
+++ Ref<Document> protect(document());
++ parseStyleSheet(sheet);
++ }
++ #endif
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Make the remote inspector work again
++Bug: https://bugs.webkit.org/show_bug.cgi?id=138246
++Origin: http://trac.webkit.org/changeset/176392
++Index: webkitgtk/Source/WebKit2/UIProcess/WebPageProxy.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebKit2/UIProcess/WebPageProxy.cpp
+++++ webkitgtk/Source/WebKit2/UIProcess/WebPageProxy.cpp
++@@ -639,7 +639,7 @@ void WebPageProxy::initializeWebPage()
++ #endif
++
++ #if ENABLE(INSPECTOR_SERVER)
++- if (pageGroup().preferences().developerExtrasEnabled())
+++ if (m_preferences->developerExtrasEnabled())
++ inspector()->enableRemoteInspection();
++ #endif
++
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos <carlosgc@webkit.org>
++Subject: Fix invalid cast in WebCore::RenderBlock::blockSelectionGaps
++Bug: https://bugs.webkit.org/show_bug.cgi?id=137590
++Origin: http://trac.webkit.org/changeset/178261
++Index: webkitgtk/Source/WebCore/rendering/RenderBlock.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/rendering/RenderBlock.cpp
+++++ webkitgtk/Source/WebCore/rendering/RenderBlock.cpp
++@@ -2040,7 +2040,7 @@ GapRects RenderBlock::blockSelectionGaps
++ lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock) + curr->logicalBottom();
++ lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, curr->logicalBottom(), cache);
++ lastLogicalRight = logicalRightSelectionOffset(rootBlock, curr->logicalBottom(), cache);
++- } else if (childState != SelectionNone) {
+++ } else if (childState != SelectionNone && curr->isRenderBlock()) {
++ // We must be a block that has some selected object inside it. Go ahead and recur.
++ result.unite(toRenderBlock(curr)->selectionGaps(rootBlock, rootBlockPhysicalPosition, LayoutSize(offsetFromRootBlock.width() + curr->x(), offsetFromRootBlock.height() + curr->y()),
++ lastLogicalTop, lastLogicalLeft, lastLogicalRight, childCache, paintInfo));
--- /dev/null
--- /dev/null
++From: Zalan Bujtas <zalan@apple.com>
++Subject: Check for NULL pointer in SearchInputType.
++Origin: http://trac.webkit.org/changeset/175912
++Index: webkitgtk/Source/WebCore/html/SearchInputType.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/html/SearchInputType.cpp
+++++ webkitgtk/Source/WebCore/html/SearchInputType.cpp
++@@ -185,7 +185,7 @@ bool SearchInputType::searchEventsShould
++
++ void SearchInputType::didSetValueByUserEdit(ValueChangeState state)
++ {
++- if (m_cancelButton)
+++ if (m_cancelButton && element().renderer())
++ toRenderSearchField(element().renderer())->updateCancelButtonVisibility();
++
++ // If the incremental attribute is set, then dispatch the search event
--- /dev/null
--- /dev/null
++From: Alberto Garcia <berto@igalia.com>
++Subject: Restore removed SPARC code
++Bug: https://bugs.webkit.org/show_bug.cgi?id=124941
++Index: webkitgtk/Source/WTF/wtf/Platform.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/Platform.h
+++++ webkitgtk/Source/WTF/wtf/Platform.h
++@@ -138,6 +138,23 @@
++ #define WTF_CPU_SH4 1
++ #endif
++
+++/* CPU(SPARC32) - SPARC 32-bit */
+++#if defined(__sparc) && !defined(__arch64__) || defined(__sparcv8)
+++#define WTF_CPU_SPARC32 1
+++#define WTF_CPU_BIG_ENDIAN 1
+++#endif
+++
+++/* CPU(SPARC64) - SPARC 64-bit */
+++#if defined(__sparc__) && defined(__arch64__) || defined (__sparcv9)
+++#define WTF_CPU_SPARC64 1
+++#define WTF_CPU_BIG_ENDIAN 1
+++#endif
+++
+++/* CPU(SPARC) - any SPARC, true for CPU(SPARC32) and CPU(SPARC64) */
+++#if CPU(SPARC32) || CPU(SPARC64)
+++#define WTF_CPU_SPARC 1
+++#endif
+++
++ /* CPU(S390X) - S390 64-bit */
++ #if defined(__s390x__)
++ #define WTF_CPU_S390X 1
++@@ -333,7 +350,7 @@
++
++ #endif /* ARM */
++
++-#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
+++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC)
++ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
++ #endif
++
++@@ -643,6 +660,7 @@
++ || (CPU(IA64) && !CPU(IA64_32)) \
++ || CPU(ALPHA) \
++ || CPU(ARM64) \
+++ || CPU(SPARC64) \
++ || CPU(S390X) \
++ || CPU(PPC64) \
++ || CPU(PPC64LE)
++Index: webkitgtk/Source/WTF/wtf/dtoa/utils.h
++===================================================================
++--- webkitgtk.orig/Source/WTF/wtf/dtoa/utils.h
+++++ webkitgtk/Source/WTF/wtf/dtoa/utils.h
++@@ -49,7 +49,7 @@
++ defined(__ARMEL__) || \
++ defined(_MIPS_ARCH_MIPS32R2)
++ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
++-#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
+++#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
++ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
++ #elif defined(_M_IX86) || defined(__i386__)
++ #if defined(_WIN32)
--- /dev/null
--- /dev/null
++From: Carlos Garcia Campos carlosgc@webkit.org>
++Subject: Prevent unsafe access to internal types
++Bug: https://bugs.webkit.org/show_bug.cgi?id=138653
++Origin: http://trac.webkit.org/changeset/178320
++Index: webkitgtk/Source/JavaScriptCore/runtime/MapData.h
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/MapData.h
+++++ webkitgtk/Source/JavaScriptCore/runtime/MapData.h
++@@ -42,8 +42,8 @@ public:
++ const_iterator(const MapData*);
++ ~const_iterator();
++ const WTF::KeyValuePair<JSValue, JSValue> operator*() const;
++- JSValue key() const { ASSERT(!atEnd()); return m_mapData->m_entries[m_index].key.get(); }
++- JSValue value() const { ASSERT(!atEnd()); return m_mapData->m_entries[m_index].value.get(); }
+++ JSValue key() const { RELEASE_ASSERT(!atEnd()); return m_mapData->m_entries[m_index].key.get(); }
+++ JSValue value() const { RELEASE_ASSERT(!atEnd()); return m_mapData->m_entries[m_index].value.get(); }
++ void operator++() { ASSERT(!atEnd()); internalIncrement(); }
++ static const_iterator end(const MapData*);
++ bool operator!=(const const_iterator& other);
++Index: webkitgtk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
++===================================================================
++--- webkitgtk.orig/Source/WebCore/bindings/js/SerializedScriptValue.cpp
+++++ webkitgtk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
++@@ -1218,6 +1218,7 @@ SerializationReturnCode CloneSerializer:
++ Vector<JSObject*, 32> inputObjectStack;
++ Vector<MapData*, 4> mapDataStack;
++ Vector<MapData::const_iterator, 4> iteratorStack;
+++ Vector<JSValue, 4> iteratorValueStack;
++ Vector<WalkerState, 16> stateStack;
++ WalkerState state = StateUnknown;
++ JSValue inValue = in;
++@@ -1386,16 +1387,20 @@ SerializationReturnCode CloneSerializer:
++ goto objectStartVisitMember;
++ }
++ inValue = ptr.key();
+++ m_gcBuffer.append(ptr.value());
+++ iteratorValueStack.append(ptr.value());
++ stateStack.append(MapDataEndVisitKey);
++ goto stateUnknown;
++ }
++ case MapDataEndVisitKey: {
++- inValue = iteratorStack.last().value();
+++ inValue = iteratorValueStack.last();
+++ iteratorValueStack.removeLast();
++ stateStack.append(MapDataEndVisitValue);
++ goto stateUnknown;
++ }
++ case MapDataEndVisitValue: {
++- ++iteratorStack.last();
+++ if (iteratorStack.last() != mapDataStack.last()->end())
+++ ++iteratorStack.last();
++ goto mapDataStartVisitEntry;
++ }
++
--- /dev/null
--- /dev/null
++dfg-jit.patch
++install-minibrowser.patch
++restore_sparc_code.patch
++local-label-string-hurd.patch
++atomic_build_fix.patch
++css-image-set.patch
++fix-mips64-build.patch
++flash-crash.patch
++no-ssl-record-version.patch
++render-text-control.patch
++nullptr-frameprogresstracker.patch
++nullptr-applystylecommand.patch
++nullptr-accessibilitymenulistoption.patch
++twitter-inserted-text.patch
++protect-document.patch
++at-spi2.patch
++ax-focus-events.patch
++fix-ftbfs-hppa.patch
++fix-gstreamer-leak.patch
++remote-inspector.patch
++render-block-cast.patch
++fix-jit-crash.patch
++fix-null-renderer.patch
++fix-integer-overflow.patch
++serialized-script-value.patch
++http-latin1.patch
++fix-null-string-conversion.patch
++fix-timers-animations.patch
++fix-ax-crash.patch
++fix-clearselection-segfault.patch
++fix-date.patch
++check-tls-errors.patch
--- /dev/null
--- /dev/null
++From: Andreas Kling <akling@apple.com>
++Subject: Fix inserted text when typing in the Twitter message box.
++Origin: http://trac.webkit.org/changeset/176824
++Index: webkitgtk/Source/JavaScriptCore/runtime/JSString.h
++===================================================================
++--- webkitgtk.orig/Source/JavaScriptCore/runtime/JSString.h
+++++ webkitgtk/Source/JavaScriptCore/runtime/JSString.h
++@@ -482,12 +482,7 @@ ALWAYS_INLINE AtomicStringImpl* JSString
++ return static_cast<const JSRopeString*>(this)->resolveRopeToExistingAtomicString(exec);
++ if (m_value.impl()->isAtomic())
++ return static_cast<AtomicStringImpl*>(m_value.impl());
++- if (AtomicStringImpl* existingAtomicString = AtomicString::find(m_value.impl())) {
++- m_value = *existingAtomicString;
++- setIs8Bit(m_value.impl()->is8Bit());
++- return existingAtomicString;
++- }
++- return nullptr;
+++ return AtomicString::find(m_value.impl());
++ }
++
++ inline const String& JSString::value(ExecState* exec) const
--- /dev/null
--- /dev/null
++#!/usr/bin/make -f
++
++DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
++DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
++DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
++
++CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) -Wall
++CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
++LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed
++
++EXTRA_DH_ARGUMENTS =
++
++# Sacrifice speed in order to make it more likely resource limits
++# won't be hit.
++ifeq ($(DEB_HOST_ARCH_BITS),32)
++ LDFLAGS += -Wl,--no-keep-memory
++endif
++
++ifeq ($(DEB_BUILD_ARCH),alpha)
++ LDFLAGS += -Wl,--no-relax
++endif
++
++# Disable debugging symbols on these arches.
++ifneq (,$(filter $(DEB_BUILD_ARCH),hurd-i386 ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel powerpc powerpcspe s390 s390x sparc armel armhf))
++ CFLAGS := $(CFLAGS:-g=)
++ EXTRA_DH_ARGUMENTS += -Nlibwebkit2gtk-4.0-37-dbg -Nlibjavascriptcoregtk-4.0-18-dbg
++endif
++
++# See https://bugs.webkit.org/show_bug.cgi?id=113638
++ifeq (,$(filter $(DEB_BUILD_ARCH),i386 amd64 hurd-i386 kfreebsd-i386 kfreebsd-amd64 armhf))
++ EXTRA_CMAKE_ARGUMENTS += -DENABLE_JIT=OFF
++ CPPFLAGS += -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0
++endif
++
++ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
++ EXTRA_CMAKE_ARGUMENTS += -DUSE_SYSTEM_MALLOC=ON
++endif
++
++ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
++ EXTRA_CMAKE_ARGUMENTS += -DCMAKE_BUILD_TYPE=Debug
++else
++ EXTRA_CMAKE_ARGUMENTS += -DCMAKE_BUILD_TYPE=Release
++ CPPFLAGS += -DNDEBUG
++endif
++
++ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
++ DEB_DH_GENCONTROL_ARGS += -- -Vgst:Recommends=""
++else
++ DEB_DH_GENCONTROL_ARGS += -- -Vgst:Recommends="gstreamer1.0-plugins-bad, gstreamer1.0-libav,"
++endif
++
++%:
++ dh $@ --parallel $(EXTRA_DH_ARGUMENTS)
++
++override_dh_auto_configure:
++ slimit -m debian/jquery-1.9.1.js > \
++ Source/WebInspectorUI/Tools/PrettyPrinting/populate/jquery.min.js
++ CFLAGS="$(CFLAGS) $(CPPFLAGS)" \
++ CXXFLAGS="$(CFLAGS) $(CPPFLAGS)" \
++ LDFLAGS="$(LDFLAGS)" \
++ dh_auto_configure -- \
++ -DPORT=GTK \
++ -DCMAKE_INSTALL_LIBEXECDIR=lib/$(DEB_HOST_MULTIARCH) \
++ -DCMAKE_C_FLAGS_RELEASE="" \
++ -DCMAKE_C_FLAGS_DEBUG="" \
++ -DCMAKE_CXX_FLAGS_RELEASE="" \
++ -DCMAKE_CXX_FLAGS_DEBUG="" \
++ $(EXTRA_CMAKE_ARGUMENTS)
++
++override_dh_strip:
++ dh_strip -plibwebkit2gtk-4.0-37 --dbg-package=libwebkit2gtk-4.0-37-dbg $(EXTRA_DH_ARGUMENTS)
++ dh_strip -plibjavascriptcoregtk-4.0-18 --dbg-package=libjavascriptcoregtk-4.0-18-dbg $(EXTRA_DH_ARGUMENTS)
++ dh_strip $(EXTRA_DH_ARGUMENTS)
++
++override_dh_makeshlibs:
++ dh_makeshlibs -plibwebkit2gtk-4.0-37 -Xinjected-bundle $(EXTRA_DH_ARGUMENTS)
++ dh_makeshlibs -plibjavascriptcoregtk-4.0-18 $(EXTRA_DH_ARGUMENTS)
++
++override_dh_shlibdeps:
++ dh_shlibdeps $(EXTRA_DH_ARGUMENTS)
++ dh_girepository $(EXTRA_DH_ARGUMENTS)
++
++override_dh_clean:
++ dh_clean $(EXTRA_DH_ARGUMENTS)
++ rm -f Source/WebInspectorUI/Tools/PrettyPrinting/populate/jquery.min.js
++
++override_dh_auto_test:
++
++VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p')
++UPSTREAM_VERSION := $(shell echo $(VERSION) | sed 's/+dfsg1//')
++
++get-orig-source:
++ dh_testdir
++ uscan --rename --download-current-version
++ mkdir "webkit2gtk-$(VERSION)"
++ tar -C "webkit2gtk-$(VERSION)" \
++ --strip-components=1 \
++ --exclude=Source/WebInspectorUI/Tools/PrettyPrinting/populate/jquery.min.js \
++ --exclude=Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon \
++ -xaf "../webkit2gtk_$(UPSTREAM_VERSION).orig.tar.xz"
++ fakeroot tar -caf "../webkit2gtk_$(VERSION).orig.tar.xz" \
++ "webkit2gtk-$(VERSION)"
++ rm -rf "webkit2gtk-$(VERSION)"
--- /dev/null
--- /dev/null
++3.0 (quilt)
--- /dev/null
--- /dev/null
++version=3
++opts="dversionmangle=s/\+dfsg\d+$//" \
++ http://webkitgtk.org/releases/ webkitgtk-([\d]+\.[\d]*[\d]\.[\d]+).tar.xz