summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-06-07 11:54:03 +0200
committerLudovic Courtès <ludo@gnu.org>2016-06-07 11:54:03 +0200
commitaeafff536f933b07836b14d089dfc52b0e432ec9 (patch)
tree4ede554999f98cf9e19c04098c934db52efae795
parent9dee9e8ffe4650949bd3ad2edf559cf4a33e9e6e (diff)
parentf82c58539e1f7b9b864e68ea2ab0c6a17c15fbb5 (diff)
downloadguix-aeafff536f933b07836b14d089dfc52b0e432ec9.tar.gz
Merge branch 'master' into core-updates
-rw-r--r--Makefile.am5
-rw-r--r--doc/guix.texi114
-rw-r--r--doc/local.mk84
-rw-r--r--emacs/guix-base.el21
-rw-r--r--emacs/guix-main.scm22
-rw-r--r--emacs/guix-ui-package.el105
-rw-r--r--emacs/guix-utils.el33
-rw-r--r--emacs/local.mk74
-rw-r--r--gnu/build/linux-container.scm53
-rw-r--r--gnu/local.mk1596
-rw-r--r--gnu/packages/admin.scm19
-rw-r--r--gnu/packages/algebra.scm2
-rw-r--r--gnu/packages/autogen.scm30
-rw-r--r--gnu/packages/autotools.scm22
-rw-r--r--gnu/packages/avr.scm110
-rw-r--r--gnu/packages/backup.scm10
-rw-r--r--gnu/packages/base.scm5
-rw-r--r--gnu/packages/bioinformatics.scm85
-rw-r--r--gnu/packages/bittorrent.scm10
-rw-r--r--gnu/packages/ci.scm4
-rw-r--r--gnu/packages/code.scm2
-rw-r--r--gnu/packages/compression.scm38
-rw-r--r--gnu/packages/cross-base.scm6
-rw-r--r--gnu/packages/crypto.scm4
-rw-r--r--gnu/packages/cyrus-sasl.scm4
-rw-r--r--gnu/packages/databases.scm42
-rw-r--r--gnu/packages/dav.scm12
-rw-r--r--gnu/packages/dictionaries.scm39
-rw-r--r--gnu/packages/disk.scm8
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/docbook.scm2
-rw-r--r--gnu/packages/ebook.scm7
-rw-r--r--gnu/packages/elf.scm4
-rw-r--r--gnu/packages/emacs.scm676
-rw-r--r--gnu/packages/engineering.scm6
-rw-r--r--gnu/packages/enlightenment.scm12
-rw-r--r--gnu/packages/finance.scm2
-rw-r--r--gnu/packages/flashing-tools.scm30
-rw-r--r--gnu/packages/fontutils.scm15
-rw-r--r--gnu/packages/freeipmi.scm6
-rw-r--r--gnu/packages/games.scm65
-rw-r--r--gnu/packages/gd.scm11
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/gettext.scm2
-rw-r--r--gnu/packages/gimp.scm14
-rw-r--r--gnu/packages/gnome.scm40
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnuzilla.scm45
-rw-r--r--gnu/packages/gprolog.scm5
-rw-r--r--gnu/packages/grub.scm7
-rw-r--r--gnu/packages/gtk.scm56
-rw-r--r--gnu/packages/haskell.scm127
-rw-r--r--gnu/packages/hurd.scm28
-rw-r--r--gnu/packages/idutils.scm2
-rw-r--r--gnu/packages/image.scm37
-rw-r--r--gnu/packages/imagemagick.scm9
-rw-r--r--gnu/packages/java.scm10
-rw-r--r--gnu/packages/julia.scm10
-rw-r--r--gnu/packages/linux-libre-4.6-i686.conf (renamed from gnu/packages/linux-libre-4.5-i686.conf)256
-rw-r--r--gnu/packages/linux-libre-4.6-x86_64.conf (renamed from gnu/packages/linux-libre-4.5-x86_64.conf)255
-rw-r--r--gnu/packages/linux.scm31
-rw-r--r--gnu/packages/lirc.scm32
-rw-r--r--gnu/packages/lisp.scm2
-rw-r--r--gnu/packages/lua.scm36
-rw-r--r--gnu/packages/machine-learning.scm98
-rw-r--r--gnu/packages/mail.scm5
-rw-r--r--gnu/packages/maths.scm117
-rw-r--r--gnu/packages/mcrypt.scm7
-rw-r--r--gnu/packages/messaging.scm4
-rw-r--r--gnu/packages/moreutils.scm28
-rw-r--r--gnu/packages/mp3.scm47
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/networking.scm75
-rw-r--r--gnu/packages/ntp.scm16
-rw-r--r--gnu/packages/ocaml.scm4
-rw-r--r--gnu/packages/package-management.scm7
-rw-r--r--gnu/packages/parallel.scm29
-rw-r--r--gnu/packages/patches/a2ps-CVE-2001-1593.patch69
-rw-r--r--gnu/packages/patches/a2ps-CVE-2014-0466.patch30
-rw-r--r--gnu/packages/patches/antiword-CVE-2014-8123.patch21
-rw-r--r--gnu/packages/patches/devil-CVE-2009-3994.patch24
-rw-r--r--gnu/packages/patches/emacs-fix-scheme-indent-function.patch29
-rw-r--r--gnu/packages/patches/gd-CVE-2016-3074.patch36
-rw-r--r--gnu/packages/patches/gegl-CVE-2012-4433.patch117
-rw-r--r--gnu/packages/patches/icedtea-remove-overrides.patch291
-rw-r--r--gnu/packages/patches/id3lib-CVE-2007-4460.patch54
-rw-r--r--gnu/packages/patches/jansson-CVE-2016-4425.patch125
-rw-r--r--gnu/packages/patches/libtar-CVE-2013-4420.patch118
-rw-r--r--gnu/packages/patches/libyaml-CVE-2014-9130.patch30
-rw-r--r--gnu/packages/patches/lua-CVE-2014-5461.patch20
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4409.patch33
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4426.patch36
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4527.patch111
-rw-r--r--gnu/packages/patches/pcre2-CVE-2016-3191.patch179
-rw-r--r--gnu/packages/patches/procmail-CVE-2014-3618.patch26
-rw-r--r--gnu/packages/patches/rpm-CVE-2014-8118.patch25
-rw-r--r--gnu/packages/patches/rush-CVE-2013-6889.patch23
-rw-r--r--gnu/packages/patches/t1lib-CVE-2010-2642.patch24
-rw-r--r--gnu/packages/patches/t1lib-CVE-2011-0764.patch32
-rw-r--r--gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch133
-rw-r--r--gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch83
-rw-r--r--gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch29
-rw-r--r--gnu/packages/patches/vte-CVE-2012-2738-pt1.patch40
-rw-r--r--gnu/packages/patches/vte-CVE-2012-2738-pt2.patch82
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-2149.patch19
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch710
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch18
-rw-r--r--gnu/packages/pciutils.scm65
-rw-r--r--gnu/packages/pcre.scm2
-rw-r--r--gnu/packages/pdf.scm8
-rw-r--r--gnu/packages/photo.scm9
-rw-r--r--gnu/packages/plotutils.scm4
-rw-r--r--gnu/packages/popt.scm33
-rw-r--r--gnu/packages/pretty-print.scm67
-rw-r--r--gnu/packages/python.scm227
-rw-r--r--gnu/packages/qemu.scm97
-rw-r--r--gnu/packages/qt.scm254
-rw-r--r--gnu/packages/rails.scm95
-rw-r--r--gnu/packages/ruby.scm217
-rw-r--r--gnu/packages/rush.scm5
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/screen.scm17
-rw-r--r--gnu/packages/speech.scm51
-rw-r--r--gnu/packages/statistics.scm63
-rw-r--r--gnu/packages/synergy.scm48
-rw-r--r--gnu/packages/task-management.scm4
-rw-r--r--gnu/packages/telephony.scm41
-rw-r--r--gnu/packages/terminals.scm56
-rw-r--r--gnu/packages/tex.scm (renamed from gnu/packages/texlive.scm)41
-rw-r--r--gnu/packages/textutils.scm5
-rw-r--r--gnu/packages/tls.scm17
-rw-r--r--gnu/packages/version-control.scm16
-rw-r--r--gnu/packages/video.scm11
-rw-r--r--gnu/packages/web.scm60
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wordnet.scm59
-rw-r--r--gnu/packages/wxwidgets.scm2
-rw-r--r--gnu/packages/xdisorg.scm80
-rw-r--r--gnu/packages/xiph.scm5
-rw-r--r--gnu/packages/xml.scm18
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm66
-rw-r--r--gnu/services/dict.scm131
-rw-r--r--gnu/system/file-systems.scm1
-rw-r--r--gnu/system/install.scm5
-rw-r--r--guix/build-system/emacs.scm6
-rw-r--r--guix/build/bournish.scm23
-rw-r--r--guix/build/download.scm28
-rw-r--r--guix/build/emacs-build-system.scm23
-rw-r--r--guix/build/graft.scm21
-rw-r--r--guix/build/ruby-build-system.scm19
-rw-r--r--guix/build/union.scm36
-rw-r--r--guix/cve.scm156
-rw-r--r--guix/download.scm37
-rw-r--r--guix/grafts.scm27
-rw-r--r--guix/graph.scm30
-rw-r--r--guix/import/github.scm4
-rw-r--r--guix/profiles.scm1
-rw-r--r--guix/scripts/environment.scm6
-rw-r--r--guix/scripts/gc.scm3
-rw-r--r--guix/scripts/offload.scm3
-rw-r--r--guix/scripts/package.scm10
-rw-r--r--guix/scripts/refresh.scm117
-rw-r--r--guix/scripts/size.scm36
-rwxr-xr-xguix/scripts/substitute.scm6
-rw-r--r--guix/store.scm14
-rw-r--r--guix/ui.scm6
-rw-r--r--nix/libstore/build.cc80
-rw-r--r--nix/libstore/local-store.cc9
-rw-r--r--nix/libstore/pathlocks.cc6
-rw-r--r--nix/libutil/xml-writer.cc94
-rw-r--r--nix/libutil/xml-writer.hh69
-rw-r--r--nix/local.mk136
-rw-r--r--po/packages/POTFILES.in2
-rw-r--r--tests/bournish.scm42
-rw-r--r--tests/containers.scm12
-rw-r--r--tests/cve.scm17
-rw-r--r--tests/graph.scm13
-rw-r--r--tests/guix-environment-container.sh10
-rw-r--r--tests/guix-environment.sh15
-rw-r--r--tests/guix-lint.sh2
-rw-r--r--tests/guix-package.sh14
-rw-r--r--tests/size.scm4
-rw-r--r--tests/store.scm39
184 files changed, 8112 insertions, 2377 deletions
diff --git a/Makefile.am b/Makefile.am
index c2c571cf3b..50cde52701 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -174,8 +174,8 @@ dist_noinst_DATA = guix/tests.scm
 
 # Linux-Libre configurations.
 KCONFIGS =					\
-  gnu/packages/linux-libre-4.5-i686.conf	\
-  gnu/packages/linux-libre-4.5-x86_64.conf	\
+  gnu/packages/linux-libre-4.6-i686.conf	\
+  gnu/packages/linux-libre-4.6-x86_64.conf	\
   gnu/packages/linux-libre-4.4-i686.conf	\
   gnu/packages/linux-libre-4.4-x86_64.conf	\
   gnu/packages/linux-libre-4.1-i686.conf	\
@@ -248,6 +248,7 @@ SCM_TESTS =					\
   tests/profiles.scm				\
   tests/syscalls.scm				\
   tests/gremlin.scm				\
+  tests/bournish.scm				\
   tests/lint.scm				\
   tests/publish.scm				\
   tests/scripts.scm				\
diff --git a/doc/guix.texi b/doc/guix.texi
index d88cc256d7..b9bf986640 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -336,6 +336,13 @@ manager, which can be done on top of a running GNU/Linux system.  If,
 instead, you want to install the complete GNU operating system,
 @pxref{System Installation}.
 
+@cindex foreign distro
+When installed on a running GNU/Linux system---thereafter called a
+@dfn{foreign distro}---GNU@tie{}Guix complements the available tools
+without interference.  Its data lives exclusively in two directories,
+usually @file{/gnu/store} and @file{/var/guix}; other files on your
+system, such as @file{/etc}, are left untouched.
+
 @menu
 * Binary Installation::         Getting Guix running in no time!
 * Requirements::                Software needed to build and run Guix.
@@ -375,7 +382,7 @@ If that command fails because you do not have the required public key,
 then run this command to import it:
 
 @example
-$ gpg --keyserver keys.gnupg.net --recv-keys 090B11993D9AEBB5
+$ gpg --keyserver pgp.mit.edu --recv-keys 090B11993D9AEBB5
 @end example
 
 @noindent
@@ -998,6 +1005,10 @@ consecutive build results are not bit-for-bit identical.  Note that this
 setting can be overridden by clients such as @command{guix build}
 (@pxref{Invoking guix build}).
 
+When used in conjunction with @option{--keep-failed}, the differing
+output is kept in the store, under @file{/gnu/store/@dots{}-check}.
+This makes it easy to look for differences between the two results.
+
 @item --debug
 Produce debugging output.
 
@@ -1092,6 +1103,7 @@ daemons on the same machine.
 @node Application Setup
 @section Application Setup
 
+@cindex foreign distro
 When using Guix on top of GNU/Linux distribution other than GuixSD---a
 so-called @dfn{foreign distro}---a few additional steps are needed to
 get everything in place.  Here are some of them.
@@ -3082,7 +3094,7 @@ Store Monad}).
 
 @cindex derivations
 Low-level build actions and the environment in which they are performed
-are represented by @dfn{derivations}.  A derivation contain the
+are represented by @dfn{derivations}.  A derivation contains the
 following pieces of information:
 
 @itemize
@@ -4332,6 +4344,10 @@ substitutes are genuine (@pxref{Substitutes}), or whether the build result
 of a package is deterministic.  @xref{Invoking guix challenge}, for more
 background information and tools.
 
+When used in conjunction with @option{--keep-failed}, the differing
+output is kept in the store, under @file{/gnu/store/@dots{}-check}.
+This makes it easy to look for differences between the two results.
+
 @item --derivations
 @itemx -d
 Return the derivation paths, not the output paths, of the given
@@ -5058,6 +5074,24 @@ reports information based on the available substitutes
 (@pxref{Substitutes}).  This makes it possible it to profile disk usage of
 store items that are not even on disk, only available remotely.
 
+You can also specify several package names:
+
+@example
+$ guix size coreutils grep sed bash
+store item                               total    self
+/gnu/store/@dots{}-coreutils-8.24          77.8    13.8  13.4%
+/gnu/store/@dots{}-grep-2.22               73.1     0.8   0.8%
+/gnu/store/@dots{}-bash-4.3.42             72.3     4.7   4.6%
+/gnu/store/@dots{}-readline-6.3            67.6     1.2   1.2%
+@dots{}
+total: 102.3 MiB
+@end example
+
+@noindent
+In this example we see that the combination of the four packages takes
+102.3@tie{}MiB in total, which is much less than the sum of each closure
+since they have a lot of dependencies in common.
+
 The available options are:
 
 @table @option
@@ -5948,6 +5982,11 @@ dependencies of your system configuration can be downloaded.  See the
 ``Networking'' section below.
 @end quotation
 
+The installation system includes many common tools needed for this task.
+But it is also a full-blown GuixSD system, which means that you can
+install additional packages, should you need it, using @command{guix
+package} (@pxref{Invoking guix package}).
+
 @subsubsection Keyboard Layout
 
 @cindex keyboard layout
@@ -5971,6 +6010,13 @@ Run the following command see what your network interfaces are called:
 ifconfig -a
 @end example
 
+@noindent
+@dots{} or, using the GNU/Linux-specific @command{ip} command:
+
+@example
+ip a
+@end example
+
 @c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20
 Wired interfaces have a name starting with @samp{e}; for example, the
 interface corresponding to the first on-board Ethernet controller is
@@ -7337,6 +7383,17 @@ Return a service that runs the Guix build daemon according to
 Run @var{udev}, which populates the @file{/dev} directory dynamically.
 @end deffn
 
+@deffn {Scheme Procedure} urandom-seed-service @var{#f}
+Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
+when rebooting.
+@end deffn
+
+@defvr {Scheme Variable} %random-seed-file
+This is the name of the file where some random bytes are saved by
+@var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting.
+It defaults to @file{/var/lib/random-seed}.
+@end defvr
+
 @deffn {Scheme Procedure} console-keymap-service @var{files} ...
 @cindex keyboard layout
 Return a service to load console keymaps from @var{files} using
@@ -9338,6 +9395,55 @@ Finally, @var{extra-options} is a list of additional command-line options
 passed to @command{lircd}.
 @end deffn
 
+@subsubsection Dictionary Services
+The @code{(gnu services dict)} module provides the following service:
+
+@deffn {Scheme Procedure} dicod-service [#:config (dicod-configuration)]
+Return a service that runs the @command{dicod} daemon, an implementation
+of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
+
+The optional @var{config} argument specifies the configuration for
+@command{dicod}, which should be a @code{<dicod-configuration>} object, by
+default it serves the GNU Collaborative International Dictonary of English.
+
+You can add @command{open localhost} to your @file{~/.dico} file to make
+@code{localhost} the default server for @command{dico} client
+(@pxref{Initialization File,,, dico, GNU Dico Manual}).
+@end deffn
+
+@deftp {Data Type} dicod-configuration
+Data type representing the configuration of dicod.
+
+@table @asis
+@item @code{dico} (default: @var{dico})
+Package object of the GNU Dico dictionary server.
+
+@item @code{databases} (default: @var{(list %dicod-database:gcide)})
+List of @code{<dicod-database>} objects denoting dictionaries to be served.
+@end table
+@end deftp
+
+@deftp {Data Type} dicod-database
+Data type representing a dictionary database.
+
+@table @asis
+@item @code{name}
+Name of the database, will be used in DICT commands.
+
+@item @code{module}
+Name of the dicod module used by this database
+(@pxref{Modules,,, dico, GNU Dico Manual}).
+
+@item @code{options}
+List of strings or gexps representing the arguments for the module handler
+(@pxref{Handlers,,, dico, GNU Dico Manual}).
+@end table
+@end deftp
+
+@defvr {Scheme Variable} %dicod-database:gcide
+A @code{<dicod-database>} object serving the GNU Collaborative International
+Dictonary of English using the @code{gcide} package.
+@end defvr
 
 @node Setuid Programs
 @subsection Setuid Programs
@@ -11068,7 +11174,9 @@ packages with the corresponding names.
 
 If a project already contains the word @code{python}, we drop this;
 for instance, the module python-dateutil is packaged under the names
-@code{python-dateutil} and @code{python2-dateutil}.
+@code{python-dateutil} and @code{python2-dateutil}.  If the project name
+starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as
+described above.
 
 
 @node Perl Modules
diff --git a/doc/local.mk b/doc/local.mk
index b9f07c3590..64bd2a5169 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -20,49 +20,49 @@
 # You should have received a copy of the GNU General Public License
 # along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
-info_TEXINFOS = doc/guix.texi
+info_TEXINFOS = %D%/guix.texi
 
 DOT_FILES =					\
-  doc/images/bootstrap-graph.dot		\
-  doc/images/bootstrap-packages.dot		\
-  doc/images/coreutils-graph.dot		\
-  doc/images/coreutils-bag-graph.dot		\
-  doc/images/service-graph.dot			\
-  doc/images/shepherd-graph.dot
+  %D%/images/bootstrap-graph.dot		\
+  %D%/images/bootstrap-packages.dot		\
+  %D%/images/coreutils-graph.dot		\
+  %D%/images/coreutils-bag-graph.dot		\
+  %D%/images/service-graph.dot			\
+  %D%/images/shepherd-graph.dot
 
 DOT_VECTOR_GRAPHICS =				\
   $(DOT_FILES:%.dot=%.eps)			\
   $(DOT_FILES:%.dot=%.pdf)
 
 EXTRA_DIST +=					\
-  doc/htmlxref.cnf				\
-  doc/contributing.texi				\
-  doc/emacs.texi				\
-  doc/fdl-1.3.texi				\
+  %D%/htmlxref.cnf				\
+  %D%/contributing.texi				\
+  %D%/emacs.texi				\
+  %D%/fdl-1.3.texi				\
   $(DOT_FILES)					\
   $(DOT_VECTOR_GRAPHICS)			\
-  doc/images/coreutils-size-map.eps		\
-  doc/environment-gdb.scm			\
-  doc/package-hello.scm
+  %D%/images/coreutils-size-map.eps		\
+  %D%/environment-gdb.scm			\
+  %D%/package-hello.scm
 
 OS_CONFIG_EXAMPLES_TEXI =			\
-  doc/os-config-bare-bones.texi			\
-  doc/os-config-desktop.texi			\
-  doc/os-config-lightweight-desktop.texi
+  %D%/os-config-bare-bones.texi			\
+  %D%/os-config-desktop.texi			\
+  %D%/os-config-lightweight-desktop.texi
 
 # Bundle this file so that makeinfo finds it in out-of-source-tree builds.
 BUILT_SOURCES        += $(OS_CONFIG_EXAMPLES_TEXI)
 EXTRA_DIST           += $(OS_CONFIG_EXAMPLES_TEXI)
 MAINTAINERCLEANFILES  = $(OS_CONFIG_EXAMPLES_TEXI)
 
-doc/os-config-%.texi: gnu/system/examples/%.tmpl
+%D%/os-config-%.texi: gnu/system/examples/%.tmpl
 	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";	\
 	cp "$<" "$@"
 
 infoimagedir = $(infodir)/images
 dist_infoimage_DATA =				\
   $(DOT_FILES:%.dot=%.png)			\
-  doc/images/coreutils-size-map.png
+  %D%/images/coreutils-size-map.png
 
 # Try hard to obtain an image size and aspect that's reasonable for inclusion
 # in an Info or PDF document.
@@ -86,13 +86,13 @@ DOT_OPTIONS =					\
 	$(AM_V_GEN)convert "$<" "$@-tmp.eps"; \
 	mv "$@-tmp.eps" "$@"
 
-# We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake)
+# We cannot add new dependencies to `%D%/guix.pdf' & co. (info "(automake)
 # Extending").  Using the `-local' rules is imperfect, because they may be
 # triggered after the main rule.  Oh, well.
 pdf-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.pdf)
 info-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.png)
 ps-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.eps)		\
-	  $(top_srcdir)/doc/images/coreutils-size-map.eps
+	  $(top_srcdir)/%D%/images/coreutils-size-map.eps
 dvi-local: ps-local
 
 ## ----------- ##
@@ -106,25 +106,25 @@ dvi-local: ps-local
 # They are built in $(srcdir) like info manuals.
 
 sub_commands_mans =				\
-  $(srcdir)/doc/guix-archive.1			\
-  $(srcdir)/doc/guix-build.1			\
-  $(srcdir)/doc/guix-challenge.1		\
-  $(srcdir)/doc/guix-download.1			\
-  $(srcdir)/doc/guix-edit.1			\
-  $(srcdir)/doc/guix-environment.1		\
-  $(srcdir)/doc/guix-gc.1			\
-  $(srcdir)/doc/guix-hash.1			\
-  $(srcdir)/doc/guix-import.1			\
-  $(srcdir)/doc/guix-lint.1			\
-  $(srcdir)/doc/guix-package.1			\
-  $(srcdir)/doc/guix-publish.1			\
-  $(srcdir)/doc/guix-pull.1			\
-  $(srcdir)/doc/guix-refresh.1			\
-  $(srcdir)/doc/guix-size.1			\
-  $(srcdir)/doc/guix-system.1
+  $(srcdir)/%D%/guix-archive.1			\
+  $(srcdir)/%D%/guix-build.1			\
+  $(srcdir)/%D%/guix-challenge.1		\
+  $(srcdir)/%D%/guix-download.1			\
+  $(srcdir)/%D%/guix-edit.1			\
+  $(srcdir)/%D%/guix-environment.1		\
+  $(srcdir)/%D%/guix-gc.1			\
+  $(srcdir)/%D%/guix-hash.1			\
+  $(srcdir)/%D%/guix-import.1			\
+  $(srcdir)/%D%/guix-lint.1			\
+  $(srcdir)/%D%/guix-package.1			\
+  $(srcdir)/%D%/guix-publish.1			\
+  $(srcdir)/%D%/guix-pull.1			\
+  $(srcdir)/%D%/guix-refresh.1			\
+  $(srcdir)/%D%/guix-size.1			\
+  $(srcdir)/%D%/guix-system.1
 
 dist_man1_MANS =				\
-  $(srcdir)/doc/guix.1				\
+  $(srcdir)/%D%/guix.1				\
   $(sub_commands_mans)
 
 gen_man =						\
@@ -133,14 +133,14 @@ gen_man =						\
 
 HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
 
-$(srcdir)/doc/guix.1: scripts/guix.in $(sub_commands_mans)
+$(srcdir)/%D%/guix.1: scripts/guix.in $(sub_commands_mans)
 	-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 
 # The 'case' ensures the man pages are only generated if the corresponding
 # source script (the first prerequisite) has been changed.  The $(GOBJECTS)
 # prerequisite is solely meant to force these docs to be made only after all
 # Guile modules have been compiled.
-$(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
+$(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
 	-@case '$?' in \
 	  *$<*) $(AM_V_P) && set -x || echo "  HELP2MAN $@"; \
 	        $(gen_man) --output="$@" "guix $*";; \
@@ -149,9 +149,9 @@ $(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
 
 if BUILD_DAEMON
 
-dist_man1_MANS += $(srcdir)/doc/guix-daemon.1
+dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1
 
-$(srcdir)/doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
+$(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
 	-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 
 endif
diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 888836428f..658cfdb5fa 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -207,6 +207,13 @@ Ask a user with PROMPT for continuing an operation."
    (guix-make-guile-expression
     'package-source-path package-id)))
 
+(defun guix-package-store-path (package-id)
+  "Return a list of store directories of outputs of package PACKAGE-ID."
+  (message "Calculating the package derivation ...")
+  (guix-eval-read
+   (guix-make-guile-expression
+    'package-store-path package-id)))
+
 (defvar guix-after-source-download-hook nil
   "Hook run after successful performing a 'source-download' operation.")
 
@@ -224,6 +231,20 @@ Ask a user with PROMPT for continuing an operation."
       :dry-run? (or guix-dry-run 'f))
      nil 'source-download)))
 
+(defun guix-build-package (package-id &optional prompt)
+  "Build package with PACKAGE-ID.
+Ask a user with PROMPT for continuing the build operation."
+  (when (or (not guix-operation-confirm)
+            (guix-operation-prompt (or prompt "Build package?")))
+    (guix-eval-in-repl
+     (format (concat ",run-in-store "
+                     "(build-package (package-by-id %d)"
+                     " #:use-substitutes? %s"
+                     " #:dry-run? %s)")
+             package-id
+             (guix-guile-boolean guix-use-substitutes)
+             (guix-guile-boolean guix-dry-run)))))
+
 ;;;###autoload
 (defun guix-apply-manifest (profile file &optional operation-buffer)
   "Apply manifest from FILE to PROFILE.
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index e645a85e7d..cbf7cdc474 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -51,6 +51,7 @@
  (guix licenses)
  (guix utils)
  (guix ui)
+ (guix scripts)
  (guix scripts package)
  (gnu packages)
  (gnu system))
@@ -953,6 +954,17 @@ GENERATIONS is a list of generation numbers."
                ((package _ ...) package)))
          (compose location->string package-location)))
 
+(define (package-store-path package-id)
+  "Return a list of store directories of outputs of package PACKAGE-ID."
+  (match (package-by-id package-id)
+    (#f '())
+    (package
+      (with-store store
+        (map (match-lambda
+               ((_ . drv)
+                (derivation-output-path drv)))
+             (derivation-outputs (package-derivation store package)))))))
+
 (define (package-source-derivation->store-path derivation)
   "Return a store path of the package source DERIVATION."
   (match (derivation-outputs derivation)
@@ -988,6 +1000,16 @@ GENERATIONS is a list of generation numbers."
         (format #t "The source store path: ~a~%"
                 (package-source-derivation->store-path derivation))))))
 
+(define (package-build-log-file package-id)
+  "Return the build log file of a package PACKAGE-ID.
+Return #f if the build log is not found."
+  (and-let* ((package (package-by-id package-id)))
+    (with-store store
+      (let* ((derivation (package-derivation store package))
+             (file       (derivation-file-name derivation)))
+        (or (log-file store file)
+            ((@@ (guix scripts build) log-url) store file))))))
+
 
 ;;; Executing guix commands
 
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index edc36486fc..4280246bb8 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -111,6 +111,19 @@ is found and `guix-package-list-single' is nil."
       (list (if (= 0 package-id) package-id-str package-id)
             output))))
 
+(defun guix-package-build-log-file (id)
+  "Return build log file name of a package defined by ID."
+  (guix-eval-read
+   (guix-make-guile-expression 'package-build-log-file id)))
+
+(defun guix-package-find-build-log (id)
+  "Show build log of a package defined by ID."
+  (require 'guix-build-log)
+  (let ((file (guix-package-build-log-file id)))
+    (if file
+        (guix-build-log-find-file file)
+      (message "Couldn't find the package build log."))))
+
 
 ;;; Processing package actions
 
@@ -222,6 +235,7 @@ ENTRIES is a list of package entries to get info about packages."
             (description ignore (simple guix-package-info-description))
             ignore
             (outputs simple guix-package-info-insert-outputs)
+            guix-package-info-insert-misc
             (source simple guix-package-info-insert-source)
             (location simple guix-package-info-insert-location)
             (home-url format (format guix-url))
@@ -309,9 +323,15 @@ ENTRIES is a list of package entries to get info about packages."
   "Face used if a package is obsolete."
   :group 'guix-package-info-faces)
 
+(defcustom guix-package-info-auto-find-package t
+  "If non-nil, open store directory after pressing \"Show\" package button.
+If nil, just display the store directory (or directories) without finding."
+  :type 'boolean
+  :group 'guix-package-info)
+
 (defcustom guix-package-info-auto-find-source nil
-  "If non-nil, find a source file after pressing a \"Show\" button.
-If nil, just display the source file path without finding."
+  "If non-nil, open source file after pressing \"Show\" source button.
+If nil, just display the source file name without finding."
   :type 'boolean
   :group 'guix-package-info)
 
@@ -325,6 +345,14 @@ prompt depending on `guix-operation-confirm' variable)."
   :type 'boolean
   :group 'guix-package-info)
 
+(defcustom guix-package-info-button-functions
+  '(guix-package-info-insert-build-button
+    guix-package-info-insert-build-log-button)
+  "List of functions used to insert package buttons in Info buffer.
+Each function is called with 2 arguments: package ID and full name."
+  :type '(repeat function)
+  :group 'guix-package-info)
+
 (defvar guix-package-info-download-buffer nil
   "Buffer from which a current download operation was performed.")
 
@@ -521,6 +549,78 @@ ENTRY is an alist with package info."
              (guix-entry-id entry))
      'output output)))
 
+(defun guix-package-info-show-store-path (entry-id package-id)
+  "Show store directories of the package outputs in the current buffer.
+ENTRY-ID is an ID of the current entry (package or output).
+PACKAGE-ID is an ID of the package which store path to show."
+  (let* ((entries (guix-buffer-current-entries))
+         (entry   (guix-entry-by-id entry-id entries))
+         (dirs    (guix-package-store-path package-id)))
+    (or dirs
+        (error "Couldn't define store directory of the package"))
+    (let* ((new-entry (cons (cons 'store-path dirs)
+                            entry))
+           (new-entries (guix-replace-entry entry-id new-entry entries)))
+      (setf (guix-buffer-item-entries guix-buffer-item)
+            new-entries)
+      (guix-buffer-redisplay-goto-button)
+      (let ((dir (car dirs)))
+        (if (file-exists-p dir)
+            (if guix-package-info-auto-find-package
+                (find-file dir)
+              (message nil))
+          (message "'%s' does not exist.\nTry to build this package."
+                   dir))))))
+
+(defun guix-package-info-insert-misc (entry)
+  "Insert various buttons and other info for package ENTRY at point."
+  (if (guix-entry-value entry 'obsolete)
+      (guix-format-insert nil)
+    (let* ((entry-id   (guix-entry-id entry))
+           (package-id (or (guix-entry-value entry 'package-id)
+                           entry-id))
+           (full-name  (guix-package-entry->name-specification entry))
+           (store-path (guix-entry-value entry 'store-path)))
+      (guix-info-insert-title-simple "Package")
+      (if store-path
+          (guix-info-insert-value-indent store-path 'guix-file)
+        (guix-info-insert-action-button
+         "Show"
+         (lambda (btn)
+           (guix-package-info-show-store-path
+            (button-get btn 'entry-id)
+            (button-get btn 'package-id)))
+         "Show the store directory of the current package"
+         'entry-id entry-id
+         'package-id package-id))
+      (when guix-package-info-button-functions
+        (insert "\n")
+        (guix-mapinsert (lambda (fun)
+                          (funcall fun package-id full-name))
+                        guix-package-info-button-functions
+                        (guix-info-get-indent)
+                        :indent guix-info-indent
+                        :column (guix-info-fill-column))))))
+
+(defun guix-package-info-insert-build-button (id full-name)
+  "Insert button to build a package defined by ID."
+  (guix-info-insert-action-button
+   "Build"
+   (lambda (btn)
+     (guix-build-package (button-get btn 'id)
+                         (format "Build '%s' package?" full-name)))
+   (format "Build the current package")
+   'id id))
+
+(defun guix-package-info-insert-build-log-button (id _name)
+  "Insert button to show build log of a package defined by ID."
+  (guix-info-insert-action-button
+   "Build Log"
+   (lambda (btn)
+     (guix-package-find-build-log (button-get btn 'id)))
+   "View build log of the current package"
+   'id id))
+
 (defun guix-package-info-show-source (entry-id package-id)
   "Show file name of a package source in the current info buffer.
 Find the file if needed (see `guix-package-info-auto-find-source').
@@ -817,6 +917,7 @@ for all ARGS."
             (version format guix-output-info-insert-version)
             (output format guix-output-info-insert-output)
             (synopsis simple (indent guix-package-info-synopsis))
+            guix-package-info-insert-misc
             (source simple guix-package-info-insert-source)
             (path simple (indent guix-file))
             (dependencies simple (indent guix-file))
diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el
index ea9933f5c3..3e4ecc36ab 100644
--- a/emacs/guix-utils.el
+++ b/emacs/guix-utils.el
@@ -84,16 +84,33 @@ If FORMAT is non-nil, format VAL with FORMAT."
                 (format format str)
               str))))
 
-(defun guix-mapinsert (function sequence separator)
+(cl-defun guix-mapinsert (function sequence separator &key indent column)
   "Like `mapconcat' but for inserting text.
 Apply FUNCTION to each element of SEQUENCE, and insert SEPARATOR
-at point between each FUNCTION call."
-  (when sequence
-    (funcall function (car sequence))
-    (mapc (lambda (obj)
-            (insert separator)
-            (funcall function obj))
-          (cdr sequence))))
+at point between each FUNCTION call.
+
+If INDENT is non-nil, it should be a number of spaces used to
+indent each line of the inserted text.
+
+If COLUMN is non-nil, it should be a column number which
+shouldn't be exceeded by the inserted text."
+  (pcase sequence
+    (`(,first . ,rest)
+     (let* ((indent (or indent 0))
+            (max-column (and column (- column indent))))
+       (guix-with-indent indent
+         (funcall function first)
+         (dolist (element rest)
+           (let ((before-sep-pos (and column (point))))
+             (insert separator)
+             (let ((after-sep-pos (and column (point))))
+               (funcall function element)
+               (when (and column
+                          (> (current-column) max-column))
+                 (save-excursion
+                   (delete-region before-sep-pos after-sep-pos)
+                   (goto-char before-sep-pos)
+                   (insert "\n")))))))))))
 
 (defun guix-insert-button (label &optional type &rest properties)
   "Make button of TYPE with LABEL and insert it at point.
diff --git a/emacs/local.mk b/emacs/local.mk
index f83063cf5f..959ec2dd34 100644
--- a/emacs/local.mk
+++ b/emacs/local.mk
@@ -17,51 +17,51 @@
 # You should have received a copy of the GNU General Public License
 # along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
-AUTOLOADS = emacs/guix-autoloads.el
+AUTOLOADS = %D%/guix-autoloads.el
 
 ELFILES =					\
-  emacs/guix-about.el				\
-  emacs/guix-backend.el				\
-  emacs/guix-base.el				\
-  emacs/guix-build-log.el			\
-  emacs/guix-buffer.el				\
-  emacs/guix-command.el				\
-  emacs/guix-devel.el				\
-  emacs/guix-emacs.el				\
-  emacs/guix-entry.el				\
-  emacs/guix-external.el			\
-  emacs/guix-geiser.el				\
-  emacs/guix-guile.el				\
-  emacs/guix-help-vars.el			\
-  emacs/guix-history.el				\
-  emacs/guix-hydra.el				\
-  emacs/guix-hydra-build.el			\
-  emacs/guix-hydra-jobset.el			\
-  emacs/guix-info.el				\
-  emacs/guix-init.el				\
-  emacs/guix-license.el				\
-  emacs/guix-list.el				\
-  emacs/guix-location.el			\
-  emacs/guix-messages.el			\
-  emacs/guix-pcomplete.el			\
-  emacs/guix-popup.el				\
-  emacs/guix-prettify.el			\
-  emacs/guix-profiles.el			\
-  emacs/guix-read.el				\
-  emacs/guix-ui.el				\
-  emacs/guix-ui-license.el			\
-  emacs/guix-ui-location.el			\
-  emacs/guix-ui-package.el			\
-  emacs/guix-ui-generation.el			\
-  emacs/guix-ui-system-generation.el		\
-  emacs/guix-utils.el
+  %D%/guix-about.el				\
+  %D%/guix-backend.el				\
+  %D%/guix-base.el				\
+  %D%/guix-build-log.el				\
+  %D%/guix-buffer.el				\
+  %D%/guix-command.el				\
+  %D%/guix-devel.el				\
+  %D%/guix-emacs.el				\
+  %D%/guix-entry.el				\
+  %D%/guix-external.el				\
+  %D%/guix-geiser.el				\
+  %D%/guix-guile.el				\
+  %D%/guix-help-vars.el				\
+  %D%/guix-history.el				\
+  %D%/guix-hydra.el				\
+  %D%/guix-hydra-build.el			\
+  %D%/guix-hydra-jobset.el			\
+  %D%/guix-info.el				\
+  %D%/guix-init.el				\
+  %D%/guix-license.el				\
+  %D%/guix-list.el				\
+  %D%/guix-location.el				\
+  %D%/guix-messages.el				\
+  %D%/guix-pcomplete.el				\
+  %D%/guix-popup.el				\
+  %D%/guix-prettify.el				\
+  %D%/guix-profiles.el				\
+  %D%/guix-read.el				\
+  %D%/guix-ui.el				\
+  %D%/guix-ui-license.el			\
+  %D%/guix-ui-location.el			\
+  %D%/guix-ui-package.el			\
+  %D%/guix-ui-generation.el			\
+  %D%/guix-ui-system-generation.el		\
+  %D%/guix-utils.el
 
 if HAVE_EMACS
 
 dist_lisp_DATA = $(ELFILES)
 
 nodist_lisp_DATA = 		\
-  emacs/guix-config.el		\
+  %D%/guix-config.el		\
   $(AUTOLOADS)
 
 $(AUTOLOADS): $(ELFILES)
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index ec68679f0b..91996d06ca 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -205,32 +205,53 @@ host user identifiers to map into the user namespace."
   ;; The parent process must initialize the user namespace for the child
   ;; before it can boot.  To negotiate this, a pipe is used such that the
   ;; child process blocks until the parent writes to it.
-  (match (pipe)
-    ((in . out)
+  (match (socketpair PF_UNIX SOCK_STREAM 0)
+    ((child . parent)
      (let ((flags (namespaces->bit-mask namespaces)))
        (match (clone flags)
          (0
           (call-with-clean-exit
            (lambda ()
-             (close out)
+             (close-port parent)
              ;; Wait for parent to set things up.
-             (read in)
-             (close in)
-             (purify-environment)
-             (when (memq 'mnt namespaces)
-               (mount-file-systems root mounts
-                                   #:mount-/proc? (memq 'pid namespaces)
-                                   #:mount-/sys?  (memq 'net namespaces)))
-             ;; TODO: Manage capabilities.
-             (thunk))))
+             (match (read child)
+               ('ready
+                (purify-environment)
+                (when (memq 'mnt namespaces)
+                  (catch #t
+                    (lambda ()
+                      (mount-file-systems root mounts
+                                          #:mount-/proc? (memq 'pid namespaces)
+                                          #:mount-/sys?  (memq 'net
+                                                               namespaces)))
+                    (lambda args
+                      ;; Forward the exception to the parent process.
+                      (write args child)
+                      (primitive-exit 3))))
+                ;; TODO: Manage capabilities.
+                (write 'ready child)
+                (close-port child)
+                (thunk))
+               (_                                 ;parent died or something
+                (primitive-exit 2))))))
          (pid
+          (close-port child)
           (when (memq 'user namespaces)
             (initialize-user-namespace pid host-uids))
           ;; TODO: Initialize cgroups.
-          (close in)
-          (write 'ready out)
-          (close out)
-          pid))))))
+          (write 'ready parent)
+          (newline parent)
+
+          ;; Check whether the child process' setup phase succeeded.
+          (let ((message (read parent)))
+            (close-port parent)
+            (match message
+              ('ready                             ;success
+               pid)
+              (((? symbol? key) args ...)         ;exception
+               (apply throw key args))
+              (_                                  ;unexpected termination
+               #f)))))))))
 
 (define* (call-with-container mounts thunk #:key (namespaces %namespaces)
                               (host-uids 1))
diff --git a/gnu/local.mk b/gnu/local.mk
index 9121b1df40..ef7b4df7f9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -26,814 +26,844 @@
 
 GNU_SYSTEM_MODULES =				\
   gnu.scm					\
-  gnu/artwork.scm				\
-  gnu/packages.scm				\
-  gnu/packages/abduco.scm			\
-  gnu/packages/abiword.scm			\
-  gnu/packages/acct.scm				\
-  gnu/packages/acl.scm				\
-  gnu/packages/admin.scm			\
-  gnu/packages/adns.scm				\
-  gnu/packages/algebra.scm			\
-  gnu/packages/aidc.scm				\
-  gnu/packages/animation.scm			\
-  gnu/packages/anthy.scm			\
-  gnu/packages/apl.scm				\
-  gnu/packages/apr.scm				\
-  gnu/packages/aspell.scm			\
-  gnu/packages/attr.scm				\
-  gnu/packages/audacity.scm			\
-  gnu/packages/audio.scm			\
-  gnu/packages/augeas.scm			\
-  gnu/packages/autogen.scm			\
-  gnu/packages/autotools.scm			\
-  gnu/packages/avahi.scm			\
-  gnu/packages/avr.scm				\
-  gnu/packages/backup.scm			\
-  gnu/packages/base.scm				\
-  gnu/packages/bash.scm				\
-  gnu/packages/bdw-gc.scm			\
-  gnu/packages/bioinformatics.scm		\
-  gnu/packages/bittorrent.scm			\
-  gnu/packages/bison.scm			\
-  gnu/packages/boost.scm			\
-  gnu/packages/bootstrap.scm			\
-  gnu/packages/busybox.scm			\
-  gnu/packages/c.scm				\
-  gnu/packages/calcurse.scm			\
-  gnu/packages/ccache.scm			\
-  gnu/packages/cdrom.scm			\
-  gnu/packages/certs.scm			\
-  gnu/packages/check.scm			\
-  gnu/packages/ci.scm				\
-  gnu/packages/cmake.scm			\
-  gnu/packages/code.scm				\
-  gnu/packages/commencement.scm			\
-  gnu/packages/compression.scm			\
-  gnu/packages/conkeror.scm			\
-  gnu/packages/conky.scm			\
-  gnu/packages/connman.scm			\
-  gnu/packages/cook.scm				\
-  gnu/packages/cpio.scm				\
-  gnu/packages/cppi.scm				\
-  gnu/packages/cross-base.scm			\
-  gnu/packages/crypto.scm			\
-  gnu/packages/cryptsetup.scm			\
-  gnu/packages/cups.scm				\
-  gnu/packages/curl.scm				\
-  gnu/packages/cyrus-sasl.scm			\
-  gnu/packages/databases.scm			\
-  gnu/packages/datamash.scm			\
-  gnu/packages/datastructures.scm		\
-  gnu/packages/dav.scm				\
-  gnu/packages/dc.scm				\
-  gnu/packages/debug.scm			\
-  gnu/packages/dejagnu.scm			\
-  gnu/packages/dico.scm				\
-  gnu/packages/dictionaries.scm			\
-  gnu/packages/dillo.scm			\
-  gnu/packages/disk.scm				\
-  gnu/packages/djvu.scm				\
-  gnu/packages/dns.scm				\
-  gnu/packages/docbook.scm			\
-  gnu/packages/docker.scm			\
-  gnu/packages/documentation.scm		\
-  gnu/packages/dunst.scm			\
-  gnu/packages/dvtm.scm				\
-  gnu/packages/ebook.scm			\
-  gnu/packages/ed.scm				\
-  gnu/packages/elf.scm				\
-  gnu/packages/emacs.scm			\
-  gnu/packages/enchant.scm			\
-  gnu/packages/engineering.scm			\
-  gnu/packages/enlightenment.scm		\
-  gnu/packages/entr.scm				\
-  gnu/packages/fcitx.scm			\
-  gnu/packages/feh.scm                          \
-  gnu/packages/figlet.scm			\
-  gnu/packages/file.scm				\
-  gnu/packages/finance.scm			\
-  gnu/packages/firmware.scm			\
-  gnu/packages/fish.scm				\
-  gnu/packages/flashing-tools.scm		\
-  gnu/packages/flex.scm				\
-  gnu/packages/fltk.scm				\
-  gnu/packages/fonts.scm			\
-  gnu/packages/fontutils.scm			\
-  gnu/packages/freedesktop.scm			\
-  gnu/packages/freeipmi.scm			\
-  gnu/packages/ftp.scm				\
-  gnu/packages/fribidi.scm			\
-  gnu/packages/fvwm.scm				\
-  gnu/packages/game-development.scm		\
-  gnu/packages/games.scm			\
-  gnu/packages/gawk.scm				\
-  gnu/packages/gcal.scm				\
-  gnu/packages/gcc.scm				\
-  gnu/packages/gd.scm				\
-  gnu/packages/gdb.scm				\
-  gnu/packages/geeqie.scm			\
-  gnu/packages/gettext.scm			\
-  gnu/packages/ghostscript.scm			\
-  gnu/packages/gimp.scm				\
-  gnu/packages/gkrellm.scm			\
-  gnu/packages/gl.scm				\
-  gnu/packages/glib.scm				\
-  gnu/packages/gnome.scm			\
-  gnu/packages/gnu-doc.scm			\
-  gnu/packages/gnucash.scm			\
-  gnu/packages/gnunet.scm			\
-  gnu/packages/gnupg.scm			\
-  gnu/packages/gnustep.scm			\
-  gnu/packages/gnuzilla.scm			\
-  gnu/packages/gnu-pw-mgr.scm			\
-  gnu/packages/gperf.scm			\
-  gnu/packages/gprolog.scm			\
-  gnu/packages/gps.scm				\
-  gnu/packages/graphics.scm			\
-  gnu/packages/graphviz.scm			\
-  gnu/packages/groff.scm			\
-  gnu/packages/grub.scm				\
-  gnu/packages/grue-hunter.scm			\
-  gnu/packages/gsasl.scm			\
-  gnu/packages/gstreamer.scm			\
-  gnu/packages/gtk.scm				\
-  gnu/packages/guile.scm			\
-  gnu/packages/guile-wm.scm			\
-  gnu/packages/gv.scm				\
-  gnu/packages/gxmessage.scm			\
-  gnu/packages/haskell.scm			\
-  gnu/packages/hugs.scm				\
-  gnu/packages/hurd.scm				\
-  gnu/packages/ibus.scm				\
-  gnu/packages/icu4c.scm			\
-  gnu/packages/idutils.scm			\
-  gnu/packages/image.scm			\
-  gnu/packages/imagemagick.scm			\
-  gnu/packages/indent.scm			\
-  gnu/packages/inklingreader.scm		\
-  gnu/packages/inkscape.scm			\
-  gnu/packages/irc.scm  			\
-  gnu/packages/iso-codes.scm			\
-  gnu/packages/java.scm				\
-  gnu/packages/jemalloc.scm			\
-  gnu/packages/jrnl.scm				\
-  gnu/packages/julia.scm			\
-  gnu/packages/kde.scm              \
-  gnu/packages/kde-frameworks.scm		\
-  gnu/packages/key-mon.scm			\
-  gnu/packages/kodi.scm				\
-  gnu/packages/language.scm			\
-  gnu/packages/ldc.scm				\
-  gnu/packages/lego.scm				\
-  gnu/packages/less.scm				\
-  gnu/packages/lesstif.scm			\
-  gnu/packages/libbsd.scm			\
-  gnu/packages/libcanberra.scm			\
-  gnu/packages/libdaemon.scm			\
-  gnu/packages/libedit.scm			\
-  gnu/packages/libevent.scm			\
-  gnu/packages/libffcall.scm			\
-  gnu/packages/libffi.scm			\
-  gnu/packages/libftdi.scm			\
-  gnu/packages/calendar.scm			\
-  gnu/packages/libidn.scm			\
-  gnu/packages/libphidget.scm			\
-  gnu/packages/libreoffice.scm			\
-  gnu/packages/libsigsegv.scm			\
-  gnu/packages/libunistring.scm			\
-  gnu/packages/libusb.scm			\
-  gnu/packages/libunwind.scm			\
-  gnu/packages/libupnp.scm			\
-  gnu/packages/lightning.scm			\
-  gnu/packages/links.scm			\
-  gnu/packages/linux.scm			\
-  gnu/packages/lirc.scm				\
-  gnu/packages/lisp.scm				\
-  gnu/packages/llvm.scm				\
-  gnu/packages/lout.scm				\
-  gnu/packages/lsh.scm				\
-  gnu/packages/lsof.scm				\
-  gnu/packages/lua.scm				\
-  gnu/packages/lxde.scm				\
-  gnu/packages/lxqt.scm				\
-  gnu/packages/lynx.scm				\
-  gnu/packages/m4.scm				\
-  gnu/packages/machine-learning.scm		\
-  gnu/packages/man.scm				\
-  gnu/packages/mail.scm				\
-  gnu/packages/make-bootstrap.scm		\
-  gnu/packages/markdown.scm			\
-  gnu/packages/marst.scm			\
-  gnu/packages/mate.scm             \
-  gnu/packages/maths.scm			\
-  gnu/packages/mc.scm				\
-  gnu/packages/mcrypt.scm			\
-  gnu/packages/messaging.scm			\
-  gnu/packages/mg.scm				\
-  gnu/packages/mit-krb5.scm			\
-  gnu/packages/moe.scm				\
-  gnu/packages/moreutils.scm			\
-  gnu/packages/mpd.scm				\
-  gnu/packages/mp3.scm				\
-  gnu/packages/mpi.scm				\
-  gnu/packages/multiprecision.scm		\
-  gnu/packages/music.scm			\
-  gnu/packages/mtools.scm			\
-  gnu/packages/nano.scm				\
-  gnu/packages/ncdu.scm				\
-  gnu/packages/ncurses.scm			\
-  gnu/packages/netpbm.scm			\
-  gnu/packages/nettle.scm			\
-  gnu/packages/networking.scm			\
-  gnu/packages/ninja.scm			\
-  gnu/packages/node.scm				\
-  gnu/packages/noweb.scm			\
-  gnu/packages/ntp.scm				\
-  gnu/packages/nutrition.scm			\
-  gnu/packages/nvi.scm				\
-  gnu/packages/ocaml.scm			\
-  gnu/packages/ocr.scm				\
-  gnu/packages/onc-rpc.scm			\
-  gnu/packages/openbox.scm			\
-  gnu/packages/openldap.scm			\
-  gnu/packages/openstack.scm			\
-  gnu/packages/orpheus.scm			\
-  gnu/packages/ots.scm				\
-  gnu/packages/owncloud.scm			\
-  gnu/packages/package-management.scm		\
-  gnu/packages/parallel.scm			\
-  gnu/packages/password-utils.scm		\
-  gnu/packages/patchutils.scm			\
-  gnu/packages/pciutils.scm			\
-  gnu/packages/pcre.scm				\
-  gnu/packages/pdf.scm				\
-  gnu/packages/pem.scm				\
-  gnu/packages/perl.scm				\
-  gnu/packages/photo.scm			\
-  gnu/packages/pkg-config.scm			\
-  gnu/packages/plotutils.scm			\
-  gnu/packages/polkit.scm			\
-  gnu/packages/popt.scm				\
-  gnu/packages/pth.scm				\
-  gnu/packages/pulseaudio.scm			\
-  gnu/packages/pumpio.scm			\
-  gnu/packages/pretty-print.scm			\
-  gnu/packages/protobuf.scm			\
-  gnu/packages/pv.scm				\
-  gnu/packages/python.scm			\
-  gnu/packages/qemu.scm				\
-  gnu/packages/qt.scm				\
-  gnu/packages/ragel.scm			\
-  gnu/packages/ratpoison.scm			\
-  gnu/packages/rc.scm				\
-  gnu/packages/rdesktop.scm			\
-  gnu/packages/rdf.scm				\
-  gnu/packages/readline.scm			\
-  gnu/packages/rrdtool.scm			\
-  gnu/packages/rsync.scm			\
-  gnu/packages/ruby.scm				\
-  gnu/packages/rush.scm				\
-  gnu/packages/samba.scm			\
-  gnu/packages/sawfish.scm			\
-  gnu/packages/scanner.scm			\
-  gnu/packages/scheme.scm			\
-  gnu/packages/screen.scm			\
-  gnu/packages/scribus.scm			\
-  gnu/packages/sdl.scm				\
-  gnu/packages/search.scm			\
-  gnu/packages/serialization.scm		\
-  gnu/packages/serveez.scm			\
-  gnu/packages/shellutils.scm			\
-  gnu/packages/shishi.scm			\
-  gnu/packages/skarnet.scm			\
-  gnu/packages/skribilo.scm			\
-  gnu/packages/slang.scm			\
-  gnu/packages/slim.scm				\
-  gnu/packages/smalltalk.scm			\
-  gnu/packages/ssh.scm				\
-  gnu/packages/stalonetray.scm			\
-  gnu/packages/statistics.scm			\
-  gnu/packages/suckless.scm			\
-  gnu/packages/swig.scm				\
-  gnu/packages/sxiv.scm				\
-  gnu/packages/synergy.scm			\
-  gnu/packages/task-management.scm		\
-  gnu/packages/tbb.scm				\
-  gnu/packages/tcl.scm				\
-  gnu/packages/tcsh.scm				\
-  gnu/packages/telephony.scm			\
-  gnu/packages/terminals.scm			\
-  gnu/packages/texinfo.scm			\
-  gnu/packages/texlive.scm			\
-  gnu/packages/textutils.scm			\
-  gnu/packages/time.scm				\
-  gnu/packages/tls.scm				\
-  gnu/packages/tmux.scm				\
-  gnu/packages/tor.scm				\
-  gnu/packages/tre.scm				\
-  gnu/packages/tv.scm				\
-  gnu/packages/unrtf.scm			\
-  gnu/packages/upnp.scm				\
-  gnu/packages/uucp.scm				\
-  gnu/packages/valgrind.scm			\
-  gnu/packages/version-control.scm		\
-  gnu/packages/video.scm			\
-  gnu/packages/vim.scm				\
-  gnu/packages/vpn.scm				\
-  gnu/packages/vtk.scm				\
-  gnu/packages/w3m.scm				\
-  gnu/packages/wdiff.scm			\
-  gnu/packages/web.scm				\
-  gnu/packages/webkit.scm			\
-  gnu/packages/wget.scm				\
-  gnu/packages/wicd.scm				\
-  gnu/packages/wine.scm				\
-  gnu/packages/wm.scm				\
-  gnu/packages/wordnet.scm			\
-  gnu/packages/wv.scm				\
-  gnu/packages/wxwidgets.scm			\
-  gnu/packages/xfig.scm				\
-  gnu/packages/xiph.scm				\
-  gnu/packages/xml.scm				\
-  gnu/packages/xnee.scm				\
-  gnu/packages/xdisorg.scm			\
-  gnu/packages/xorg.scm				\
-  gnu/packages/xfce.scm				\
-  gnu/packages/yasm.scm				\
-  gnu/packages/yubico.scm			\
-  gnu/packages/zile.scm				\
-  gnu/packages/zip.scm				\
-  gnu/packages/zsh.scm				\
+  %D%/artwork.scm				\
+  %D%/packages.scm				\
+  %D%/packages/abduco.scm			\
+  %D%/packages/abiword.scm			\
+  %D%/packages/acct.scm				\
+  %D%/packages/acl.scm				\
+  %D%/packages/admin.scm			\
+  %D%/packages/adns.scm				\
+  %D%/packages/algebra.scm			\
+  %D%/packages/aidc.scm				\
+  %D%/packages/animation.scm			\
+  %D%/packages/anthy.scm			\
+  %D%/packages/apl.scm				\
+  %D%/packages/apr.scm				\
+  %D%/packages/aspell.scm			\
+  %D%/packages/attr.scm				\
+  %D%/packages/audacity.scm			\
+  %D%/packages/audio.scm			\
+  %D%/packages/augeas.scm			\
+  %D%/packages/autogen.scm			\
+  %D%/packages/autotools.scm			\
+  %D%/packages/avahi.scm			\
+  %D%/packages/avr.scm				\
+  %D%/packages/backup.scm			\
+  %D%/packages/base.scm				\
+  %D%/packages/bash.scm				\
+  %D%/packages/bdw-gc.scm			\
+  %D%/packages/bioinformatics.scm		\
+  %D%/packages/bittorrent.scm			\
+  %D%/packages/bison.scm			\
+  %D%/packages/boost.scm			\
+  %D%/packages/bootstrap.scm			\
+  %D%/packages/busybox.scm			\
+  %D%/packages/c.scm				\
+  %D%/packages/calcurse.scm			\
+  %D%/packages/ccache.scm			\
+  %D%/packages/cdrom.scm			\
+  %D%/packages/certs.scm			\
+  %D%/packages/check.scm			\
+  %D%/packages/ci.scm				\
+  %D%/packages/cmake.scm			\
+  %D%/packages/code.scm				\
+  %D%/packages/commencement.scm			\
+  %D%/packages/compression.scm			\
+  %D%/packages/conkeror.scm			\
+  %D%/packages/conky.scm			\
+  %D%/packages/connman.scm			\
+  %D%/packages/cook.scm				\
+  %D%/packages/cpio.scm				\
+  %D%/packages/cppi.scm				\
+  %D%/packages/cross-base.scm			\
+  %D%/packages/crypto.scm			\
+  %D%/packages/cryptsetup.scm			\
+  %D%/packages/cups.scm				\
+  %D%/packages/curl.scm				\
+  %D%/packages/cyrus-sasl.scm			\
+  %D%/packages/databases.scm			\
+  %D%/packages/datamash.scm			\
+  %D%/packages/datastructures.scm		\
+  %D%/packages/dav.scm				\
+  %D%/packages/dc.scm				\
+  %D%/packages/debug.scm			\
+  %D%/packages/dejagnu.scm			\
+  %D%/packages/dico.scm				\
+  %D%/packages/dictionaries.scm			\
+  %D%/packages/dillo.scm			\
+  %D%/packages/disk.scm				\
+  %D%/packages/djvu.scm				\
+  %D%/packages/dns.scm				\
+  %D%/packages/docbook.scm			\
+  %D%/packages/docker.scm			\
+  %D%/packages/documentation.scm		\
+  %D%/packages/dunst.scm			\
+  %D%/packages/dvtm.scm				\
+  %D%/packages/ebook.scm			\
+  %D%/packages/ed.scm				\
+  %D%/packages/elf.scm				\
+  %D%/packages/emacs.scm			\
+  %D%/packages/enchant.scm			\
+  %D%/packages/engineering.scm			\
+  %D%/packages/enlightenment.scm		\
+  %D%/packages/entr.scm				\
+  %D%/packages/fcitx.scm			\
+  %D%/packages/feh.scm                          \
+  %D%/packages/figlet.scm			\
+  %D%/packages/file.scm				\
+  %D%/packages/finance.scm			\
+  %D%/packages/firmware.scm			\
+  %D%/packages/fish.scm				\
+  %D%/packages/flashing-tools.scm		\
+  %D%/packages/flex.scm				\
+  %D%/packages/fltk.scm				\
+  %D%/packages/fonts.scm			\
+  %D%/packages/fontutils.scm			\
+  %D%/packages/freedesktop.scm			\
+  %D%/packages/freeipmi.scm			\
+  %D%/packages/ftp.scm				\
+  %D%/packages/fribidi.scm			\
+  %D%/packages/fvwm.scm				\
+  %D%/packages/game-development.scm		\
+  %D%/packages/games.scm			\
+  %D%/packages/gawk.scm				\
+  %D%/packages/gcal.scm				\
+  %D%/packages/gcc.scm				\
+  %D%/packages/gd.scm				\
+  %D%/packages/gdb.scm				\
+  %D%/packages/geeqie.scm			\
+  %D%/packages/gettext.scm			\
+  %D%/packages/ghostscript.scm			\
+  %D%/packages/gimp.scm				\
+  %D%/packages/gkrellm.scm			\
+  %D%/packages/gl.scm				\
+  %D%/packages/glib.scm				\
+  %D%/packages/gnome.scm			\
+  %D%/packages/gnu-doc.scm			\
+  %D%/packages/gnucash.scm			\
+  %D%/packages/gnunet.scm			\
+  %D%/packages/gnupg.scm			\
+  %D%/packages/gnustep.scm			\
+  %D%/packages/gnuzilla.scm			\
+  %D%/packages/gnu-pw-mgr.scm			\
+  %D%/packages/gperf.scm			\
+  %D%/packages/gprolog.scm			\
+  %D%/packages/gps.scm				\
+  %D%/packages/graphics.scm			\
+  %D%/packages/graphviz.scm			\
+  %D%/packages/groff.scm			\
+  %D%/packages/grub.scm				\
+  %D%/packages/grue-hunter.scm			\
+  %D%/packages/gsasl.scm			\
+  %D%/packages/gstreamer.scm			\
+  %D%/packages/gtk.scm				\
+  %D%/packages/guile.scm			\
+  %D%/packages/guile-wm.scm			\
+  %D%/packages/gv.scm				\
+  %D%/packages/gxmessage.scm			\
+  %D%/packages/haskell.scm			\
+  %D%/packages/hugs.scm				\
+  %D%/packages/hurd.scm				\
+  %D%/packages/ibus.scm				\
+  %D%/packages/icu4c.scm			\
+  %D%/packages/idutils.scm			\
+  %D%/packages/image.scm			\
+  %D%/packages/imagemagick.scm			\
+  %D%/packages/indent.scm			\
+  %D%/packages/inklingreader.scm		\
+  %D%/packages/inkscape.scm			\
+  %D%/packages/irc.scm  			\
+  %D%/packages/iso-codes.scm			\
+  %D%/packages/java.scm				\
+  %D%/packages/jemalloc.scm			\
+  %D%/packages/jrnl.scm				\
+  %D%/packages/julia.scm			\
+  %D%/packages/kde.scm              \
+  %D%/packages/kde-frameworks.scm		\
+  %D%/packages/key-mon.scm			\
+  %D%/packages/kodi.scm				\
+  %D%/packages/language.scm			\
+  %D%/packages/ldc.scm				\
+  %D%/packages/lego.scm				\
+  %D%/packages/less.scm				\
+  %D%/packages/lesstif.scm			\
+  %D%/packages/libbsd.scm			\
+  %D%/packages/libcanberra.scm			\
+  %D%/packages/libdaemon.scm			\
+  %D%/packages/libedit.scm			\
+  %D%/packages/libevent.scm			\
+  %D%/packages/libffcall.scm			\
+  %D%/packages/libffi.scm			\
+  %D%/packages/libftdi.scm			\
+  %D%/packages/calendar.scm			\
+  %D%/packages/libidn.scm			\
+  %D%/packages/libphidget.scm			\
+  %D%/packages/libreoffice.scm			\
+  %D%/packages/libsigsegv.scm			\
+  %D%/packages/libunistring.scm			\
+  %D%/packages/libusb.scm			\
+  %D%/packages/libunwind.scm			\
+  %D%/packages/libupnp.scm			\
+  %D%/packages/lightning.scm			\
+  %D%/packages/links.scm			\
+  %D%/packages/linux.scm			\
+  %D%/packages/lirc.scm				\
+  %D%/packages/lisp.scm				\
+  %D%/packages/llvm.scm				\
+  %D%/packages/lout.scm				\
+  %D%/packages/lsh.scm				\
+  %D%/packages/lsof.scm				\
+  %D%/packages/lua.scm				\
+  %D%/packages/lxde.scm				\
+  %D%/packages/lxqt.scm				\
+  %D%/packages/lynx.scm				\
+  %D%/packages/m4.scm				\
+  %D%/packages/machine-learning.scm		\
+  %D%/packages/man.scm				\
+  %D%/packages/mail.scm				\
+  %D%/packages/make-bootstrap.scm		\
+  %D%/packages/markdown.scm			\
+  %D%/packages/marst.scm			\
+  %D%/packages/mate.scm             \
+  %D%/packages/maths.scm			\
+  %D%/packages/mc.scm				\
+  %D%/packages/mcrypt.scm			\
+  %D%/packages/messaging.scm			\
+  %D%/packages/mg.scm				\
+  %D%/packages/mit-krb5.scm			\
+  %D%/packages/moe.scm				\
+  %D%/packages/moreutils.scm			\
+  %D%/packages/mpd.scm				\
+  %D%/packages/mp3.scm				\
+  %D%/packages/mpi.scm				\
+  %D%/packages/multiprecision.scm		\
+  %D%/packages/music.scm			\
+  %D%/packages/mtools.scm			\
+  %D%/packages/nano.scm				\
+  %D%/packages/ncdu.scm				\
+  %D%/packages/ncurses.scm			\
+  %D%/packages/netpbm.scm			\
+  %D%/packages/nettle.scm			\
+  %D%/packages/networking.scm			\
+  %D%/packages/ninja.scm			\
+  %D%/packages/node.scm				\
+  %D%/packages/noweb.scm			\
+  %D%/packages/ntp.scm				\
+  %D%/packages/nutrition.scm			\
+  %D%/packages/nvi.scm				\
+  %D%/packages/ocaml.scm			\
+  %D%/packages/ocr.scm				\
+  %D%/packages/onc-rpc.scm			\
+  %D%/packages/openbox.scm			\
+  %D%/packages/openldap.scm			\
+  %D%/packages/openstack.scm			\
+  %D%/packages/orpheus.scm			\
+  %D%/packages/ots.scm				\
+  %D%/packages/owncloud.scm			\
+  %D%/packages/package-management.scm		\
+  %D%/packages/parallel.scm			\
+  %D%/packages/password-utils.scm		\
+  %D%/packages/patchutils.scm			\
+  %D%/packages/pciutils.scm			\
+  %D%/packages/pcre.scm				\
+  %D%/packages/pdf.scm				\
+  %D%/packages/pem.scm				\
+  %D%/packages/perl.scm				\
+  %D%/packages/photo.scm			\
+  %D%/packages/pkg-config.scm			\
+  %D%/packages/plotutils.scm			\
+  %D%/packages/polkit.scm			\
+  %D%/packages/popt.scm				\
+  %D%/packages/pth.scm				\
+  %D%/packages/pulseaudio.scm			\
+  %D%/packages/pumpio.scm			\
+  %D%/packages/pretty-print.scm			\
+  %D%/packages/protobuf.scm			\
+  %D%/packages/pv.scm				\
+  %D%/packages/python.scm			\
+  %D%/packages/qemu.scm				\
+  %D%/packages/qt.scm				\
+  %D%/packages/ragel.scm			\
+  %D%/packages/rails.scm			\
+  %D%/packages/ratpoison.scm			\
+  %D%/packages/rc.scm				\
+  %D%/packages/rdesktop.scm			\
+  %D%/packages/rdf.scm				\
+  %D%/packages/readline.scm			\
+  %D%/packages/rrdtool.scm			\
+  %D%/packages/rsync.scm			\
+  %D%/packages/ruby.scm				\
+  %D%/packages/rush.scm				\
+  %D%/packages/samba.scm			\
+  %D%/packages/sawfish.scm			\
+  %D%/packages/scanner.scm			\
+  %D%/packages/scheme.scm			\
+  %D%/packages/screen.scm			\
+  %D%/packages/scribus.scm			\
+  %D%/packages/sdl.scm				\
+  %D%/packages/search.scm			\
+  %D%/packages/serialization.scm		\
+  %D%/packages/serveez.scm			\
+  %D%/packages/shellutils.scm			\
+  %D%/packages/shishi.scm			\
+  %D%/packages/skarnet.scm			\
+  %D%/packages/skribilo.scm			\
+  %D%/packages/slang.scm			\
+  %D%/packages/slim.scm				\
+  %D%/packages/smalltalk.scm			\
+  %D%/packages/speech.scm			\
+  %D%/packages/ssh.scm				\
+  %D%/packages/stalonetray.scm			\
+  %D%/packages/statistics.scm			\
+  %D%/packages/suckless.scm			\
+  %D%/packages/swig.scm				\
+  %D%/packages/sxiv.scm				\
+  %D%/packages/synergy.scm			\
+  %D%/packages/task-management.scm		\
+  %D%/packages/tbb.scm				\
+  %D%/packages/tcl.scm				\
+  %D%/packages/tcsh.scm				\
+  %D%/packages/telephony.scm			\
+  %D%/packages/terminals.scm			\
+  %D%/packages/texinfo.scm			\
+  %D%/packages/tex.scm				\
+  %D%/packages/textutils.scm			\
+  %D%/packages/time.scm				\
+  %D%/packages/tls.scm				\
+  %D%/packages/tmux.scm				\
+  %D%/packages/tor.scm				\
+  %D%/packages/tre.scm				\
+  %D%/packages/tv.scm				\
+  %D%/packages/unrtf.scm			\
+  %D%/packages/upnp.scm				\
+  %D%/packages/uucp.scm				\
+  %D%/packages/valgrind.scm			\
+  %D%/packages/version-control.scm		\
+  %D%/packages/video.scm			\
+  %D%/packages/vim.scm				\
+  %D%/packages/vpn.scm				\
+  %D%/packages/vtk.scm				\
+  %D%/packages/w3m.scm				\
+  %D%/packages/wdiff.scm			\
+  %D%/packages/web.scm				\
+  %D%/packages/webkit.scm			\
+  %D%/packages/wget.scm				\
+  %D%/packages/wicd.scm				\
+  %D%/packages/wine.scm				\
+  %D%/packages/wm.scm				\
+  %D%/packages/wordnet.scm			\
+  %D%/packages/wv.scm				\
+  %D%/packages/wxwidgets.scm			\
+  %D%/packages/xfig.scm				\
+  %D%/packages/xiph.scm				\
+  %D%/packages/xml.scm				\
+  %D%/packages/xnee.scm				\
+  %D%/packages/xdisorg.scm			\
+  %D%/packages/xorg.scm				\
+  %D%/packages/xfce.scm				\
+  %D%/packages/yasm.scm				\
+  %D%/packages/yubico.scm			\
+  %D%/packages/zile.scm				\
+  %D%/packages/zip.scm				\
+  %D%/packages/zsh.scm				\
 						\
-  gnu/services.scm				\
-  gnu/services/avahi.scm			\
-  gnu/services/base.scm				\
-  gnu/services/databases.scm			\
-  gnu/services/dbus.scm				\
-  gnu/services/desktop.scm			\
-  gnu/services/lirc.scm				\
-  gnu/services/mail.scm				\
-  gnu/services/networking.scm			\
-  gnu/services/shepherd.scm			\
-  gnu/services/herd.scm				\
-  gnu/services/ssh.scm				\
-  gnu/services/web.scm				\
-  gnu/services/xorg.scm				\
+  %D%/services.scm				\
+  %D%/services/avahi.scm			\
+  %D%/services/base.scm				\
+  %D%/services/databases.scm			\
+  %D%/services/dbus.scm				\
+  %D%/services/desktop.scm			\
+  %D%/services/dict.scm				\
+  %D%/services/lirc.scm				\
+  %D%/services/mail.scm				\
+  %D%/services/networking.scm			\
+  %D%/services/shepherd.scm			\
+  %D%/services/herd.scm				\
+  %D%/services/ssh.scm				\
+  %D%/services/web.scm				\
+  %D%/services/xorg.scm				\
 						\
-  gnu/system.scm				\
-  gnu/system/file-systems.scm			\
-  gnu/system/grub.scm				\
-  gnu/system/install.scm			\
-  gnu/system/linux-container.scm		\
-  gnu/system/linux-initrd.scm			\
-  gnu/system/locale.scm				\
-  gnu/system/mapped-devices.scm			\
-  gnu/system/nss.scm				\
-  gnu/system/pam.scm				\
-  gnu/system/shadow.scm				\
-  gnu/system/vm.scm				\
+  %D%/system.scm				\
+  %D%/system/file-systems.scm			\
+  %D%/system/grub.scm				\
+  %D%/system/install.scm			\
+  %D%/system/linux-container.scm		\
+  %D%/system/linux-initrd.scm			\
+  %D%/system/locale.scm				\
+  %D%/system/mapped-devices.scm			\
+  %D%/system/nss.scm				\
+  %D%/system/pam.scm				\
+  %D%/system/shadow.scm				\
+  %D%/system/vm.scm				\
 						\
-  gnu/build/activation.scm			\
-  gnu/build/file-systems.scm			\
-  gnu/build/install.scm				\
-  gnu/build/linux-boot.scm			\
-  gnu/build/linux-container.scm			\
-  gnu/build/linux-initrd.scm			\
-  gnu/build/linux-modules.scm			\
-  gnu/build/marionette.scm			\
-  gnu/build/vm.scm				\
+  %D%/build/activation.scm			\
+  %D%/build/file-systems.scm			\
+  %D%/build/install.scm				\
+  %D%/build/linux-boot.scm			\
+  %D%/build/linux-container.scm			\
+  %D%/build/linux-initrd.scm			\
+  %D%/build/linux-modules.scm			\
+  %D%/build/marionette.scm			\
+  %D%/build/vm.scm				\
 						\
-  gnu/tests.scm					\
-  gnu/tests/base.scm
+  %D%/tests.scm					\
+  %D%/tests/base.scm
 
 
-patchdir = $(guilemoduledir)/gnu/packages/patches
+patchdir = $(guilemoduledir)/%D%/packages/patches
 dist_patch_DATA =						\
-  gnu/packages/patches/4store-fix-buildsystem.patch		\
-  gnu/packages/patches/abiword-explictly-cast-bools.patch	\
-  gnu/packages/patches/abiword-wmf-version-lookup-fix.patch	\
-  gnu/packages/patches/acl-hurd-path-max.patch			\
-  gnu/packages/patches/aegis-constness-error.patch         	\
-  gnu/packages/patches/aegis-perl-tempdir1.patch           	\
-  gnu/packages/patches/aegis-perl-tempdir2.patch           	\
-  gnu/packages/patches/aegis-test-fixup-1.patch            	\
-  gnu/packages/patches/aegis-test-fixup-2.patch            	\
-  gnu/packages/patches/agg-am_c_prototype.patch			\
-  gnu/packages/patches/alsa-lib-mips-atomic-fix.patch		\
-  gnu/packages/patches/apr-skip-getservbyname-test.patch	\
-  gnu/packages/patches/arb-ldconfig.patch			\
-  gnu/packages/patches/ath9k-htc-firmware-binutils.patch	\
-  gnu/packages/patches/ath9k-htc-firmware-gcc.patch		\
-  gnu/packages/patches/ath9k-htc-firmware-objcopy.patch		\
-  gnu/packages/patches/audacity-fix-ffmpeg-binding.patch	\
-  gnu/packages/patches/automake-skip-amhello-tests.patch	\
-  gnu/packages/patches/automake-regexp-syntax.patch		\
-  gnu/packages/patches/avahi-localstatedir.patch		\
-  gnu/packages/patches/avidemux-install-to-lib.patch		\
-  gnu/packages/patches/avrdude-fix-libusb.patch			\
-  gnu/packages/patches/bash-completion-directories.patch	\
-  gnu/packages/patches/bigloo-gc-shebangs.patch			\
-  gnu/packages/patches/binutils-ld-new-dtags.patch		\
-  gnu/packages/patches/binutils-loongson-workaround.patch	\
-  gnu/packages/patches/byobu-writable-status.patch		\
-  gnu/packages/patches/calibre-drop-unrar.patch			\
-  gnu/packages/patches/calibre-no-updates-dialog.patch		\
-  gnu/packages/patches/cdparanoia-fpic.patch			\
-  gnu/packages/patches/chmlib-inttypes.patch			\
-  gnu/packages/patches/clang-libc-search-path.patch		\
-  gnu/packages/patches/clucene-pkgconfig.patch			\
-  gnu/packages/patches/cmake-fix-tests.patch			\
-  gnu/packages/patches/cpio-gets-undeclared.patch		\
-  gnu/packages/patches/cpio-CVE-2016-2037.patch			\
-  gnu/packages/patches/cpufrequtils-fix-aclocal.patch		\
-  gnu/packages/patches/crda-optional-gcrypt.patch		\
-  gnu/packages/patches/crossmap-allow-system-pysam.patch	\
-  gnu/packages/patches/csound-header-ordering.patch		\
-  gnu/packages/patches/cssc-gets-undeclared.patch               \
-  gnu/packages/patches/cssc-missing-include.patch               \
-  gnu/packages/patches/clucene-contribs-lib.patch               \
-  gnu/packages/patches/cursynth-wave-rand.patch			\
-  gnu/packages/patches/dbus-helper-search-path.patch		\
-  gnu/packages/patches/dealii-p4est-interface.patch		\
-  gnu/packages/patches/devil-fix-libpng.patch			\
-  gnu/packages/patches/dico-libtool-deterministic.patch		\
-  gnu/packages/patches/diffutils-gets-undeclared.patch		\
-  gnu/packages/patches/dfu-programmer-fix-libusb.patch		\
-  gnu/packages/patches/doc++-include-directives.patch		\
-  gnu/packages/patches/doc++-segfault-fix.patch			\
-  gnu/packages/patches/doxygen-test.patch			\
-  gnu/packages/patches/duplicity-piped-password.patch		\
-  gnu/packages/patches/duplicity-test_selection-tmp.patch	\
-  gnu/packages/patches/elfutils-tests-ptrace.patch		\
-  gnu/packages/patches/einstein-build.patch			\
-  gnu/packages/patches/emacs-exec-path.patch			\
-  gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
-  gnu/packages/patches/emacs-source-date-epoch.patch		\
-  gnu/packages/patches/eudev-rules-directory.patch		\
-  gnu/packages/patches/evilwm-lost-focus-bug.patch		\
-  gnu/packages/patches/fastcap-mulGlobal.patch			\
-  gnu/packages/patches/fastcap-mulSetup.patch			\
-  gnu/packages/patches/fasthenry-spAllocate.patch		\
-  gnu/packages/patches/fasthenry-spBuild.patch			\
-  gnu/packages/patches/fasthenry-spUtils.patch			\
-  gnu/packages/patches/fasthenry-spSolve.patch			\
-  gnu/packages/patches/fasthenry-spFactor.patch			\
-  gnu/packages/patches/findutils-localstatedir.patch		\
-  gnu/packages/patches/findutils-test-xargs.patch		\
-  gnu/packages/patches/flashrom-use-libftdi1.patch		\
-  gnu/packages/patches/flint-ldconfig.patch			\
-  gnu/packages/patches/fltk-shared-lib-defines.patch		\
-  gnu/packages/patches/fltk-xfont-on-demand.patch		\
-  gnu/packages/patches/fontforge-svg-modtime.patch		\
-  gnu/packages/patches/fossil-test-fixes.patch			\
-  gnu/packages/patches/freeimage-CVE-2015-0852.patch		\
-  gnu/packages/patches/gawk-fts-test.patch			\
-  gnu/packages/patches/gawk-shell.patch				\
-  gnu/packages/patches/gcc-arm-link-spec-fix.patch		\
-  gnu/packages/patches/gcc-cross-environment-variables.patch	\
-  gnu/packages/patches/gcc-libvtv-runpath.patch			\
-  gnu/packages/patches/gcc-5.0-libvtv-runpath.patch		\
-  gnu/packages/patches/gd-CVE-2016-3074.patch			\
-  gnu/packages/patches/geoclue-config.patch			\
-  gnu/packages/patches/ghostscript-CVE-2015-3228.patch		\
-  gnu/packages/patches/ghostscript-runpath.patch		\
-  gnu/packages/patches/glib-networking-ssl-cert-file.patch	\
-  gnu/packages/patches/glib-tests-timer.patch			\
-  gnu/packages/patches/glibc-bootstrap-system.patch		\
-  gnu/packages/patches/glibc-ldd-x86_64.patch			\
-  gnu/packages/patches/glibc-locales.patch			\
-  gnu/packages/patches/glibc-o-largefile.patch			\
-  gnu/packages/patches/glibc-versioned-locpath.patch		\
-  gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
-  gnu/packages/patches/gmp-faulty-test.patch			\
-  gnu/packages/patches/gnome-tweak-tool-search-paths.patch	\
-  gnu/packages/patches/gnucash-price-quotes-perl.patch		\
-  gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
-  gnu/packages/patches/gobject-introspection-cc.patch		\
-  gnu/packages/patches/gobject-introspection-girepository.patch	\
-  gnu/packages/patches/grep-timing-sensitive-test.patch		\
-  gnu/packages/patches/grub-CVE-2015-8370.patch			\
-  gnu/packages/patches/grub-gets-undeclared.patch		\
-  gnu/packages/patches/grub-freetype.patch			\
-  gnu/packages/patches/guile-1.8-cpp-4.5.patch			\
-  gnu/packages/patches/guile-arm-fixes.patch			\
-  gnu/packages/patches/guile-default-utf8.patch			\
-  gnu/packages/patches/guile-linux-syscalls.patch		\
-  gnu/packages/patches/guile-present-coding.patch		\
-  gnu/packages/patches/guile-relocatable.patch			\
-  gnu/packages/patches/guile-rsvg-pkgconfig.patch		\
-  gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
-  gnu/packages/patches/gtk2-theme-paths.patch			\
-  gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
-  gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
-  gnu/packages/patches/hdf5-config-date.patch			\
-  gnu/packages/patches/hop-bigloo-4.0b.patch			\
-  gnu/packages/patches/hop-linker-flags.patch			\
-  gnu/packages/patches/hydra-automake-1.15.patch		\
-  gnu/packages/patches/hydra-disable-darcs-test.patch		\
-  gnu/packages/patches/hypre-doc-tables.patch			\
-  gnu/packages/patches/hypre-ldflags.patch			\
-  gnu/packages/patches/icecat-avoid-bundled-includes.patch	\
-  gnu/packages/patches/icu4c-CVE-2014-6585.patch		\
-  gnu/packages/patches/icu4c-CVE-2015-1270.patch		\
-  gnu/packages/patches/icu4c-CVE-2015-4760.patch		\
-  gnu/packages/patches/ilmbase-fix-tests.patch			\
-  gnu/packages/patches/inkscape-drop-wait-for-targets.patch	\
-  gnu/packages/patches/irrlicht-mesa-10.patch			\
-  gnu/packages/patches/jasper-CVE-2007-2721.patch		\
-  gnu/packages/patches/jasper-CVE-2008-3520.patch		\
-  gnu/packages/patches/jasper-CVE-2008-3522.patch		\
-  gnu/packages/patches/jasper-CVE-2011-4516-and-CVE-2011-4517.patch \
-  gnu/packages/patches/jasper-CVE-2014-8137.patch		\
-  gnu/packages/patches/jasper-CVE-2014-8138.patch		\
-  gnu/packages/patches/jasper-CVE-2014-8157.patch		\
-  gnu/packages/patches/jasper-CVE-2014-8158.patch		\
-  gnu/packages/patches/jasper-CVE-2014-9029.patch		\
-  gnu/packages/patches/jasper-CVE-2016-1577.patch		\
-  gnu/packages/patches/jasper-CVE-2016-1867.patch		\
-  gnu/packages/patches/jasper-CVE-2016-2089.patch		\
-  gnu/packages/patches/jasper-CVE-2016-2116.patch		\
-  gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
-  gnu/packages/patches/kmod-module-directory.patch		\
-  gnu/packages/patches/ldc-disable-tests.patch			\
-  gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
-  gnu/packages/patches/liba52-enable-pic.patch			\
-  gnu/packages/patches/liba52-link-with-libm.patch		\
-  gnu/packages/patches/liba52-set-soname.patch			\
-  gnu/packages/patches/liba52-use-mtune-not-mcpu.patch		\
-  gnu/packages/patches/libbonobo-activation-test-race.patch	\
-  gnu/packages/patches/libcanberra-sound-theme-freedesktop.patch \
-  gnu/packages/patches/libcmis-fix-test-onedrive.patch		\
-  gnu/packages/patches/libdrm-symbol-check.patch		\
-  gnu/packages/patches/libevent-dns-tests.patch			\
-  gnu/packages/patches/libextractor-ffmpeg-3.patch		\
-  gnu/packages/patches/libmtp-devices.patch			\
-  gnu/packages/patches/liboop-mips64-deplibs-fix.patch		\
-  gnu/packages/patches/libotr-test-auth-fix.patch		\
-  gnu/packages/patches/liblxqt-include.patch			\
-  gnu/packages/patches/libmad-armv7-thumb-pt1.patch		\
-  gnu/packages/patches/libmad-armv7-thumb-pt2.patch		\
-  gnu/packages/patches/libmad-frame-length.patch		\
-  gnu/packages/patches/libmad-mips-newgcc.patch			\
-  gnu/packages/patches/libssh-0.6.5-CVE-2016-0739.patch		\
-  gnu/packages/patches/libtheora-config-guess.patch		\
-  gnu/packages/patches/libtiff-CVE-2015-8665+CVE-2015-8683.patch \
-  gnu/packages/patches/libtiff-oob-accesses-in-decode.patch	\
-  gnu/packages/patches/libtiff-oob-write-in-nextdecode.patch	\
-  gnu/packages/patches/libtool-skip-tests2.patch		\
-  gnu/packages/patches/libunwind-CVE-2015-3239.patch		\
-  gnu/packages/patches/libwmf-CAN-2004-0941.patch		\
-  gnu/packages/patches/libwmf-CVE-2006-3376.patch		\
-  gnu/packages/patches/libwmf-CVE-2007-0455.patch		\
-  gnu/packages/patches/libwmf-CVE-2007-2756.patch		\
-  gnu/packages/patches/libwmf-CVE-2007-3472.patch		\
-  gnu/packages/patches/libwmf-CVE-2007-3473.patch		\
-  gnu/packages/patches/libwmf-CVE-2007-3477.patch		\
-  gnu/packages/patches/libwmf-CVE-2009-1364.patch		\
-  gnu/packages/patches/libwmf-CVE-2009-3546.patch		\
-  gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch	\
-  gnu/packages/patches/libwmf-CVE-2015-4695.patch		\
-  gnu/packages/patches/libwmf-CVE-2015-4696.patch		\
-  gnu/packages/patches/libxslt-CVE-2015-7995.patch		\
-  gnu/packages/patches/libxslt-generated-ids.patch		\
-  gnu/packages/patches/libxslt-remove-date-timestamps.patch	\
-  gnu/packages/patches/lirc-localstatedir.patch			\
-  gnu/packages/patches/lm-sensors-hwmon-attrs.patch		\
-  gnu/packages/patches/lua-pkgconfig.patch                      \
-  gnu/packages/patches/lua51-liblua-so.patch                    \
-  gnu/packages/patches/lua52-liblua-so.patch                    \
-  gnu/packages/patches/luajit-no_ldconfig.patch			\
-  gnu/packages/patches/luajit-symlinks.patch			\
-  gnu/packages/patches/luit-posix.patch				\
-  gnu/packages/patches/m4-gets-undeclared.patch			\
-  gnu/packages/patches/make-impure-dirs.patch			\
-  gnu/packages/patches/mars-install.patch			\
-  gnu/packages/patches/mars-sfml-2.3.patch			\
-  gnu/packages/patches/matplotlib-setupext-tk.patch		\
-  gnu/packages/patches/maxima-defsystem-mkdir.patch		\
-  gnu/packages/patches/mcron-install.patch			\
-  gnu/packages/patches/mhash-keygen-test-segfault.patch		\
-  gnu/packages/patches/mit-krb5-CVE-2015-8629.patch		\
-  gnu/packages/patches/mit-krb5-CVE-2015-8630.patch		\
-  gnu/packages/patches/mit-krb5-CVE-2015-8631.patch		\
-  gnu/packages/patches/mit-krb5-init-context-null-spnego.patch	\
-  gnu/packages/patches/mpc123-initialize-ao.patch		\
-  gnu/packages/patches/mplayer2-theora-fix.patch		\
-  gnu/packages/patches/module-init-tools-moduledir.patch	\
-  gnu/packages/patches/mumps-build-parallelism.patch		\
-  gnu/packages/patches/mupen64plus-ui-console-notice.patch	\
-  gnu/packages/patches/mutt-store-references.patch		\
-  gnu/packages/patches/net-tools-bitrot.patch			\
-  gnu/packages/patches/netcdf-config-date.patch			\
-  gnu/packages/patches/ngircd-handle-zombies.patch		\
-  gnu/packages/patches/ngircd-no-dns-in-tests.patch		\
-  gnu/packages/patches/ninja-tests.patch			\
-  gnu/packages/patches/ninja-zero-mtime.patch			\
-  gnu/packages/patches/nss-pkgconfig.patch			\
-  gnu/packages/patches/nvi-assume-preserve-path.patch		\
-  gnu/packages/patches/nvi-dbpagesize-binpower.patch		\
-  gnu/packages/patches/nvi-db4.patch				\
-  gnu/packages/patches/ocaml-CVE-2015-8869.patch		\
-  gnu/packages/patches/ocaml-findlib-make-install.patch	\
-  gnu/packages/patches/openexr-missing-samples.patch		\
-  gnu/packages/patches/openimageio-boost-1.60.patch		\
-  gnu/packages/patches/openjpeg-CVE-2015-6581.patch		\
-  gnu/packages/patches/openjpeg-use-after-free-fix.patch	\
-  gnu/packages/patches/openssh-CVE-2015-8325.patch		\
-  gnu/packages/patches/openssl-runpath.patch			\
-  gnu/packages/patches/openssl-c-rehash-in.patch		\
-  gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
-  gnu/packages/patches/ots-no-include-missing-file.patch	\
-  gnu/packages/patches/patchelf-page-size.patch			\
-  gnu/packages/patches/patchelf-rework-for-arm.patch		\
-  gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
-  gnu/packages/patches/patch-hurd-path-max.patch		\
-  gnu/packages/patches/pcre-CVE-2016-3191.patch			\
-  gnu/packages/patches/perl-CVE-2015-8607.patch			\
-  gnu/packages/patches/perl-CVE-2016-2381.patch			\
-  gnu/packages/patches/perl-autosplit-default-time.patch	\
-  gnu/packages/patches/perl-deterministic-ordering.patch	\
-  gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
-  gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
-  gnu/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
-  gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch	\
-  gnu/packages/patches/perl-net-ssleay-disable-ede-test.patch	\
-  gnu/packages/patches/perl-no-build-time.patch			\
-  gnu/packages/patches/perl-no-sys-dirs.patch			\
-  gnu/packages/patches/perl-module-pluggable-search.patch	\
-  gnu/packages/patches/perl-source-date-epoch.patch		\
-  gnu/packages/patches/pidgin-add-search-path.patch		\
-  gnu/packages/patches/pinball-const-fix.patch			\
-  gnu/packages/patches/pinball-cstddef.patch			\
-  gnu/packages/patches/pinball-missing-separators.patch		\
-  gnu/packages/patches/pinball-src-deps.patch			\
-  gnu/packages/patches/pinball-system-ltdl.patch		\
-  gnu/packages/patches/pingus-sdl-libs-config.patch		\
-  gnu/packages/patches/plink-1.07-unclobber-i.patch		\
-  gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
-  gnu/packages/patches/polkit-drop-test.patch			\
-  gnu/packages/patches/portaudio-audacity-compat.patch		\
-  gnu/packages/patches/portmidi-modular-build.patch		\
-  gnu/packages/patches/procmail-ambiguous-getline-debian.patch  \
-  gnu/packages/patches/procps-non-linux.patch			\
-  gnu/packages/patches/pt-scotch-build-parallelism.patch	\
-  gnu/packages/patches/pulseaudio-fix-mult-test.patch		\
-  gnu/packages/patches/pulseaudio-longer-test-timeout.patch	\
-  gnu/packages/patches/pycairo-wscript.patch			\
-  gnu/packages/patches/pybugz-encode-error.patch		\
-  gnu/packages/patches/pybugz-stty.patch			\
-  gnu/packages/patches/pygpgme-disable-problematic-tests.patch  \
-  gnu/packages/patches/pyqt-configure.patch			\
-  gnu/packages/patches/python-2-deterministic-build-info.patch	\
-  gnu/packages/patches/python-2.7-search-paths.patch		\
-  gnu/packages/patches/python-2.7-source-date-epoch.patch	\
-  gnu/packages/patches/python-3-deterministic-build-info.patch	\
-  gnu/packages/patches/python-3-search-paths.patch		\
-  gnu/packages/patches/python-disable-ssl-test.patch		\
-  gnu/packages/patches/python-fix-tests.patch			\
-  gnu/packages/patches/python-ipython-inputhook-ctype.patch	\
-  gnu/packages/patches/python-rarfile-fix-tests.patch		\
-  gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
-  gnu/packages/patches/python-configobj-setuptools.patch	\
-  gnu/packages/patches/python-paste-remove-website-test.patch	\
-  gnu/packages/patches/python-paste-remove-timing-test.patch	\
-  gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
-  gnu/packages/patches/qt4-ldflags.patch			\
-  gnu/packages/patches/ratpoison-shell.patch			\
-  gnu/packages/patches/readline-link-ncurses.patch		\
-  gnu/packages/patches/ripperx-missing-file.patch		\
-  gnu/packages/patches/rsem-makefile.patch			\
-  gnu/packages/patches/ruby-symlinkfix.patch                    \
-  gnu/packages/patches/sed-hurd-path-max.patch			\
-  gnu/packages/patches/scheme48-tests.patch			\
-  gnu/packages/patches/scotch-test-threading.patch		\
-  gnu/packages/patches/sdl-libx11-1.6.patch			\
-  gnu/packages/patches/serf-comment-style-fix.patch		\
-  gnu/packages/patches/serf-deflate-buckets-test-fix.patch	\
-  gnu/packages/patches/slim-session.patch			\
-  gnu/packages/patches/slim-config.patch			\
-  gnu/packages/patches/slim-sigusr1.patch			\
-  gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
-  gnu/packages/patches/soprano-find-clucene.patch		\
-  gnu/packages/patches/sudo-CVE-2015-5602.patch			\
-  gnu/packages/patches/superlu-dist-scotchmetis.patch		\
-  gnu/packages/patches/synfig-build-fix.patch			\
-  gnu/packages/patches/tar-skip-unreliable-tests.patch		\
-  gnu/packages/patches/tcl-mkindex-deterministic.patch		\
-  gnu/packages/patches/tclxml-3.2-install.patch			\
-  gnu/packages/patches/tcsh-fix-autotest.patch			\
-  gnu/packages/patches/texi2html-document-encoding.patch	\
-  gnu/packages/patches/texi2html-i18n.patch			\
-  gnu/packages/patches/tidy-CVE-2015-5522+5523.patch		\
-  gnu/packages/patches/tinyxml-use-stl.patch			\
-  gnu/packages/patches/tk-find-library.patch			\
-  gnu/packages/patches/ttf2eot-cstddef.patch			\
-  gnu/packages/patches/ttfautohint-source-date-epoch.patch	\
-  gnu/packages/patches/tophat-build-with-later-seqan.patch	\
-  gnu/packages/patches/torsocks-dns-test.patch			\
-  gnu/packages/patches/totem-debug-format-fix.patch		\
-  gnu/packages/patches/unzip-CVE-2014-8139.patch		\
-  gnu/packages/patches/unzip-CVE-2014-8140.patch		\
-  gnu/packages/patches/unzip-CVE-2014-8141.patch		\
-  gnu/packages/patches/unzip-CVE-2014-9636.patch		\
-  gnu/packages/patches/unzip-CVE-2015-7696.patch		\
-  gnu/packages/patches/unzip-CVE-2015-7697.patch		\
-  gnu/packages/patches/unzip-allow-greater-hostver-values.patch	\
-  gnu/packages/patches/unzip-attribs-overflow.patch		\
-  gnu/packages/patches/unzip-overflow-on-invalid-input.patch	\
-  gnu/packages/patches/unzip-format-secure.patch		\
-  gnu/packages/patches/unzip-initialize-symlink-flag.patch	\
-  gnu/packages/patches/unzip-overflow-long-fsize.patch		\
-  gnu/packages/patches/unzip-remove-build-date.patch		\
-  gnu/packages/patches/util-linux-tests.patch			\
-  gnu/packages/patches/upower-builddir.patch			\
-  gnu/packages/patches/valgrind-enable-arm.patch		\
-  gnu/packages/patches/vorbis-tools-CVE-2015-6749.patch		\
-  gnu/packages/patches/vpnc-script.patch			\
-  gnu/packages/patches/vtk-mesa-10.patch			\
-  gnu/packages/patches/w3m-libgc.patch				\
-  gnu/packages/patches/w3m-force-ssl_verify_server-on.patch	\
-  gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch	\
-  gnu/packages/patches/w3m-disable-weak-ciphers.patch		\
-  gnu/packages/patches/weechat-python.patch			\
-  gnu/packages/patches/weex-vacopy.patch			\
-  gnu/packages/patches/wicd-bitrate-none-fix.patch		\
-  gnu/packages/patches/wicd-get-selected-profile-fix.patch	\
-  gnu/packages/patches/wicd-urwid-1.3.patch			\
-  gnu/packages/patches/wicd-wpa2-ttls.patch			\
-  gnu/packages/patches/wmctrl-64-fix.patch			\
-  gnu/packages/patches/woff2-libbrotli.patch			\
-  gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2016-4476.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch	\
-  gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch	\
-  gnu/packages/patches/xdotool-fix-makefile.patch               \
-  gnu/packages/patches/xf86-video-ark-remove-mibstore.patch	\
-  gnu/packages/patches/xf86-video-ast-remove-mibstore.patch	\
-  gnu/packages/patches/xf86-video-geode-glibc-2.20.patch	\
-  gnu/packages/patches/xf86-video-glint-remove-mibstore.patch	\
-  gnu/packages/patches/xf86-video-i128-remove-mibstore.patch	\
-  gnu/packages/patches/xf86-video-intel-compat-api.patch	\
-  gnu/packages/patches/xf86-video-intel-glibc-2.20.patch	\
-  gnu/packages/patches/xf86-video-mach64-glibc-2.20.patch	\
-  gnu/packages/patches/xf86-video-nv-remove-mibstore.patch	\
-  gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch	\
-  gnu/packages/patches/xf86-video-tga-remove-mibstore.patch	\
-  gnu/packages/patches/xfce4-panel-plugins.patch		\
-  gnu/packages/patches/xfce4-session-fix-xflock4.patch		\
-  gnu/packages/patches/xfce4-settings-defaults.patch		\
-  gnu/packages/patches/xmodmap-asprintf.patch 			\
-  gnu/packages/patches/zathura-plugindir-environment-variable.patch
+  %D%/packages/patches/4store-fix-buildsystem.patch		\
+  %D%/packages/patches/a2ps-CVE-2001-1593.patch	\
+  %D%/packages/patches/a2ps-CVE-2014-0466.patch	\
+  %D%/packages/patches/abiword-explictly-cast-bools.patch	\
+  %D%/packages/patches/abiword-wmf-version-lookup-fix.patch	\
+  %D%/packages/patches/acl-hurd-path-max.patch			\
+  %D%/packages/patches/aegis-constness-error.patch         	\
+  %D%/packages/patches/aegis-perl-tempdir1.patch           	\
+  %D%/packages/patches/aegis-perl-tempdir2.patch           	\
+  %D%/packages/patches/aegis-test-fixup-1.patch            	\
+  %D%/packages/patches/aegis-test-fixup-2.patch            	\
+  %D%/packages/patches/agg-am_c_prototype.patch			\
+  %D%/packages/patches/alsa-lib-mips-atomic-fix.patch		\
+  %D%/packages/patches/antiword-CVE-2014-8123.patch			\
+  %D%/packages/patches/apr-skip-getservbyname-test.patch	\
+  %D%/packages/patches/arb-ldconfig.patch			\
+  %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
+  %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
+  %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
+  %D%/packages/patches/audacity-fix-ffmpeg-binding.patch	\
+  %D%/packages/patches/automake-skip-amhello-tests.patch	\
+  %D%/packages/patches/automake-regexp-syntax.patch		\
+  %D%/packages/patches/avahi-localstatedir.patch		\
+  %D%/packages/patches/avidemux-install-to-lib.patch		\
+  %D%/packages/patches/avrdude-fix-libusb.patch			\
+  %D%/packages/patches/bash-completion-directories.patch	\
+  %D%/packages/patches/bigloo-gc-shebangs.patch			\
+  %D%/packages/patches/binutils-ld-new-dtags.patch		\
+  %D%/packages/patches/binutils-loongson-workaround.patch	\
+  %D%/packages/patches/byobu-writable-status.patch		\
+  %D%/packages/patches/calibre-drop-unrar.patch			\
+  %D%/packages/patches/calibre-no-updates-dialog.patch		\
+  %D%/packages/patches/cdparanoia-fpic.patch			\
+  %D%/packages/patches/chmlib-inttypes.patch			\
+  %D%/packages/patches/clang-libc-search-path.patch		\
+  %D%/packages/patches/clucene-pkgconfig.patch			\
+  %D%/packages/patches/cmake-fix-tests.patch			\
+  %D%/packages/patches/cpio-gets-undeclared.patch		\
+  %D%/packages/patches/cpio-CVE-2016-2037.patch			\
+  %D%/packages/patches/cpufrequtils-fix-aclocal.patch		\
+  %D%/packages/patches/crda-optional-gcrypt.patch		\
+  %D%/packages/patches/crossmap-allow-system-pysam.patch	\
+  %D%/packages/patches/csound-header-ordering.patch		\
+  %D%/packages/patches/cssc-gets-undeclared.patch               \
+  %D%/packages/patches/cssc-missing-include.patch               \
+  %D%/packages/patches/clucene-contribs-lib.patch               \
+  %D%/packages/patches/cursynth-wave-rand.patch			\
+  %D%/packages/patches/dbus-helper-search-path.patch		\
+  %D%/packages/patches/dealii-p4est-interface.patch		\
+  %D%/packages/patches/devil-CVE-2009-3994.patch		\
+  %D%/packages/patches/devil-fix-libpng.patch			\
+  %D%/packages/patches/dico-libtool-deterministic.patch		\
+  %D%/packages/patches/diffutils-gets-undeclared.patch		\
+  %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
+  %D%/packages/patches/doc++-include-directives.patch		\
+  %D%/packages/patches/doc++-segfault-fix.patch			\
+  %D%/packages/patches/doxygen-test.patch			\
+  %D%/packages/patches/duplicity-piped-password.patch		\
+  %D%/packages/patches/duplicity-test_selection-tmp.patch	\
+  %D%/packages/patches/elfutils-tests-ptrace.patch		\
+  %D%/packages/patches/einstein-build.patch			\
+  %D%/packages/patches/emacs-exec-path.patch			\
+  %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
+  %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
+  %D%/packages/patches/emacs-source-date-epoch.patch		\
+  %D%/packages/patches/eudev-rules-directory.patch		\
+  %D%/packages/patches/evilwm-lost-focus-bug.patch		\
+  %D%/packages/patches/expat-CVE-2015-1283-refix.patch		\
+  %D%/packages/patches/expat-CVE-2016-0718.patch		\
+  %D%/packages/patches/fastcap-mulGlobal.patch			\
+  %D%/packages/patches/fastcap-mulSetup.patch			\
+  %D%/packages/patches/fasthenry-spAllocate.patch		\
+  %D%/packages/patches/fasthenry-spBuild.patch			\
+  %D%/packages/patches/fasthenry-spUtils.patch			\
+  %D%/packages/patches/fasthenry-spSolve.patch			\
+  %D%/packages/patches/fasthenry-spFactor.patch			\
+  %D%/packages/patches/findutils-localstatedir.patch		\
+  %D%/packages/patches/findutils-test-xargs.patch		\
+  %D%/packages/patches/flashrom-use-libftdi1.patch		\
+  %D%/packages/patches/flint-ldconfig.patch			\
+  %D%/packages/patches/fltk-shared-lib-defines.patch		\
+  %D%/packages/patches/fltk-xfont-on-demand.patch		\
+  %D%/packages/patches/fontforge-svg-modtime.patch		\
+  %D%/packages/patches/fossil-test-fixes.patch			\
+  %D%/packages/patches/freeimage-CVE-2015-0852.patch		\
+  %D%/packages/patches/gawk-fts-test.patch			\
+  %D%/packages/patches/gawk-shell.patch				\
+  %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
+  %D%/packages/patches/gcc-cross-environment-variables.patch	\
+  %D%/packages/patches/gcc-libvtv-runpath.patch			\
+  %D%/packages/patches/gcc-5.0-libvtv-runpath.patch		\
+  %D%/packages/patches/gegl-CVE-2012-4433.patch			\
+  %D%/packages/patches/geoclue-config.patch			\
+  %D%/packages/patches/ghostscript-CVE-2015-3228.patch		\
+  %D%/packages/patches/ghostscript-runpath.patch		\
+  %D%/packages/patches/glib-networking-ssl-cert-file.patch	\
+  %D%/packages/patches/glib-tests-timer.patch			\
+  %D%/packages/patches/glibc-bootstrap-system.patch		\
+  %D%/packages/patches/glibc-ldd-x86_64.patch			\
+  %D%/packages/patches/glibc-locales.patch			\
+  %D%/packages/patches/glibc-o-largefile.patch			\
+  %D%/packages/patches/glibc-versioned-locpath.patch		\
+  %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
+  %D%/packages/patches/gmp-faulty-test.patch			\
+  %D%/packages/patches/gnome-tweak-tool-search-paths.patch	\
+  %D%/packages/patches/gnucash-price-quotes-perl.patch		\
+  %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
+  %D%/packages/patches/gobject-introspection-cc.patch		\
+  %D%/packages/patches/gobject-introspection-girepository.patch	\
+  %D%/packages/patches/grep-timing-sensitive-test.patch		\
+  %D%/packages/patches/grub-CVE-2015-8370.patch			\
+  %D%/packages/patches/grub-gets-undeclared.patch		\
+  %D%/packages/patches/grub-freetype.patch			\
+  %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
+  %D%/packages/patches/guile-arm-fixes.patch			\
+  %D%/packages/patches/guile-default-utf8.patch			\
+  %D%/packages/patches/guile-linux-syscalls.patch		\
+  %D%/packages/patches/guile-present-coding.patch		\
+  %D%/packages/patches/guile-relocatable.patch			\
+  %D%/packages/patches/guile-rsvg-pkgconfig.patch		\
+  %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
+  %D%/packages/patches/gtk2-theme-paths.patch			\
+  %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
+  %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
+  %D%/packages/patches/hdf5-config-date.patch			\
+  %D%/packages/patches/hop-bigloo-4.0b.patch			\
+  %D%/packages/patches/hop-linker-flags.patch			\
+  %D%/packages/patches/hydra-automake-1.15.patch		\
+  %D%/packages/patches/hydra-disable-darcs-test.patch		\
+  %D%/packages/patches/hypre-doc-tables.patch			\
+  %D%/packages/patches/hypre-ldflags.patch			\
+  %D%/packages/patches/icecat-avoid-bundled-includes.patch	\
+  %D%/packages/patches/icedtea-remove-overrides.patch		\
+  %D%/packages/patches/icu4c-CVE-2014-6585.patch		\
+  %D%/packages/patches/icu4c-CVE-2015-1270.patch		\
+  %D%/packages/patches/icu4c-CVE-2015-4760.patch		\
+  %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
+  %D%/packages/patches/ilmbase-fix-tests.patch			\
+  %D%/packages/patches/inkscape-drop-wait-for-targets.patch	\
+  %D%/packages/patches/irrlicht-mesa-10.patch			\
+  %D%/packages/patches/jansson-CVE-2016-4425.patch		\
+  %D%/packages/patches/jasper-CVE-2007-2721.patch		\
+  %D%/packages/patches/jasper-CVE-2008-3520.patch		\
+  %D%/packages/patches/jasper-CVE-2008-3522.patch		\
+  %D%/packages/patches/jasper-CVE-2011-4516-and-CVE-2011-4517.patch \
+  %D%/packages/patches/jasper-CVE-2014-8137.patch		\
+  %D%/packages/patches/jasper-CVE-2014-8138.patch		\
+  %D%/packages/patches/jasper-CVE-2014-8157.patch		\
+  %D%/packages/patches/jasper-CVE-2014-8158.patch		\
+  %D%/packages/patches/jasper-CVE-2014-9029.patch		\
+  %D%/packages/patches/jasper-CVE-2016-1577.patch		\
+  %D%/packages/patches/jasper-CVE-2016-1867.patch		\
+  %D%/packages/patches/jasper-CVE-2016-2089.patch		\
+  %D%/packages/patches/jasper-CVE-2016-2116.patch		\
+  %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
+  %D%/packages/patches/kmod-module-directory.patch		\
+  %D%/packages/patches/ldc-disable-tests.patch			\
+  %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
+  %D%/packages/patches/liba52-enable-pic.patch			\
+  %D%/packages/patches/liba52-link-with-libm.patch		\
+  %D%/packages/patches/liba52-set-soname.patch			\
+  %D%/packages/patches/liba52-use-mtune-not-mcpu.patch		\
+  %D%/packages/patches/libbonobo-activation-test-race.patch	\
+  %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
+  %D%/packages/patches/libcmis-fix-test-onedrive.patch		\
+  %D%/packages/patches/libdrm-symbol-check.patch		\
+  %D%/packages/patches/libevent-dns-tests.patch			\
+  %D%/packages/patches/libextractor-ffmpeg-3.patch		\
+  %D%/packages/patches/libmtp-devices.patch			\
+  %D%/packages/patches/liboop-mips64-deplibs-fix.patch		\
+  %D%/packages/patches/libotr-test-auth-fix.patch		\
+  %D%/packages/patches/liblxqt-include.patch			\
+  %D%/packages/patches/libmad-armv7-thumb-pt1.patch		\
+  %D%/packages/patches/libmad-armv7-thumb-pt2.patch		\
+  %D%/packages/patches/libmad-frame-length.patch		\
+  %D%/packages/patches/libmad-mips-newgcc.patch			\
+  %D%/packages/patches/libssh-0.6.5-CVE-2016-0739.patch		\
+  %D%/packages/patches/libtar-CVE-2013-4420.patch \
+  %D%/packages/patches/libtheora-config-guess.patch		\
+  %D%/packages/patches/libtiff-CVE-2015-8665+CVE-2015-8683.patch \
+  %D%/packages/patches/libtiff-oob-accesses-in-decode.patch	\
+  %D%/packages/patches/libtiff-oob-write-in-nextdecode.patch	\
+  %D%/packages/patches/libtool-skip-tests2.patch		\
+  %D%/packages/patches/libunwind-CVE-2015-3239.patch		\
+  %D%/packages/patches/libwmf-CAN-2004-0941.patch		\
+  %D%/packages/patches/libwmf-CVE-2006-3376.patch		\
+  %D%/packages/patches/libwmf-CVE-2007-0455.patch		\
+  %D%/packages/patches/libwmf-CVE-2007-2756.patch		\
+  %D%/packages/patches/libwmf-CVE-2007-3472.patch		\
+  %D%/packages/patches/libwmf-CVE-2007-3473.patch		\
+  %D%/packages/patches/libwmf-CVE-2007-3477.patch		\
+  %D%/packages/patches/libwmf-CVE-2009-1364.patch		\
+  %D%/packages/patches/libwmf-CVE-2009-3546.patch		\
+  %D%/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch	\
+  %D%/packages/patches/libwmf-CVE-2015-4695.patch		\
+  %D%/packages/patches/libwmf-CVE-2015-4696.patch		\
+  %D%/packages/patches/libxslt-CVE-2015-7995.patch		\
+  %D%/packages/patches/lirc-localstatedir.patch			\
+  %D%/packages/patches/lm-sensors-hwmon-attrs.patch		\
+  %D%/packages/patches/lua-CVE-2014-5461.patch                      \
+  %D%/packages/patches/lua-pkgconfig.patch                      \
+  %D%/packages/patches/lua51-liblua-so.patch                    \
+  %D%/packages/patches/lua52-liblua-so.patch                    \
+  %D%/packages/patches/luajit-no_ldconfig.patch			\
+  %D%/packages/patches/luajit-symlinks.patch			\
+  %D%/packages/patches/luit-posix.patch				\
+  %D%/packages/patches/m4-gets-undeclared.patch			\
+  %D%/packages/patches/make-impure-dirs.patch			\
+  %D%/packages/patches/mars-install.patch			\
+  %D%/packages/patches/mars-sfml-2.3.patch			\
+  %D%/packages/patches/matplotlib-setupext-tk.patch		\
+  %D%/packages/patches/maxima-defsystem-mkdir.patch		\
+  %D%/packages/patches/mcron-install.patch			\
+  %D%/packages/patches/mcrypt-CVE-2012-4409.patch			\
+  %D%/packages/patches/mcrypt-CVE-2012-4426.patch			\
+  %D%/packages/patches/mcrypt-CVE-2012-4527.patch			\
+  %D%/packages/patches/mhash-keygen-test-segfault.patch		\
+  %D%/packages/patches/mit-krb5-CVE-2015-8629.patch		\
+  %D%/packages/patches/mit-krb5-CVE-2015-8630.patch		\
+  %D%/packages/patches/mit-krb5-CVE-2015-8631.patch		\
+  %D%/packages/patches/mit-krb5-init-context-null-spnego.patch	\
+  %D%/packages/patches/mpc123-initialize-ao.patch		\
+  %D%/packages/patches/mplayer2-theora-fix.patch		\
+  %D%/packages/patches/module-init-tools-moduledir.patch	\
+  %D%/packages/patches/mumps-build-parallelism.patch		\
+  %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
+  %D%/packages/patches/mutt-store-references.patch		\
+  %D%/packages/patches/net-tools-bitrot.patch			\
+  %D%/packages/patches/netcdf-config-date.patch			\
+  %D%/packages/patches/ngircd-handle-zombies.patch		\
+  %D%/packages/patches/ngircd-no-dns-in-tests.patch		\
+  %D%/packages/patches/ninja-tests.patch			\
+  %D%/packages/patches/ninja-zero-mtime.patch			\
+  %D%/packages/patches/nss-pkgconfig.patch			\
+  %D%/packages/patches/nvi-assume-preserve-path.patch		\
+  %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
+  %D%/packages/patches/nvi-db4.patch				\
+  %D%/packages/patches/ocaml-CVE-2015-8869.patch		\
+  %D%/packages/patches/ocaml-findlib-make-install.patch	\
+  %D%/packages/patches/openexr-missing-samples.patch		\
+  %D%/packages/patches/openimageio-boost-1.60.patch		\
+  %D%/packages/patches/openjpeg-CVE-2015-6581.patch		\
+  %D%/packages/patches/openjpeg-use-after-free-fix.patch	\
+  %D%/packages/patches/openssh-CVE-2015-8325.patch		\
+  %D%/packages/patches/openssl-runpath.patch			\
+  %D%/packages/patches/openssl-c-rehash-in.patch		\
+  %D%/packages/patches/orpheus-cast-errors-and-includes.patch	\
+  %D%/packages/patches/ots-no-include-missing-file.patch	\
+  %D%/packages/patches/patchelf-page-size.patch			\
+  %D%/packages/patches/patchelf-rework-for-arm.patch		\
+  %D%/packages/patches/patchutils-xfail-gendiff-tests.patch	\
+  %D%/packages/patches/patch-hurd-path-max.patch		\
+  %D%/packages/patches/pcre-CVE-2016-3191.patch			\
+  %D%/packages/patches/pcre2-CVE-2016-3191.patch		\
+  %D%/packages/patches/perl-CVE-2015-8607.patch			\
+  %D%/packages/patches/perl-CVE-2016-2381.patch			\
+  %D%/packages/patches/perl-autosplit-default-time.patch	\
+  %D%/packages/patches/perl-deterministic-ordering.patch	\
+  %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
+  %D%/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
+  %D%/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
+  %D%/packages/patches/perl-net-amazon-s3-moose-warning.patch	\
+  %D%/packages/patches/perl-net-ssleay-disable-ede-test.patch	\
+  %D%/packages/patches/perl-no-build-time.patch			\
+  %D%/packages/patches/perl-no-sys-dirs.patch			\
+  %D%/packages/patches/perl-module-pluggable-search.patch	\
+  %D%/packages/patches/perl-source-date-epoch.patch		\
+  %D%/packages/patches/pidgin-add-search-path.patch		\
+  %D%/packages/patches/pinball-const-fix.patch			\
+  %D%/packages/patches/pinball-cstddef.patch			\
+  %D%/packages/patches/pinball-missing-separators.patch		\
+  %D%/packages/patches/pinball-src-deps.patch			\
+  %D%/packages/patches/pinball-system-ltdl.patch		\
+  %D%/packages/patches/pingus-sdl-libs-config.patch		\
+  %D%/packages/patches/plink-1.07-unclobber-i.patch		\
+  %D%/packages/patches/plotutils-libpng-jmpbuf.patch		\
+  %D%/packages/patches/polkit-drop-test.patch			\
+  %D%/packages/patches/portaudio-audacity-compat.patch		\
+  %D%/packages/patches/portmidi-modular-build.patch		\
+  %D%/packages/patches/procmail-ambiguous-getline-debian.patch  \
+  %D%/packages/patches/procmail-CVE-2014-3618.patch		\
+  %D%/packages/patches/pt-scotch-build-parallelism.patch	\
+  %D%/packages/patches/pulseaudio-fix-mult-test.patch		\
+  %D%/packages/patches/pulseaudio-longer-test-timeout.patch	\
+  %D%/packages/patches/pycairo-wscript.patch			\
+  %D%/packages/patches/pybugz-encode-error.patch		\
+  %D%/packages/patches/pybugz-stty.patch			\
+  %D%/packages/patches/pygpgme-disable-problematic-tests.patch  \
+  %D%/packages/patches/pyqt-configure.patch			\
+  %D%/packages/patches/python-2-deterministic-build-info.patch	\
+  %D%/packages/patches/python-2.7-search-paths.patch		\
+  %D%/packages/patches/python-2.7-source-date-epoch.patch	\
+  %D%/packages/patches/python-3-deterministic-build-info.patch	\
+  %D%/packages/patches/python-3-search-paths.patch		\
+  %D%/packages/patches/python-disable-ssl-test.patch		\
+  %D%/packages/patches/python-fix-tests.patch			\
+  %D%/packages/patches/python-ipython-inputhook-ctype.patch	\
+  %D%/packages/patches/python-rarfile-fix-tests.patch		\
+  %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
+  %D%/packages/patches/python-configobj-setuptools.patch	\
+  %D%/packages/patches/python-paste-remove-website-test.patch	\
+  %D%/packages/patches/python-paste-remove-timing-test.patch	\
+  %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
+  %D%/packages/patches/qt4-ldflags.patch			\
+  %D%/packages/patches/ratpoison-shell.patch			\
+  %D%/packages/patches/readline-link-ncurses.patch		\
+  %D%/packages/patches/ripperx-missing-file.patch		\
+  %D%/packages/patches/rpm-CVE-2014-8118.patch			\
+  %D%/packages/patches/rsem-makefile.patch			\
+  %D%/packages/patches/ruby-symlinkfix.patch                    \
+  %D%/packages/patches/rush-CVE-2013-6889.patch			\
+  %D%/packages/patches/sed-hurd-path-max.patch			\
+  %D%/packages/patches/scheme48-tests.patch			\
+  %D%/packages/patches/scotch-test-threading.patch		\
+  %D%/packages/patches/sdl-libx11-1.6.patch			\
+  %D%/packages/patches/serf-comment-style-fix.patch		\
+  %D%/packages/patches/serf-deflate-buckets-test-fix.patch	\
+  %D%/packages/patches/slim-session.patch			\
+  %D%/packages/patches/slim-config.patch			\
+  %D%/packages/patches/slim-sigusr1.patch			\
+  %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
+  %D%/packages/patches/soprano-find-clucene.patch		\
+  %D%/packages/patches/sudo-CVE-2015-5602.patch			\
+  %D%/packages/patches/superlu-dist-scotchmetis.patch		\
+  %D%/packages/patches/synfig-build-fix.patch			\
+  %D%/packages/patches/t1lib-CVE-2010-2642.patch		\
+  %D%/packages/patches/t1lib-CVE-2011-0764.patch		\
+  %D%/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch		\
+  %D%/packages/patches/tar-skip-unreliable-tests.patch		\
+  %D%/packages/patches/tcl-mkindex-deterministic.patch		\
+  %D%/packages/patches/tclxml-3.2-install.patch			\
+  %D%/packages/patches/tcsh-fix-autotest.patch			\
+  %D%/packages/patches/texi2html-document-encoding.patch	\
+  %D%/packages/patches/texi2html-i18n.patch			\
+  %D%/packages/patches/tidy-CVE-2015-5522+5523.patch		\
+  %D%/packages/patches/tinyxml-use-stl.patch			\
+  %D%/packages/patches/tk-find-library.patch			\
+  %D%/packages/patches/ttf2eot-cstddef.patch			\
+  %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
+  %D%/packages/patches/tophat-build-with-later-seqan.patch	\
+  %D%/packages/patches/torsocks-dns-test.patch			\
+  %D%/packages/patches/totem-debug-format-fix.patch		\
+  %D%/packages/patches/unzip-CVE-2014-8139.patch		\
+  %D%/packages/patches/unzip-CVE-2014-8140.patch		\
+  %D%/packages/patches/unzip-CVE-2014-8141.patch		\
+  %D%/packages/patches/unzip-CVE-2014-9636.patch		\
+  %D%/packages/patches/unzip-CVE-2015-7696.patch		\
+  %D%/packages/patches/unzip-CVE-2015-7697.patch		\
+  %D%/packages/patches/unzip-allow-greater-hostver-values.patch	\
+  %D%/packages/patches/unzip-attribs-overflow.patch		\
+  %D%/packages/patches/unzip-overflow-on-invalid-input.patch	\
+  %D%/packages/patches/unzip-format-secure.patch		\
+  %D%/packages/patches/unzip-initialize-symlink-flag.patch	\
+  %D%/packages/patches/unzip-overflow-long-fsize.patch		\
+  %D%/packages/patches/unzip-remove-build-date.patch		\
+  %D%/packages/patches/util-linux-tests.patch			\
+  %D%/packages/patches/upower-builddir.patch			\
+  %D%/packages/patches/valgrind-enable-arm.patch		\
+  %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch		\
+  %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch		\
+  %D%/packages/patches/vorbis-tools-CVE-2015-6749.patch		\
+  %D%/packages/patches/vpnc-script.patch			\
+  %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
+  %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
+  %D%/packages/patches/vtk-mesa-10.patch			\
+  %D%/packages/patches/w3m-libgc.patch				\
+  %D%/packages/patches/w3m-force-ssl_verify_server-on.patch	\
+  %D%/packages/patches/w3m-disable-sslv2-and-sslv3.patch	\
+  %D%/packages/patches/w3m-disable-weak-ciphers.patch		\
+  %D%/packages/patches/weechat-python.patch			\
+  %D%/packages/patches/weex-vacopy.patch			\
+  %D%/packages/patches/wicd-bitrate-none-fix.patch		\
+  %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
+  %D%/packages/patches/wicd-urwid-1.3.patch			\
+  %D%/packages/patches/wicd-wpa2-ttls.patch			\
+  %D%/packages/patches/wmctrl-64-fix.patch			\
+  %D%/packages/patches/woff2-libbrotli.patch			\
+  %D%/packages/patches/wordnet-CVE-2008-2149.patch			\
+  %D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch			\
+  %D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch			\
+  %D%/packages/patches/wpa-supplicant-CVE-2015-5310.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2015-5314.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2015-5315.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2015-5316.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2016-4476.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch	\
+  %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch	\
+  %D%/packages/patches/xdotool-fix-makefile.patch               \
+  %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
+  %D%/packages/patches/xf86-video-ast-remove-mibstore.patch	\
+  %D%/packages/patches/xf86-video-geode-glibc-2.20.patch	\
+  %D%/packages/patches/xf86-video-glint-remove-mibstore.patch	\
+  %D%/packages/patches/xf86-video-i128-remove-mibstore.patch	\
+  %D%/packages/patches/xf86-video-intel-compat-api.patch	\
+  %D%/packages/patches/xf86-video-intel-glibc-2.20.patch	\
+  %D%/packages/patches/xf86-video-mach64-glibc-2.20.patch	\
+  %D%/packages/patches/xf86-video-nv-remove-mibstore.patch	\
+  %D%/packages/patches/xf86-video-openchrome-glibc-2.20.patch	\
+  %D%/packages/patches/xf86-video-tga-remove-mibstore.patch	\
+  %D%/packages/patches/xfce4-panel-plugins.patch		\
+  %D%/packages/patches/xfce4-session-fix-xflock4.patch		\
+  %D%/packages/patches/xfce4-settings-defaults.patch		\
+  %D%/packages/patches/xmodmap-asprintf.patch 			\
+  %D%/packages/patches/libyaml-CVE-2014-9130.patch 		\
+  %D%/packages/patches/zathura-plugindir-environment-variable.patch
 
 MISC_DISTRO_FILES =				\
-  gnu/packages/ld-wrapper.in
+  %D%/packages/ld-wrapper.in
 
-bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
+bootstrapdir = $(guilemoduledir)/%D%/packages/bootstrap
 bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
 bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
 bootstrap_armhf_linuxdir = $(bootstrapdir)/armhf-linux
 bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux
 
 dist_bootstrap_x86_64_linux_DATA =		\
-  gnu/packages/bootstrap/x86_64-linux/bash	\
-  gnu/packages/bootstrap/x86_64-linux/mkdir	\
-  gnu/packages/bootstrap/x86_64-linux/tar	\
-  gnu/packages/bootstrap/x86_64-linux/xz
+  %D%/packages/bootstrap/x86_64-linux/bash	\
+  %D%/packages/bootstrap/x86_64-linux/mkdir	\
+  %D%/packages/bootstrap/x86_64-linux/tar	\
+  %D%/packages/bootstrap/x86_64-linux/xz
 
 dist_bootstrap_i686_linux_DATA =		\
-  gnu/packages/bootstrap/i686-linux/bash	\
-  gnu/packages/bootstrap/i686-linux/mkdir	\
-  gnu/packages/bootstrap/i686-linux/tar		\
-  gnu/packages/bootstrap/i686-linux/xz
+  %D%/packages/bootstrap/i686-linux/bash	\
+  %D%/packages/bootstrap/i686-linux/mkdir	\
+  %D%/packages/bootstrap/i686-linux/tar		\
+  %D%/packages/bootstrap/i686-linux/xz
 
 dist_bootstrap_armhf_linux_DATA =		\
-  gnu/packages/bootstrap/armhf-linux/bash	\
-  gnu/packages/bootstrap/armhf-linux/mkdir	\
-  gnu/packages/bootstrap/armhf-linux/tar	\
-  gnu/packages/bootstrap/armhf-linux/xz
+  %D%/packages/bootstrap/armhf-linux/bash	\
+  %D%/packages/bootstrap/armhf-linux/mkdir	\
+  %D%/packages/bootstrap/armhf-linux/tar	\
+  %D%/packages/bootstrap/armhf-linux/xz
 
 dist_bootstrap_mips64el_linux_DATA =		\
-  gnu/packages/bootstrap/mips64el-linux/bash	\
-  gnu/packages/bootstrap/mips64el-linux/mkdir	\
-  gnu/packages/bootstrap/mips64el-linux/tar	\
-  gnu/packages/bootstrap/mips64el-linux/xz
+  %D%/packages/bootstrap/mips64el-linux/bash	\
+  %D%/packages/bootstrap/mips64el-linux/mkdir	\
+  %D%/packages/bootstrap/mips64el-linux/tar	\
+  %D%/packages/bootstrap/mips64el-linux/xz
 
 # Big bootstrap binaries are not included in the tarball.  Instead, they
 # are downloaded.
 nodist_bootstrap_x86_64_linux_DATA =					\
-  gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
+  %D%/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
 nodist_bootstrap_i686_linux_DATA =					\
-  gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
+  %D%/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
 nodist_bootstrap_armhf_linux_DATA =					\
-  gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz
+  %D%/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz
 nodist_bootstrap_mips64el_linux_DATA =					\
-  gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
+  %D%/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
 
 # Those files must remain executable, so they remain executable once
 # imported into the store.
@@ -852,19 +882,19 @@ DOWNLOAD_FILE =								\
   $(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)"	\
            "$(top_srcdir)/build-aux/download.scm"
 
-gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
 	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
 	$(DOWNLOAD_FILE) "$@"			\
 	  "037b103522a2d0d7d69c7ffd8de683dfe5bb4b59c1fafd70b4ffd397fd2f57f0"
-gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
 	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
 	$(DOWNLOAD_FILE) "$@"			\
 	  "b757cd46bf13ecac83fb8e955fb50096ac2d17bb610ca8eb816f29302a00a846"
-gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz:
+%D%/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz:
 	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
 	$(DOWNLOAD_FILE) "$@"			\
 	  "e551d05d4d385d6706ab8d574856a087758294dc90ab4c06e70a157a685e23d6"
-gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
 	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
 	$(DOWNLOAD_FILE) "$@" 			\
 	  "994680f0001346864aa2c2cc5110f380ee7518dcd701c614291682b8e948f73b"
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 633606e840..abfef36660 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -619,7 +619,8 @@ connection alive.")
        "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
 reference implementation of all aspects of DHCP, through a suite of DHCP
 tools: server, client, and relay agent.")
-      (license license:isc))))
+      (license license:isc)
+      (properties '((cpe-name . "dhcp"))))))
 
 (define-public libpcap
   (package
@@ -1252,7 +1253,7 @@ various ways that may be running with too much privilege.")
 (define-public smartmontools
   (package
     (name "smartmontools")
-    (version "6.3")
+    (version "6.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1260,7 +1261,7 @@ various ways that may be running with too much privilege.")
                     version "/smartmontools-" version ".tar.gz"))
               (sha256
                (base32
-                "06gy71jh2d3gcfmlbbrsqw7215knkfq59q3j6qdxfrar39fhcxx7"))))
+                "1g25r6sx85b5lay5n6sbnqv05qxzj6xsafsp93hnrg1h044bps49"))))
     (build-system gnu-build-system)
     (inputs `(("libcap-ng" ,libcap-ng)))
     (home-page "http://www.smartmontools.org/")
@@ -1504,20 +1505,20 @@ displays a table of current bandwidth usage by pairs of hosts.")
 (define-public munge
   (package
     (name "munge")
-    (version "0.5.11")
+    (version "0.5.12")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/dun/munge/archive/munge-"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (uri (string-append "https://github.com/dun/munge/releases/"
+                                  "download/munge-" version "/munge-"
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "0njplyalwwqh7xr7xc7klc6x06mq0ak8w2pxh85w8n4hxkmqqnf5"))))
+                "1s0vlwgm3hcx75vcmjf2y3icy5nv8y07bx93w2cmm6a7x71y6wp9"))))
     (inputs
      `(("openssl" ,openssl)
        ("libgcrypt" ,libgcrypt)))
     (build-system gnu-build-system)
-    (home-page "http://dun.github.io/munge/")
+    (home-page "https://dun.github.io/munge/")
     (synopsis "Cluster computing authentication service")
     (description
      "Munge is an authentication service for creating and validating
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 53f6f3e3d2..9518e65db6 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -37,7 +37,7 @@
   #:use-module (gnu packages flex)
   #:use-module (gnu packages python)
   #:use-module (gnu packages tcsh)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses) #:prefix license:)
diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm
index 238c66fe33..4cbc215070 100644
--- a/gnu/packages/autogen.scm
+++ b/gnu/packages/autogen.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013,2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2013, 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,31 +31,31 @@
 (define-public autogen
   (package
     (name "autogen")
-    (version "5.18.7")
+    (version "5.18.10")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://gnu/autogen"
+      (uri (string-append "mirror://gnu/autogen/rel" version
                           "/autogen-" version ".tar.xz"))
       (sha256
        (base32
-        "01d4m8ckww12sy50vgyxlnz83z9dxqpyqp153cscncc9w6jq19d7"))))
+        "0j61mf3qab5ya7w5xsp7xalrby00cv92g462bxffl104ql18w92f"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)     ;for doc generator mdoc
                      ("pkg-config" ,pkg-config)))
     (inputs `(("which" ,which)
               ("guile" ,guile-2.0)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'patch-source-shebangs 'patch-test-scripts
-                 (lambda _
-                   (let ((sh (which "sh")))
-                     (substitute*
-                         (append (find-files "agen5/test" "\\.test$")
-                                 (find-files "autoopts/test" "\\.(test|in)$"))
-                       (("/bin/sh") sh)
-                       (("/usr/bin/tr") "tr"))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-test-scripts
+           (lambda _
+             (let ((sh (which "sh")))
+               (substitute*
+                 (append (find-files "agen5/test" "\\.test$")
+                         (find-files "autoopts/test" "\\.(test|in)$"))
+                 (("/bin/sh") sh)
+                 (("/usr/bin/tr") "tr"))))))))
     (home-page "http://www.gnu.org/software/autogen/")
     (synopsis "Automated program generator")
     (description
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index ddc628d005..de7f1f6d15 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -159,6 +160,27 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
                 port)))
            (chmod (string-append bin "/autoconf") #o555)))))))
 
+(define-public autoconf-archive
+  (package
+    (name "autoconf-archive")
+    (version "2016.03.20")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnu/autoconf-archive/autoconf-archive-"
+                          version ".tar.xz"))
+      (sha256
+       (base32
+        "0dz4fnc723jqn3by22ds5fys7g31apzm1r9allldvva0yvzjxyw8"))))
+    (build-system gnu-build-system)
+    (home-page "https://www.gnu.org/software/autoconf-archive")
+    (synopsis "Collection of freely reusable Autoconf macros")
+    (description
+     "Autoconf Archive is a collection of over 450 new macros for Autoconf,
+greatly expanding the domain of its functionality.  These macros have been
+contributed as free software by the community.")
+    (license gpl3+)))
+
 (define-public autobuild
   (package
     (name "autobuild")
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index d59816b6b8..987347713c 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2014, 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,52 +21,128 @@
 
 (define-module (gnu packages avr)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages flashing-tools)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages zip))
 
+(define-public avr-binutils
+  (package
+    (inherit (cross-binutils "avr"))
+    (name "avr-binutils")))
+
+(define-public avr-gcc-4.9
+  (let ((xgcc (cross-gcc "avr" avr-binutils)))
+    (package
+      (inherit xgcc)
+      (name "avr-gcc")
+      (arguments
+       (substitute-keyword-arguments (package-arguments xgcc)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             ;; Without a working multilib build, the resulting GCC lacks
+             ;; support for nearly every AVR chip.
+             (add-after 'unpack 'fix-genmultilib
+               (lambda _
+                 ;; patch-shebang doesn't work here because there are actually
+                 ;; several scripts inside this script, each with a #!/bin/sh
+                 ;; that needs patching.
+                 (substitute* "gcc/genmultilib"
+                   (("#!/bin/sh") (string-append "#!" (which "sh"))))
+                 #t))))
+         ((#:configure-flags flags)
+          `(delete "--disable-multilib" ,flags))))
+      (native-search-paths
+       (list (search-path-specification
+              (variable "CROSS_CPATH")
+              (files '("avr/include")))
+             (search-path-specification
+              (variable "CROSS_LIBRARY_PATH")
+              (files '("avr/lib"))))))))
+
+(define-public avr-gcc-5
+  (package
+    (inherit avr-gcc-4.9)
+    (version (package-version gcc-5))
+    (source (package-source gcc-5))))
+
 (define-public avr-libc
   (package
     (name "avr-libc")
-    (version "1.8.1")
+    (version "2.0.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "mirror://savannah//avr-libc/avr-libc-"
-                    version ".tar.bz2"))
+              (uri (string-append "mirror://savannah//avr-libc/avr-libc-"
+                                  version ".tar.bz2"))
               (sha256
                (base32
-                "0sd9qkvhmk9av4g1f8dsjwc309hf1g0731bhvicnjb3b3d42l1n3"))))
+                "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:out-of-source? #t
-       #:configure-flags '("--host=avr")))
-
-    (native-inputs `(("cross-binutils" ,(cross-binutils "avr"))
-                     ("cross-gcc" ,xgcc-avr)))
+     '(#:out-of-source? #t
+       #:configure-flags '("--host=avr")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'unpack 'fix-cpath
+           (lambda _
+             ;; C_INCLUDE_PATH poses issues for cross-building, leading to
+             ;; failures when building avr-libc on 64-bit systems.  Simply
+             ;; unsetting it allows the build to succeed because it doesn't
+             ;; try to use any of the native system's headers.
+             (unsetenv "C_INCLUDE_PATH")
+             #t)))))
+    (native-inputs `(("avr-binutils" ,avr-binutils)
+                     ("avr-gcc" ,avr-gcc-4.9)))
     (home-page "http://www.nongnu.org/avr-libc/")
     (synopsis "The AVR C Library")
     (description
      "AVR Libc is a project whose goal is to provide a high quality C library
 for use with GCC on Atmel AVR microcontrollers.")
-    (license (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
+    (license
+     (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
+
+(define (avr-toolchain avr-gcc)
+  (package
+    (name "avr-toolchain")
+    (version (package-version avr-gcc))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments '(#:builder (mkdir %output)))
+    (propagated-inputs
+     `(("avrdude" ,avrdude)
+       ("binutils" ,avr-binutils)
+       ("gcc" ,avr-gcc)
+       ("libc" ,avr-libc)))
+    (synopsis "Complete GCC tool chain for AVR microcontroller development")
+    (description "This package provides a complete GCC tool chain for AVR
+microcontroller development.  This includes the GCC AVR cross compiler and
+avrdude for firmware flashing.  The supported programming languages are C and
+C++.")
+    (home-page (package-home-page avr-libc))
+    (license (package-license avr-gcc))))
+
+(define-public avr-toolchain-4.9 (avr-toolchain avr-gcc-4.9))
+(define-public avr-toolchain-5 (avr-toolchain avr-gcc-5))
 
 (define-public microscheme
   (package
     (name "microscheme")
-    (version "0.9.2")
+    (version "0.9.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ryansuchocki/"
-                                  "microscheme/archive/v" version ".zip"))
+                                  "microscheme/archive/v" version ".tar.gz"))
               (sha256
                (base32
-                "0cmp1c6ilcib4w9ysqghav310g8jsq9gdfpfa9sd23wgl7mlncxf"))
-              (file-name (string-append name "-" version ".zip"))))
+                "1n404mh7z2icy3ga1mx249lk9x091k7idj6xpcf20hnmzabd0k0x"))
+              (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-build? #f ; fails to build otherwise
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 05423f1401..a0ff535dfe 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -404,13 +404,17 @@ detection, and lossless compression.")
 (define-public borg
   (package
     (name "borg")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
-              (uri (pypi-uri "borgbackup" version))
+              (uri (string-append
+                     "https://pypi.python.org/packages/"
+                     "c9/c6/1efc338724b054d4d264dfeadfcba11cefa6c3c50f474cec91b8f0c21d3a"
+                     "/borgbackup-" version ".tar.gz"))
+
               (sha256
                (base32
-                "1myz10pwxnac9z59gw1w3xjhz6ghx03vngpl97ca527pj0r39shi"))))
+                "0kzr0xa00yjfxx27aipli67qg5ffj52yrnqhpf3sdy6k5wzwaybs"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 689ab2d3c3..d0ef06209f 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -530,7 +530,10 @@ store.")
                            ,version)
 
             (string-append "--with-headers="
-                           (assoc-ref %build-inputs "kernel-headers")
+                           (assoc-ref ,(if (%current-target-system)
+                                           '%build-target-inputs
+                                           '%build-inputs)
+                                      "kernel-headers")
                            "/include")
 
             ;; This is the default for most architectures as of GNU libc 2.21,
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index d404ff839c..6a90aa9456 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1482,7 +1482,7 @@ identify enrichments with functional annotations of the genome.")
 (define-public diamond
   (package
     (name "diamond")
-    (version "0.8.1")
+    (version "0.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1491,7 +1491,7 @@ identify enrichments with functional annotations of the genome.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1dqancz32c2l7w1b2vkvh5zqa2jnf99j1c41djnx1l8pxn044zdc"))))
+                "18zx8k3axnsrg016kikl8xs1ifnjmj36dk1sv3fq1jgpg9j9584b"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
@@ -2670,10 +2670,10 @@ the phenotype as it models the data.")
     (license license:asl2.0)))
 
 (define-public pbtranscript-tofu
-  (let ((commit "8f5467fe6"))
+  (let ((commit "8f5467fe6a4472bcfb4226c8720993c8507adfe4"))
     (package
       (name "pbtranscript-tofu")
-      (version (string-append "2.2.3." commit))
+      (version (string-append "2.2.3." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -3009,7 +3009,7 @@ viewer.")
                (delete 'configure))))))))
 
 (define-public mosaik
-  (let ((commit "5c25216d"))
+  (let ((commit "5c25216d3522d6a33e53875cd76a6d65001e4e67"))
     (package
       (name "mosaik")
       (version "2.2.30")
@@ -3259,10 +3259,10 @@ subsequent visualization, annotation and storage of results.")
 
 (define-public smithlab-cpp
   (let ((revision "1")
-        (commit "728a097"))
+        (commit "728a097bec88c6f4b8528b685932049e660eff2e"))
     (package
       (name "smithlab-cpp")
-      (version (string-append "0." revision "." commit))
+      (version (string-append "0." revision "." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -3885,6 +3885,47 @@ Needleman-Wunsch).")
     ;; Dual licensed; also includes public domain source.
     (license (list license:gpl3 license:bsd-2))))
 
+(define-public pardre
+  (package
+    (name "pardre")
+    (version "1.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/pardre/ParDRe-rel"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0zkyjzv4s8q2h5npalhirbk17r5b1h0n2a42mh7njzlf047h9bhy"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests included
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               (install-file "ParDRe" bin)
+               #t))))))
+    (inputs
+     `(("openmpi" ,openmpi)
+       ("zlib" ,zlib)))
+    (synopsis "Parallel tool to remove duplicate DNA reads")
+    (description
+     "ParDRe is a parallel tool to remove duplicate genetic sequence reads.
+Duplicate reads can be seen as identical or nearly identical sequences with
+some mismatches.  This tool lets users avoid the analysis of unnecessary
+reads, reducing the time of subsequent procedures with the
+dataset (e.g. assemblies, mappings, etc.).  The tool is implemented with MPI
+in order to exploit the parallel capabilities of multicore clusters.  It is
+faster than multithreaded counterparts (end of 2015) for the same number of
+cores and, thanks to the message-passing technology, it can be executed on
+clusters.")
+    (home-page "https://sourceforge.net/projects/pardre/")
+    (license license:gpl3+)))
+
 (define-public bio-locus
   (package
     (name "bio-locus")
@@ -4735,6 +4776,34 @@ genomic feature data as long as it has minimal information on the locations of
 genomic intervals.  In addition, it can use BAM or BigWig files as input.")
     (license license:artistic2.0)))
 
+(define-public r-genomationdata
+  (package
+    (name "r-genomationdata")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              ;; We cannot use bioconductor-uri here because this tarball is
+              ;; located under "data/annotation/" instead of "bioc/".
+              (uri (string-append "https://bioconductor.org/packages/"
+                                  "release/data/experiment/src/contrib/"
+                                  "genomationData_" version ".tar.gz"))
+              (sha256
+               (base32
+                "1xzq2j722d8lcn5bc3aq3yb34xwis2d0bpsf6jsq4xw1bg0bsy79"))))
+    (build-system r-build-system)
+    ;; As this package provides little more than large data files, it doesn't
+    ;; make sense to build substitutes.
+    (arguments `(#:substitutable? #f))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "http://bioinformatics.mdc-berlin.de/genomation/")
+    (synopsis "Experimental data for use with the genomation package")
+    (description
+     "This package contains experimental genetic data for use with the
+genomation package.  Included are Chip Seq, Methylation and Cage data,
+downloaded from Encode.")
+    (license license:gpl3+)))
+
 (define-public r-org-hs-eg-db
   (package
     (name "r-org-hs-eg-db")
@@ -5100,7 +5169,7 @@ libraries for systems that do not have these available via other means.")
        ("samtools" ,samtools-0.1)
        ("gsl" ,gsl)
        ("smithlab-cpp"
-        ,(let ((commit "3723e2d"))
+        ,(let ((commit "3723e2db438c51501d0423429ff396c3035ba46a"))
            (origin
              (method git-fetch)
              (uri (git-reference
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index d8252c8b37..409731d1d6 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -207,7 +207,7 @@ interface, for the Transmission BitTorrent daemon.")
 (define-public aria2
   (package
     (name "aria2")
-    (version "1.22.0")
+    (version "1.23.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
@@ -215,7 +215,7 @@ interface, for the Transmission BitTorrent daemon.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12agwdvvkr34wqhyyfp418dj0k7nbr297qmcd3wj5kkn7brv6gxc"))))
+                "14qz7686zxnhbaqj6l1hqpkykhpygm74h2mzwhh13gqmcj38alaq"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-libaria2")
@@ -230,10 +230,10 @@ interface, for the Transmission BitTorrent daemon.")
                (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageReceiverTest\\);" text)
                 (string-append "// " text))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("cppunit" ,cppunit) ; for the tests
+       ("pkg-config" ,pkg-config)))
     (inputs
      `(("c-ares" ,c-ares)
-       ("cppunit" ,cppunit) ; for the tests
        ("gnutls" ,gnutls)
        ("gmp" ,gmp)
        ("libssh2" ,libssh2)
@@ -241,7 +241,7 @@ interface, for the Transmission BitTorrent daemon.")
        ("nettle" ,nettle)
        ("sqlite" ,sqlite)
        ("zlib" ,zlib)))
-    (home-page "http://aria2.sourceforge.net/")
+    (home-page "https://aria2.github.io/")
     (synopsis "Utility for parallel downloading files")
     (description
       "Aria2 is a lightweight, multi-protocol & multi-source command-line
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index be18ebd29f..e0ff873b3e 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -39,10 +39,10 @@
   #:use-module (guix build-system gnu))
 
 (define-public hydra
-  (let ((commit "4c0e3e4"))
+  (let ((commit "4c0e3e47034545ad3e9e86dd069138bcebb8ccee"))
     (package
       (name "hydra")
-      (version (string-append "20150407." commit))
+      (version (string-append "20150407." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 7e8a361967..c3efd15e44 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -54,7 +54,7 @@
     (build-system gnu-build-system)
 
     ;; Needed to have cflow-mode.el installed.
-    (native-inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
 
     (home-page "http://www.gnu.org/software/cflow/")
     (synopsis "Create a graph of control flow within a program")
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index e5cacf5ca7..0fc61d3927 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -34,6 +34,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
@@ -110,22 +111,38 @@ utility.  Instead of being written in Java, FastJar is written in C.")
 (define-public libtar
   (package
    (name "libtar")
-   (version "1.2.11")
+   (version "1.2.20")
    (source (origin
             (method url-fetch)
-            (uri (string-append
-                  "ftp://ftp.feep.net/pub/software/libtar/libtar-"
-                  version ".tar.gz"))
+            (uri (list
+                   (string-append
+                     "ftp://ftp.feep.net/pub/software/libtar/libtar-"
+                     version ".tar.gz")
+                   (string-append
+                     "mirror://debian/pool/main/libt/libtar/libtar_"
+                     version ".orig.tar.gz")))
             (sha256
              (base32
-              "1f3vx1wa69a6c5y0z0aakd81gygirdcm0vimazg433q8nyvfybja"))))
+              "02cihzl77ia0dcz7z2cga2412vyhhs5pa2355q4wpwbyga2lrwjh"))
+            (patches (search-patches "libtar-CVE-2013-4420.patch"))))
    (build-system gnu-build-system)
-   (arguments `(#:tests? #f)) ;no "check" target
+   (arguments
+    `(#:tests? #f ;no "check" target
+      #:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'autoconf
+          (lambda _ (zero? (system* "sh" "autoreconf" "-vfi")))))))
+   (native-inputs
+    `(("autoconf" ,autoconf)
+      ("automake" ,automake)
+      ("libtool" ,libtool)))
+   (inputs
+    `(("zlib" ,zlib)))
    (synopsis "C library for manipulating POSIX tar files")
    (description
     "libtar is a C library for manipulating POSIX tar files.  It handles
 adding and extracting files to/from a tar archive.")
-   (home-page "http://www.feep.net/libtar/")
+   (home-page "https://repo.or.cz/libtar.git")
    (license license:bsd-3)))
 
 (define-public gzip
@@ -426,16 +443,17 @@ with the sfArk algorithm.")
     (license license:gpl3+)))
 
 (define-public sfarkxtc
+ (let ((commit "b5e0a2ba3921f019d74d4b92bd31c36dd19d2cf1"))
   (package
     (name "sfarkxtc")
-    (version "b5e0a2ba39")
+    (version (string-take commit 10))
     (source (origin
               ;; There are no release tarballs, so we just fetch the latest
               ;; commit at this time.
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/raboof/sfarkxtc.git")
-                    (commit version)))
+                    (commit commit)))
               (sha256
                (base32
                 "0f5x6i46qfl6ry21s7g2p4sd4b2r1g4fb03yqi2vv4kq3saryhvj"))))
@@ -456,7 +474,7 @@ with the sfArk algorithm.")
     (synopsis "Basic sfArk decompressor")
     (description "SfArk extractor converts SoundFonts in the compressed legacy
 sfArk file format to the uncompressed sf2 format.")
-    (license license:gpl3+)))
+    (license license:gpl3+))))
 
 (define-public libmspack
   (package
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 58cd38beca..9d0f86af86 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -376,12 +376,6 @@ XBINUTILS and the cross tool chain."
                                (package-supported-systems xgcc)
                                '("mips64el-linux" "i686-linux"))))))
 
-(define-public xgcc-avr
-  ;; AVR cross-compiler, used to build AVR-Libc.
-  (let ((triplet "avr"))
-    (cross-gcc triplet
-               (cross-binutils triplet))))
-
 (define-public xgcc-xtensa
   ;; Bare-bones Xtensa cross-compiler, used to build the Atheros firmware.
   (cross-gcc "xtensa-elf"))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 08eb146cf7..b2ea848937 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -30,7 +30,7 @@
 (define-public libsodium
   (package
     (name "libsodium")
-    (version "1.0.0")
+    (version "1.0.10")
     (source (origin
             (method url-fetch)
             (uri (list (string-append
@@ -41,7 +41,7 @@
                         "releases/old/libsodium-" version ".tar.gz")))
             (sha256
              (base32
-              "19f9vf0shfp4rc4l791r6xjg06z4i8psj1zkjkm3z5b640yzxlff"))))
+              "1gn45g956lyz8l6iq187yc6l627vyivyp8qc5dkr6dnhdnlqddvi"))))
     (build-system gnu-build-system)
     (synopsis "Portable NaCl-based crypto library")
     (description
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 8f3e1a1b70..99ff1e228e 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -34,7 +34,7 @@
    (source (origin
             (method url-fetch)
             (uri (list (string-append
-                        "http://cyrusimap.org/releases/cyrus-sasl-"
+                        "https://cyrusimap.org/releases/cyrus-sasl-"
                         version ".tar.gz")
                        (string-append
                         "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-"
@@ -63,4 +63,4 @@ library makes supporting various SASL mechanisms easy for both client and
 server writers.")
    (license (license:non-copyleft "file://COPYING"
                                   "See COPYING in the distribution."))
-   (home-page "http://cyrusimap.web.cmu.edu/index.php")))
+   (home-page "http://cyrusimap.web.cmu.edu")))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 501377b7b7..80aa54f7a2 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -55,7 +55,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages jemalloc)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
+                #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
                           bsd-2 bsd-3 public-domain))
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -386,7 +386,7 @@ pictures, sounds, or video.")
                                       (assoc-ref %build-inputs "bash:include")
                                       "/include/bash"))))
 
-    (native-inputs `(("emacs" ,emacs-no-x)
+    (native-inputs `(("emacs" ,emacs-minimal)
                      ("bc" ,bc)
                      ("bash:include" ,bash "include")
                      ("libuuid" ,util-linux)))
@@ -919,3 +919,41 @@ sets, bitmaps and hyperloglogs.")
 and B+ Tree data storage models.  It is a fast key-value lightweight
 database and supports many programming languages.  It is a NoSQL database.")
     (license gpl3+)))
+
+(define-public wiredtiger
+  (package
+    (name "wiredtiger")
+    (version "2.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://source.wiredtiger.com/releases/wiredtiger-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-lz4" "--enable-zlib")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-test/fops
+           (lambda _
+             ;; XXX: timed out after 3600 seconds of silence
+             (substitute* "Makefile"
+               (("test/fops") ""))
+             #t)))))
+    (inputs
+     `(("lz4" ,lz4)
+       ("zlib" ,zlib)))
+    (home-page "http://source.wiredtiger.com/")
+    (synopsis "NoSQL data engine")
+    (description
+     "WiredTiger is an extensible platform for data management.  It supports
+row-oriented storage (where all columns of a row are stored together),
+column-oriented storage (where columns are stored in groups, allowing for
+more efficient access and storage of column subsets) and log-structured merge
+trees (LSM), for sustained throughput under random insert workloads.")
+    (license gpl3) ; or GPL-2
+    ;; configure.ac: WiredTiger requires a 64-bit build.
+    (supported-systems '("x86_64-linux" "mips64el-linux"))))
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 2bbc069472..126a21bf66 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -52,16 +52,16 @@ clients.")
 (define-public vdirsyncer
   (package
     (name "vdirsyncer")
-    (version "0.10.0")
+    (version "0.11.0")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://pypi.python.org/packages/0b/fb/"
-                                 "c42223e1e9169e4770194e62143d431755724b080d8cb"
-                                 "77f14705b634815/"
-                                 "vdirsyncer-" version ".tar.gz"))
+             (uri (string-append
+                    "https://pypi.python.org/packages/"
+                    "39/e5/1e7097b5f0cd6de79ec9014f162a6000b77ca2a369ea8a1588a2eebff570/"
+                    name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1gf86sbd6w0w4zayh9r3irlp5jwrzbjikjc0vs5zkdpa5c199f78"))))
+               "1bf0vk29qdswar0q4267aamfriq3134302i2p3qcqxpmmcwx3qfv"))))
     (build-system python-build-system)
     (arguments
       `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index ac020b27c8..5aea716150 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -76,3 +77,41 @@
      "V.E.R.A. (Virtual Entity of Relevant Acronyms) is a list of computing
 acronyms distributed as an info document.")
     (license fdl1.3+)))
+
+(define-public gcide
+  (package
+    (name "gcide")
+    (version "0.51")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://gnu/gcide/gcide-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1wm0s51ygc6480dq8gwahzr35ls8jgpf34yiwl5yqcaa0i19fdv7"))))
+    (build-system trivial-build-system)
+    (arguments
+     '(#:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((src     (assoc-ref %build-inputs "source"))
+                          (tar     (assoc-ref %build-inputs "tar"))
+                          (xz      (assoc-ref %build-inputs "xz"))
+                          (out     (assoc-ref %outputs "out"))
+                          (datadir (string-append out "/share/gcide")))
+                     (set-path-environment-variable "PATH" '("bin")
+                                                    (list tar xz))
+                     (mkdir-p datadir)
+                     (zero? (system* "tar" "-C" datadir
+                                     "--strip-components=1"
+                                     "-xvf" src))))
+       #:modules ((guix build utils))))
+    (native-inputs
+     `(("tar" ,tar)
+       ("xz" ,xz)))
+    (synopsis "GNU Collaborative International Dictionary of English")
+    (description
+     "GCIDE is a free dictionary based on a combination of sources.  It can
+be used via the GNU Dico program or accessed online at
+http://gcide.gnu.org.ua/")
+    (home-page "http://gcide.gnu.org.ua/")
+    (license gpl3+)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index c7aa0dc556..c60eacb15e 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -123,7 +123,7 @@ to recover data more efficiently by only reading the necessary blocks.")
 (define-public dosfstools
   (package
     (name "dosfstools")
-    (version "3.0.28")
+    (version "4.0")
     (source
      (origin
        (method url-fetch)
@@ -132,14 +132,12 @@ to recover data more efficiently by only reading the necessary blocks.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1qkya6lald91c8nsf29jwnk0k5v42wlj24gacfdp3wpc8hq935gf"))))
+         "1bvxbv1w6vhbx0nx7ygp700wq5k2hjv0hm7w0kz1x7amaf4p6dwh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
-       #:tests? #f  ;no tests
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
+       #:tests? #f))  ;no tests
     (home-page "https://github.com/dosfstools/dosfstools")
     (synopsis "Utilities for making and checking MS-DOS FAT filesystems")
     (description
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index e92d8d26b8..819343ad42 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -33,7 +33,7 @@
 (define-public dnsmasq
   (package
     (name "dnsmasq")
-    (version "2.72")
+    (version "2.76")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -41,7 +41,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "1c80hq09hfm8cp5pirfb8wdlc7dqkp7zzmbmdaradcvlblzx42vx"))))
+                "15lzih6671gh9knzpl8mxchiml7z5lfqzr7jm2r0rjhrxs6nk4jb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 2bd86fe5d2..b8a8ba69dc 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -23,7 +23,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages inkscape)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages python)
   #:use-module (gnu packages base)
   #:use-module (gnu packages xml)
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index f972d8831f..2b450cabd6 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,7 +61,7 @@
 (define-public calibre
   (package
     (name "calibre")
-    (version "2.51.0")
+    (version "2.58.0")
     (source
       (origin
         (method url-fetch)
@@ -68,8 +69,8 @@
                             version "/calibre-"
                             version ".tar.xz"))
         (sha256
-          (base32
-           "1rhpcxic4g2zyr5s3xn8dayyb45l9r8zyniaig8j7pl5kmsfjijn"))
+         (base32
+          "0npqvfjqj1vwa7nmnsyd4d30z40brydw275ldf1jankrp6dr9dyd"))
         ;; Remove non-free or doubtful code, see
         ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
         (modules '((guix build utils)))
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 82604c4e30..674b8ac7a1 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -30,7 +30,7 @@
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.161")
+    (version "0.166")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -38,7 +38,7 @@
                     version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "0w50szymyqvx8g0vkwrvnv17grqxva6x1z9dm9m3i99zg2hr232p"))
+                "0c5s9klq1zyb0zkmrw636k97kz30p5ih8y8dpq8b4f54r0a6j19w"))
               (patches (search-patches "elfutils-tests-ptrace.patch"))))
     (build-system gnu-build-system)
 
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 6d80d37d27..386f91aebc 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -9,6 +9,9 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,7 +83,19 @@
               (base32
                "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
              (patches (search-patches "emacs-exec-path.patch"
-                                      "emacs-source-date-epoch.patch"))))
+                                      "emacs-fix-scheme-indent-function.patch"
+                                      "emacs-source-date-epoch.patch"))
+             (modules '((guix build utils)))
+             (snippet
+              ;; Delete the bundled byte-compiled elisp files and
+              ;; generated autoloads.
+              '(with-directory-excursion "lisp"
+                 (for-each delete-file
+                           (append (find-files "." "\\.elc$")
+                                   (find-files "." "loaddefs\\.el$")
+                                   ;; This is the only "autoloads" file that
+                                   ;; does not have "*loaddefs.el" name.
+                                   '("eshell/esh-groups.el")))))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -159,10 +174,25 @@ large Lisp programs.  It has full Unicode support for nearly all human
 languages.")
     (license license:gpl3+)))
 
-(define-public emacs-no-x
+(define-public emacs-minimal
   ;; This is the version that you should use as an input to packages that just
   ;; need to byte-compile .el files.
   (package (inherit emacs)
+    (name "emacs-minimal")
+    (synopsis "The extensible text editor (used only for byte-compilation)")
+    (build-system gnu-build-system)
+    (arguments
+     (substitute-keyword-arguments (package-arguments emacs)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (delete 'install-site-start)))))
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))))
+
+(define-public emacs-no-x
+  (package (inherit emacs)
     (name "emacs-no-x")
     (synopsis "The extensible, customizable, self-documenting text
 editor (console only)")
@@ -241,8 +271,8 @@ editor (without an X toolkit)" )
                                            "/share/emacs/site-lisp/"
                                            "geiser-autoloads.el")))
                  %standard-phases)))
-    (inputs `(("guile" ,guile-2.0)
-              ("emacs" ,emacs-no-x)))
+    (inputs `(("guile" ,guile-2.0)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://nongnu.org/geiser/")
     (synopsis "Collection of Emacs modes for Guile and Racket hacking")
     (description
@@ -296,7 +326,7 @@ metadata.")
                (base32
                 "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
     (build-system trivial-build-system)
-    (inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (arguments
      `(#:modules ((guix build utils)
                   (guix build emacs-utils))
@@ -367,7 +397,7 @@ when typing parentheses directly or commenting out code line by line.")
                                       (lisp (string-append
                                              out "/share/emacs/site-lisp/")))
                                  (emacs-generate-autoloads ,name lisp)))))))
-    (native-inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "https://github.com/magit/git-modes")
     (synopsis "Emacs major modes for Git configuration files")
     (description
@@ -403,7 +433,7 @@ on stdout instead of using a socket as the Emacsclient does.")
 (define-public magit
   (package
     (name "magit")
-    (version "2.6.2")
+    (version "2.7.0")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -411,10 +441,10 @@ on stdout instead of using a socket as the Emacsclient does.")
                    version "/" name "-" version ".tar.gz"))
              (sha256
               (base32
-               "0im1jrqw29g5anrrjflj6b2gpyqkvpghnq8zvywxyhmjwzar4rn7"))))
+               "1kzd8k2n0lcr04jvn5b6d29zf765mxgshfhzflkzndwmvyxmlqpl"))))
     (build-system gnu-build-system)
     (native-inputs `(("texinfo" ,texinfo)
-                     ("emacs" ,emacs-no-x)))
+                     ("emacs" ,emacs-minimal)))
     (inputs `(("git" ,git)))
     (propagated-inputs
      `(("dash" ,emacs-dash)
@@ -476,7 +506,7 @@ operations.")
                (base32
                 "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
     (build-system trivial-build-system)
-    (native-inputs `(("emacs" ,emacs-no-x)
+    (native-inputs `(("emacs" ,emacs-minimal)
                      ("tar" ,tar)
                      ("gzip" ,gzip)))
     (propagated-inputs `(("dash" ,emacs-dash)
@@ -534,9 +564,9 @@ support for Git-SVN.")
                     version ".tar.gz"))
               (sha256
                (base32 "1kxc2yj8vb122dv91r68h7c5ladcryx963fr16plfhg71fv7f9av"))))
-    (inputs `(("emacs" ,emacs-no-x)))
     (native-inputs
-     `(("texinfo" ,texinfo)))
+     `(("emacs" ,emacs-minimal)
+       ("texinfo" ,texinfo)))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list (string-append "EMACS="
@@ -616,7 +646,7 @@ programs.")
                      (setenv "PATH" (string-append emacs "/bin"))
                      (emacs-byte-compile-directory lispdir)
                      #t))))
-    (native-inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://elpa.gnu.org/packages/let-alist.html")
     (synopsis "Easily let-bind values of an assoc-list by their names")
     (description
@@ -675,10 +705,10 @@ provides an optional IDE-like error list.")
               (base32
                "0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y"))))
     (build-system gnu-build-system)
-    (native-inputs `(("autoconf" ,autoconf)))
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("emacs" ,emacs-minimal)))
     (inputs `(("w3m" ,w3m)
-              ("imagemagick" ,imagemagick)
-              ("emacs" ,emacs-no-x)))
+              ("imagemagick" ,imagemagick)))
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -747,8 +777,8 @@ provides an optional IDE-like error list.")
              (sha256
               (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
     (build-system gnu-build-system)
-    (inputs `(("wget" ,wget)
-              ("emacs" ,emacs-no-x)))
+    (inputs `(("wget" ,wget)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -790,14 +820,14 @@ provides an optional IDE-like error list.")
 (define-public emms
   (package
     (name "emms")
-    (version "4.0")
+    (version "4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/emms/emms-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
+                "0ay6631p3dr6xnhkm7skwn0gp317r1mxbip28m126w4zqf05cbh3"))
               (modules '((guix build utils)))
               (snippet
                '(substitute* "Makefile"
@@ -823,71 +853,68 @@ provides an optional IDE-like error list.")
        #:imported-modules (,@%gnu-build-system-modules
                            (guix build emacs-utils))
 
-       #:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let ((out     (assoc-ref outputs "out"))
-                         (vorbis  (assoc-ref inputs "vorbis-tools"))
-                         (alsa    (assoc-ref inputs "alsa-utils"))
-                         (mpg321  (assoc-ref inputs "mpg321"))
-                         (mp3info (assoc-ref inputs "mp3info")))
-                     ;; Specify the installation directory.
-                     (substitute* "Makefile"
-                       (("PREFIX=.*$")
-                        (string-append "PREFIX := " out "\n")))
-
-                     (setenv "SHELL" (which "sh"))
-                     (setenv "CC" "gcc")
-
-                     ;; Specify the absolute file names of the various
-                     ;; programs so that everything works out-of-the-box.
-                     (with-directory-excursion "lisp"
-                       (emacs-substitute-variables
-                           "emms-player-mpg321-remote.el"
-                         ("emms-player-mpg321-remote-command"
-                          (string-append mpg321 "/bin/mpg321")))
-                       (substitute* "emms-player-simple.el"
-                         (("\"ogg123\"")
-                          (string-append "\"" vorbis "/bin/ogg123\"")))
-                       (emacs-substitute-variables "emms-info-ogginfo.el"
-                         ("emms-info-ogginfo-program-name"
-                          (string-append vorbis "/bin/ogginfo")))
-                       (emacs-substitute-variables "emms-info-libtag.el"
-                         ("emms-info-libtag-program-name"
-                          (string-append out "/bin/emms-print-metadata")))
-                       (emacs-substitute-variables "emms-info-mp3info.el"
-                         ("emms-info-mp3info-program-name"
-                          (string-append mp3info "/bin/mp3info")))
-                       (substitute* "emms-volume-amixer.el"
-                         (("\"amixer\"")
-                          (string-append "\"" alsa "/bin/amixer\"")))
-                       (substitute* "emms-tag-editor.el"
-                         (("\"mp3info\"")
-                          (string-append "\"" mp3info "/bin/mp3info\""))))))
-                 (alist-cons-before
-                  'install 'pre-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; The 'install' rule expects the target directory to
-                    ;; exist.
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man1 (string-append out "/share/man/man1")))
-                      (mkdir-p man1)
-                      #t))
-                  (alist-cons-after
-                   'install 'post-install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let* ((out    (assoc-ref outputs "out"))
-                            (target (string-append
-                                     out "/bin/emms-print-metadata")))
-                       (symlink "emms-auto.el"
-                                (string-append out "/share/emacs/site-lisp/"
-                                               "emms-autoloads.el"))
-                       (mkdir-p (dirname target))
-                       (copy-file "src/emms-print-metadata" target)
-                       (chmod target #o555)))
-                   %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out     (assoc-ref outputs "out"))
+                   (vorbis  (assoc-ref inputs "vorbis-tools"))
+                   (alsa    (assoc-ref inputs "alsa-utils"))
+                   (mpg321  (assoc-ref inputs "mpg321"))
+                   (mp3info (assoc-ref inputs "mp3info")))
+               ;; Specify the installation directory.
+               (substitute* "Makefile"
+                 (("PREFIX=.*$")
+                  (string-append "PREFIX := " out "\n")))
+
+               (setenv "SHELL" (which "sh"))
+               (setenv "CC" "gcc")
+
+               ;; Specify the absolute file names of the various
+               ;; programs so that everything works out-of-the-box.
+               (with-directory-excursion "lisp"
+                 (emacs-substitute-variables
+                     "emms-player-mpg321-remote.el"
+                   ("emms-player-mpg321-remote-command"
+                    (string-append mpg321 "/bin/mpg321")))
+                 (substitute* "emms-player-simple.el"
+                   (("\"ogg123\"")
+                    (string-append "\"" vorbis "/bin/ogg123\"")))
+                 (emacs-substitute-variables "emms-info-ogginfo.el"
+                   ("emms-info-ogginfo-program-name"
+                    (string-append vorbis "/bin/ogginfo")))
+                 (emacs-substitute-variables "emms-info-libtag.el"
+                   ("emms-info-libtag-program-name"
+                    (string-append out "/bin/emms-print-metadata")))
+                 (emacs-substitute-variables "emms-info-mp3info.el"
+                   ("emms-info-mp3info-program-name"
+                    (string-append mp3info "/bin/mp3info")))
+                 (substitute* "emms-volume-amixer.el"
+                   (("\"amixer\"")
+                    (string-append "\"" alsa "/bin/amixer\"")))
+                 (substitute* "emms-tag-editor.el"
+                   (("\"mp3info\"")
+                    (string-append "\"" mp3info "/bin/mp3info\"")))))))
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The 'install' rule expects the target directory to exist.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man1 (string-append out "/share/man/man1")))
+               (mkdir-p man1)
+               #t)))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (target (string-append
+                             out "/bin/emms-print-metadata")))
+               (symlink "emms-auto.el"
+                        (string-append out "/share/emacs/site-lisp/"
+                                       "emms-autoloads.el"))
+               (mkdir-p (dirname target))
+               (copy-file "src/emms-print-metadata" target)
+               (chmod target #o555)))))
        #:tests? #f))
-    (native-inputs `(("emacs" ,emacs-no-x)       ;for (guix build emacs-utils)
+    (native-inputs `(("emacs" ,emacs-minimal)    ;for (guix build emacs-utils)
                      ("texinfo" ,texinfo)))
     (inputs `(("alsa-utils" ,alsa-utils)
               ("vorbis-tools" ,vorbis-tools)
@@ -937,7 +964,7 @@ light user interface.")
                      (with-directory-excursion site
                        (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
                  %standard-phases)))
-    (native-inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://savannah.nongnu.org/projects/bbdb/")
     (synopsis "Contact management utility for Emacs")
     (description
@@ -950,14 +977,14 @@ mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
 (define-public emacs-async
   (package
     (name "emacs-async")
-    (version "1.6")
+    (version "1.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://elpa.gnu.org/packages/async-"
                                   version ".tar"))
               (sha256
                (base32
-                "17psvz75n42x33my967wkgi7r0blx46n3jdv510j0z5jswv66039"))))
+                "1ip5nc8xyln5szvqwp6wqva9xr84pn8ssn3nnphrszr19y4js2bm"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/async.html")
     (synopsis "Asynchronous processing in Emacs")
@@ -983,6 +1010,9 @@ as a library for other Emacs packages.")
         (base32
          "1pmki8hdjjikxlvip3pzi350bln3gcimr27yjf0xfwjvnp5hh9nc"))))
     (build-system emacs-build-system)
+    ;; We use 'emacs' because AUCTeX requires dbus at compile time
+    ;; ('emacs-minimal' does not provide dbus).
+    (arguments `(#:emacs ,emacs))
     (native-inputs
      `(("perl" ,perl)))
     (home-page "http://www.gnu.org/software/auctex/")
@@ -1017,7 +1047,7 @@ or XEmacs.")
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-       ("emacs" ,emacs-no-x)
+       ("emacs" ,emacs-minimal)
        ("texinfo" ,texinfo)))
     (home-page "https://github.com/purcell/mmm-mode")
     (synopsis "Allow multiple major modes in an Emacs buffer")
@@ -1081,7 +1111,7 @@ single buffer.")
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("pkg-config" ,pkg-config)
-                     ("emacs" ,emacs-no-x)))
+                     ("emacs" ,emacs-minimal)))
     (propagated-inputs
      `(("let-alist" ,let-alist)))
     (inputs `(("poppler" ,poppler)
@@ -1200,7 +1230,7 @@ files and directories.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (commit "8807064693")
+                    (commit "880706469338ab59b5bb7dbe8460016f89755364")
                     (url "https://github.com/gregsexton/ob-ipython.git")))
               (sha256
                (base32
@@ -1385,20 +1415,6 @@ to a key in your preferred mode.")
 identifiers in the MIT-Scheme documentation.")
     (license license:gpl2+)))
 
-;;; XXX: move this procedure to an utility module
-(define* (uncompressed-file-fetch url hash-algo hash
-                                  #:optional name
-                                  #:key (system (%current-system))
-                                  (guile (default-guile)))
-  (mlet %store-monad ((drv (url-fetch url hash-algo hash name
-                                      #:system system
-                                      #:guile guile)))
-    (gexp->derivation (or name (basename url))
-                      #~(begin
-                          (mkdir #$output)
-                          (chdir #$output)
-                          (copy-file #$drv (basename #$url))))))
-
 (define-public emacs-constants
   (package
     (name "emacs-constants")
@@ -1406,7 +1422,7 @@ identifiers in the MIT-Scheme documentation.")
     (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
     (source
      (origin
-       (file-name (string-append name "-" version ".el"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (method url-fetch)
        (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
                            "/archive/v" version ".tar.gz"))
@@ -1493,8 +1509,6 @@ debugging, documentation lookup, and so on.")
                (base32
                 "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
     (build-system emacs-build-system)
-    (native-inputs
-     `(("emacs" ,emacs-no-x)))
     (home-page "https://github.com/auto-complete/popup-el")
     (synopsis "Visual Popup User Interface for Emacs")
     (description
@@ -1536,14 +1550,12 @@ insertion mode.  When enabled all keys are implicitly prefixed with
     (version "0.13")
     (home-page "http://www.loveshack.ukfsn.org/emacs")
     (source (origin
-              (method uncompressed-file-fetch)
+              (method url-fetch)
               (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
               (sha256
                (base32
                 "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
     (build-system emacs-build-system)
-    (native-inputs
-     `(("emacs" ,emacs-no-x)))
     (synopsis "Prettify Request for Comments (RFC) documents")
     (description "The Internet Engineering Task Force (IETF) and the Internet
 Society (ISOC) publish various Internet-related protocols and specifications
@@ -1562,14 +1574,12 @@ local directories.")
     (version "12")
     (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
     (source (origin
-              (method uncompressed-file-fetch)
+              (method url-fetch)
               (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
               (sha256
                (base32
                 "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
     (build-system emacs-build-system)
-    (native-inputs
-     `(("emacs" ,emacs-no-x)))
     (synopsis "Make ffap recognize an RFC with a space before its number")
     (description "The Internet Engineering Task Force (IETF) and the
 Internet Society (ISOC) publish various Internet-related protocols and
@@ -1631,3 +1641,443 @@ wrap-region, electric-pair-mode, paredit and others.  With the basic
 features found in other packages it also brings many improvements as
 well as completely new features.")
     (license license:gpl3+)))
+
+(define-public emacs-clojure-mode
+  (package
+    (name "emacs-clojure-mode")
+    (version "5.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/clojure-emacs/clojure-mode/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0gi8ra3ap5m3mz4qh1yxp2cldn7z9xcxvypznr6rrlc6a9l8s5a6"))))
+    (build-system emacs-build-system)
+    (home-page "http://github.com/clojure-emacs/clojure-mode")
+    (synopsis "Major mode for Clojure code")
+    (description
+     "This Emacs package provides font-lock, indentation, navigation and basic
+refactoring for the @uref{http://clojure.org, Clojure programming language}.
+It is recommended to use @code{clojure-mode} with paredit or smartparens.")
+    (license license:gpl3+)))
+
+(define-public emacs-epl
+  (package
+    (name "emacs-epl")
+    (version "0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/cask/epl/archive/"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
+    (build-system emacs-build-system)
+    (home-page "http://github.com/cask/epl")
+    (synopsis "Emacs Package Library")
+    (description
+     "A package management library for Emacs, based on @code{package.el}.
+
+The purpose of this library is to wrap all the quirks and hassle of
+@code{package.el} into a sane API.")
+    (license license:gpl3+)))
+
+(define-public emacs-queue
+  (package
+    (name "emacs-queue")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://elpa.gnu.org/packages/queue-"
+                                  version ".el"))
+              (sha256
+               (base32
+                "0jw24fxqnf9qcaf2nh09cnds1kqfk7hal35dw83x1ari95say391"))))
+    (build-system emacs-build-system)
+    (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
+    (synopsis "Queue data structure for Emacs")
+    (description
+     "This Emacs library provides queue data structure.  These queues can be
+used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
+stack, i.e. elements can be added to the front or back of the queue, and can
+be removed from the front.  This type of data structure is sometimes called an
+\"output-restricted deque\".")
+    (license license:gpl3+)))
+
+(define-public emacs-pkg-info
+  (package
+    (name "emacs-pkg-info")
+    (version "0.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/lunaryorn/pkg-info.el/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-epl" ,emacs-epl)))
+    (home-page "https://github.com/lunaryorn/pkg-info.el")
+    (synopsis "Information about Emacs packages")
+    (description
+     "This library extracts information from the installed Emacs packages.")
+    (license license:gpl3+)))
+
+(define-public emacs-spinner
+  (package
+    (name "emacs-spinner")
+    (version "1.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://elpa.gnu.org/packages/spinner-"
+                                  version ".el"))
+              (sha256
+               (base32
+                "1fmwzdih0kbyvs8bn38mpm4sbs2mikqy2vdykfy9g20wpa8vb681"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Malabarba/spinner.el")
+    (synopsis "Emacs mode-line spinner for operations in progress")
+    (description
+     "This Emacs package adds spinners and progress-bars to the mode-line for
+ongoing operations.")
+    (license license:gpl3+)))
+
+(define-public emacs-seq
+  (package
+    (name "emacs-seq")
+    (version "2.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://elpa.gnu.org/packages/seq-"
+                                  version ".tar"))
+              (sha256
+               (base32
+                "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/seq.html")
+    (synopsis "Sequence manipulation functions for Emacs")
+    (description
+     "This Emacs library provides sequence-manipulation functions that
+complement basic functions provided by @code{subr.el}.  All provided functions
+work on lists, strings and vectors.")
+    (license license:gpl3+)))
+
+(define-public emacs-better-defaults
+  (package
+    (name "emacs-better-defaults")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/technomancy/better-defaults"
+                           "/archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/technomancy/better-defaults")
+    (synopsis "Better defaults for Emacs")
+    (description
+     "Better defaults attempts to address the most obvious deficiencies of the
+Emacs default configuration in uncontroversial ways that nearly everyone can
+agree upon.")
+    (license license:gpl3+)))
+
+(define-public emacs-smex
+  (package
+    (name "emacs-smex")
+    (version "3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com"
+                                  "/nonsequitur/smex/" version "/smex.el"))
+              (file-name (string-append "smex-" version ".el"))
+              (sha256
+               (base32
+                "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
+    (build-system emacs-build-system)
+    (home-page "http://github.com/nonsequitur/smex/")
+    (synopsis "M-x interface with Ido-style fuzzy matching")
+    (description
+     "Smex is a M-x enhancement for Emacs.  Built on top of Ido, it provides a
+convenient interface to your recently and most frequently used commands.  And
+to all the other commands, too.")
+    (license license:gpl3+)))
+
+(define-public emacs-js2-mode
+  (package
+    (name "emacs-js2-mode")
+    (version "20150909")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mooz/js2-mode/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mooz/js2-mode/")
+    (synopsis "Improved JavaScript editing mode for Emacs")
+    (description
+     "Js2-mode provides a JavaScript major mode for Emacs that is more
+advanced than the built-in javascript-mode.  Features include accurate syntax
+highlighting using a recursive-descent parser, on-the-fly reporting of syntax
+errors and strict-mode warnings, smart line-wrapping within comments and
+strings, and code folding.")
+    (license license:gpl3+)))
+
+(define-public emacs-markdown-mode
+  (package
+    (name "emacs-markdown-mode")
+    (version "2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/jrblevin"
+                                  "/markdown-mode/v" version
+                                  "/markdown-mode.el"))
+              (file-name (string-append "markdown-mode-" version ".el"))
+              (sha256
+               (base32
+                "1faibar32jnjia9202swblw91q6z1g5s4k9xmypwjahfh8yznl6w"))))
+    (build-system emacs-build-system)
+    (home-page "http://jblevins.org/projects/markdown-mode/")
+    (synopsis "Emacs Major mode for Markdown files")
+    (description
+     "Markdown-mode is a major mode for editing Markdown-formatted text files
+in Emacs.")
+    (license license:gpl3+)))
+
+(define-public emacs-projectile
+  (package
+    (name "emacs-projectile")
+    (version "0.13.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/bbatsov"
+                                  "/projectile/v" version "/projectile.el"))
+              (file-name (string-append "projectile-" version ".el"))
+              (sha256
+               (base32
+                "1pc6xb61hzxzc5hkqkli1ab0s7wz0rfgx4kcn9y30ksvhw18smbz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-pkg-info" ,emacs-pkg-info)))
+    (home-page "https://github.com/bbatsov/projectile")
+    (synopsis "Manage and navigate projects in Emacs easily")
+    (description
+     "This library provides easy project management and navigation.  The
+concept of a project is pretty basic - just a folder containing special file.
+Currently git, mercurial and bazaar repos are considered projects by default.
+If you want to mark a folder manually as a project just create an empty
+.projectile file in it.")
+    (license license:gpl3+)))
+
+(define-public emacs-elfeed
+  (package
+    (name "emacs-elfeed")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/skeeto/elfeed/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0i75r8x9ypbfjlnym04h16ikcrlks86p7wsgawrx7mh1lk4inp89"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/skeeto/elfeed")
+    (synopsis "Atom/RSS feed reader for Emacs")
+    (description
+     "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
+and RSS, with a user interface inspired by notmuch.")
+    (license license:gpl3+)))
+
+(define-public emacs-rainbow-delimiters
+  (package
+    (name "emacs-rainbow-delimiters")
+    (version "2.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/Fanael"
+                                  "/rainbow-delimiters/" version
+                                  "/rainbow-delimiters.el"))
+              (file-name (string-append "rainbow-delimiters-" version ".el"))
+              (sha256
+               (base32
+                "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Fanael/rainbow-delimiters")
+    (synopsis "Highlight brackets according to their depth")
+    (description
+     "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
+highlights parentheses, brackets, and braces according to their depth.  Each
+successive level is highlighted in a different color, making it easy to spot
+matching delimiters, orient yourself in the code, and tell which statements
+are at a given level.")
+    (license license:gpl3+)))
+
+(define-public emacs-ido-completing-read+
+  (package
+    (name "emacs-ido-completing-read+")
+    (version "3.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com"
+                                  "/DarwinAwardWinner/ido-ubiquitous/v"
+                                  version "/ido-completing-read+.el"))
+              (file-name (string-append "ido-completing-read+-" version ".el"))
+              (sha256
+               (base32
+                "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
+    (synopsis "Replacement for completing-read using ido")
+    (description
+     "The ido-completing-read+ function is a wrapper for ido-completing-read.
+Importantly, it detects edge cases that ordinary ido cannot handle and either
+adjusts them so ido can handle them, or else simply falls back to the standard
+Emacs completion function instead.")
+    (license license:gpl3+)))
+
+(define-public emacs-ido-ubiquitous
+  (package
+    (name "emacs-ido-ubiquitous")
+    (version "3.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com"
+                                  "/DarwinAwardWinner/ido-ubiquitous/v"
+                                  version "/ido-ubiquitous.el"))
+              (file-name (string-append "ido-ubiquitous-" version ".el"))
+              (sha256
+               (base32
+                "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
+    (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
+    (synopsis "Use ido (nearly) everywhere")
+    (description
+     "Ido-ubiquitous enables ido-style completion for almost every function
+that uses the standard completion function completing-read.")
+  (license license:gpl3+)))
+
+(define-public emacs-yaml-mode
+  (package
+    (name "emacs-yaml-mode")
+    (version "0.0.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/yoshiki"
+                                  "/yaml-mode/v" version "/yaml-mode.el"))
+              (file-name (string-append "yaml-mode-" version ".el"))
+              (sha256
+               (base32
+                "17wq433ycli0qx4gdhgrmb392qblm6y2dwcyn38j5ja1lasfb0ax"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/yoshiki/yaml-mode")
+    (synopsis "Major mode for editing YAML files")
+    (description
+     "Yaml-mode is an Emacs major mode for editing files in the YAML data
+serialization format.  It was initially developed by Yoshiki Kurihara and many
+features were added by Marshall Vandegrift.  As YAML and Python share the fact
+that indentation determines structure, this mode provides indentation and
+indentation command behavior very similar to that of python-mode.")
+    (license license:gpl3+)))
+
+(define-public emacs-web-mode
+  (package
+    (name "emacs-web-mode")
+    (version "14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/fxbois"
+                                  "/web-mode/v" version "/web-mode.el"))
+              (file-name (string-append "web-mode-" version ".el"))
+              (sha256
+               (base32
+                "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
+    (build-system emacs-build-system)
+    (synopsis "Major mode for editing web templates")
+    (description "Web-mode is an Emacs major mode for editing web templates
+aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
+client/server side engines).  Web-mode is compatible with many template
+engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
+Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
+Dust.js, React/JSX, Angularjs, ejs, etc.")
+    (home-page "http://web-mode.org/")
+    (license license:gpl3+)))
+
+(define-public emacs-helm
+  (package
+    (name "emacs-helm")
+    (version "1.9.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/" name "/helm/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0fc897rwf1fm2m7jrsikkgcyzhngfcysxfmzchpwzfj6v9sb5rl9"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-async" ,emacs-async)
+       ("emacs-popup" ,emacs-popup)))
+    (home-page "https://emacs-helm.github.io/helm/")
+    (synopsis "Incremental completion and selection narrowing
+framework for Emacs")
+    (description "Helm is incremental completion and selection narrowing
+framework for Emacs.  It will help steer you in the right direction when
+you're looking for stuff in Emacs (like buffers, files, etc).  Helm is a fork
+of @code{anything.el} originally written by Tamas Patrovic and can be
+considered to be its successor.  Helm sets out to clean up the legacy code in
+@code{anything.el} and provide a cleaner, leaner and more modular tool, that's
+not tied in the trap of backward compatibility.")
+    (license license:gpl3+)))
+
+(define-public emacs-cider
+  (package
+    (name "emacs-cider")
+    (version "0.12.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/clojure-emacs/cider/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "00qzbfjy3w6bcnki7gw0clmi0cc5yqjdrcyhgv4ymijjs79h9p5s"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-clojure-mode" ,emacs-clojure-mode)
+       ("emacs-spinner" ,emacs-spinner)
+       ("emacs-pkg-info" ,emacs-pkg-info)
+       ("emacs-queue" ,emacs-queue)
+       ("emacs-seq" ,emacs-seq)))
+    (home-page "https://cider.readthedocs.org/")
+    (synopsis "Clojure development environment for Emacs")
+    (description
+     "CIDER (Clojure Interactive Development Environment that Rocks) aims to
+provide an interactive development experience similar to the one you'd get
+when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
+Geiser) and Smalltalk.
+
+CIDER is the successor to the now deprecated combination of using SLIME +
+swank-clojure for Clojure development.
+
+There are plenty of differences between CIDER and SLIME, but the core ideas
+are pretty much the same (and SLIME served as the principle inspiration for
+CIDER).")
+    (license license:gpl3+)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c519ca59e7..02b1c4e9eb 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -52,13 +52,13 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages tcl)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (srfi srfi-1))
 
 (define-public librecad
   (package
     (name "librecad")
-    (version "2.0.9")
+    (version "2.0.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -67,7 +67,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0xyn4ps9ia94h0vg53rsww8xfd1bgp4200phl8ihyhv7w5v4d8d0"))))
+                "0jda23qspziph6fwgq1q3nmnllbgn9kwfpjylv1f0wa7c5l85gh5"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index cc7f788c9e..c487fc1020 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -54,7 +54,7 @@
 (define-public efl
   (package
     (name "efl")
-    (version "1.17.0")
+    (version "1.17.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -62,7 +62,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "1zisnz4x54mn9sm46kcr571faqnazkcglyf0lbz19l34syx40df1"))))
+                "0d58bhvwg7c5hp07wywlwnqi01k4jhmpgac7gkx9lil1x6kmahqs"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -137,7 +137,7 @@ removable devices or support for multimedia.")
 (define-public elementary
   (package
     (name "elementary")
-    (version "1.17.0")
+    (version "1.17.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -145,7 +145,7 @@ removable devices or support for multimedia.")
                               "elementary/elementary-" version ".tar.xz"))
               (sha256
                (base32
-                "0avb0d6nk4d88l81c2j6py13vdfnvg080ycw2y3qvawyjf1mhska"))))
+                "149xjq4z71l44w1kd8zks9b2g0wjc9656w46hzd27b58afj1dqc5"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -273,7 +273,7 @@ Libraries with some extra bells and whistles.")
 (define-public enlightenment
   (package
     (name "enlightenment")
-    (version "0.20.6")
+    (version "0.20.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -281,7 +281,7 @@ Libraries with some extra bells and whistles.")
                               name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                 "11ahll68nlci214ka05whp5l32hy9lznmcdfqx3hxsmq2p7bl7zj"))))
+                 "17fi3frq4a73i0x7v7244g9m0fbjfamw0cfb4zhqs2rp1z8nq1iy"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-mount-eeze")))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index b511d2c951..23faead747 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -158,7 +158,7 @@ line client and a client based on Qt.")
        ("tzdata" ,tzdata)
        ("utfcpp" ,utfcpp)))
     (native-inputs
-     `(("emacs" ,emacs-no-x)
+     `(("emacs" ,emacs-minimal)
        ("groff" ,groff)
        ("texinfo" ,texinfo)))
     (home-page "http://ledger-cli.org/")
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 9f9f1b9c6a..37a10726e3 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +32,7 @@
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages libftdi)
   #:use-module (gnu packages pciutils)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages admin))
 
 (define-public flashrom
@@ -130,3 +133,30 @@ technique (ISP).")
 Atmel (8051, AVR, XMEGA & AVR32) chips with a USB bootloader supporting
 ISP.")
     (license gpl2+)))
+
+(define-public dfu-util
+  (package
+    (name "dfu-util")
+    (version "0.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://dfu-util.sourceforge.net/releases/dfu-util-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0czq73m92ngf30asdzrfkzraag95hlrr74imbanqq25kdim8qhin"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libusb" ,libusb)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "Host side of the USB Device Firmware Upgrade (DFU) protocol")
+    (description
+     "The DFU (Universal Serial Bus Device Firmware Upgrade) protocol is
+intended to download and upload firmware to devices connected over USB.  It
+ranges from small devices like micro-controller boards up to mobile phones.
+With dfu-util you are able to download firmware to your device or upload
+firmware from it.")
+    (home-page "http://dfu-util.sourceforge.net/")
+    (license gpl2+)))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 3dfff146cd..38068008ca 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -281,9 +281,16 @@ high quality, anti-aliased and subpixel rendered text on a display.")
    (version "5.1.2")
    (source (origin
             (method url-fetch)
-            (uri "ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz")
+            (uri (list (string-append "ftp://sunsite.unc.edu/pub/Linux/libs/"
+                                      "graphics/" name "-" version ".tar.gz")
+                       (string-append "https://fossies.org/linux/misc/old/"
+                                      name "-" version ".tar.gz")))
             (sha256 (base32
-                     "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2"))))
+                     "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2"))
+            (patches (search-patches
+                       "t1lib-CVE-2010-2642.patch"
+                       "t1lib-CVE-2011-0764.patch"
+                       "t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch"))))
    (build-system gnu-build-system)
    (arguments
     ;; Making the documentation requires latex, but t1lib is also an input
@@ -386,7 +393,7 @@ and returns a sequence of positioned glyphids from the font.")
 (define-public potrace
   (package
     (name "potrace")
-    (version "1.11")
+    (version "1.13")
     (source
      (origin
       (method url-fetch)
@@ -394,7 +401,7 @@ and returns a sequence of positioned glyphids from the font.")
                           version ".tar.gz"))
       (sha256
        (base32
-        "1bbyl7jgigawmwc8r14znv8lb6lrcxh8zpvynrl6s800dr4yp9as"))))
+        "115p2vgyq7p2mf4nidk2x3aa341nvv2v8ml056vbji36df5l6lk2"))))
     (build-system gnu-build-system)
     (native-inputs `(("ghostscript" ,ghostscript))) ;for tests
     (inputs `(("zlib" ,zlib)))
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 6cbad6b1b6..ea81b1af8d 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public freeipmi
   (package
     (name "freeipmi")
-    (version "1.5.1")
+    (version "1.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0lhjxlha4j5rx11d81y1rgp9j18rlpxsjc0flsmj6bm60awmm627"))))
+               "0xgfwk6lxwwzq8pbyxjl5xxpybs9p4qwgb7q0ykf048xwxha4kvk"))))
     (build-system gnu-build-system)
     (inputs
      `(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index fc16862471..368f09632c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
@@ -590,11 +590,11 @@ for common mesh file formats, and collision detection.")
   ;; The latest release on SourceForge relies on an unreleased version of SFML
   ;; with a different API, so we take the latest version from the official
   ;; repository on Github.
-  (let ((commit   "c855d04409")
+  (let ((commit   "c855d044094a1d92317e38935d81ba938946132e")
         (revision "1"))
     (package
       (name "mars")
-      (version (string-append "0.7.5." revision "." commit ))
+      (version (string-append "0.7.5." revision "." (string-take commit 7) ))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -856,7 +856,7 @@ either by Infocom or created using the Inform compiler.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.3.1")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
@@ -864,7 +864,7 @@ either by Infocom or created using the Inform compiler.")
                            version ".tar.gz"))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1wydzvligyby05x8c4lpg6xcnw9qkmvkskyhzc28xq10vm3q57fv"))))
+        (base32 "077v1sj000y3csjw9vradba3k2aknvg5k8521z8aya6q987klwx5"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -1833,36 +1833,37 @@ emulation community.  It provides highly accurate emulation.")
     (license license:gpl2+)))
 
 (define-public emulation-station
-  (package
-    (name "emulation-station")
-    (version "2.0.1")
-    (source (origin
-              (method git-fetch) ; no tarball available
-              (uri (git-reference
-                    (url "https://github.com/Aloshi/EmulationStation.git")
-                    (commit "646bede"))) ; no version tag
-              (sha256
-               (base32
-                "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
-    (build-system cmake-build-system)
-    (arguments
-     '(#:tests? #f)) ; no tests
-    (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("boost" ,boost)
-       ("curl" ,curl)
-       ("eigin" ,eigen)
-       ("freeimage" ,freeimage)
-       ("freetype" ,freetype)
-       ("mesa" ,mesa)
-       ("sdl2" ,sdl2)))
-    (synopsis "Video game console emulator front-end")
-    (description "EmulationStation provides a graphical front-end to a large
+  (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
+    (package
+      (name "emulation-station")
+      (version "2.0.1")
+      (source (origin
+                (method git-fetch) ; no tarball available
+                (uri (git-reference
+                      (url "https://github.com/Aloshi/EmulationStation.git")
+                      (commit commit))) ; no version tag
+                (sha256
+                 (base32
+                  "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
+      (build-system cmake-build-system)
+      (arguments
+       '(#:tests? #f)) ; no tests
+      (inputs
+       `(("alsa-lib" ,alsa-lib)
+         ("boost" ,boost)
+         ("curl" ,curl)
+         ("eigin" ,eigen)
+         ("freeimage" ,freeimage)
+         ("freetype" ,freetype)
+         ("mesa" ,mesa)
+         ("sdl2" ,sdl2)))
+      (synopsis "Video game console emulator front-end")
+      (description "EmulationStation provides a graphical front-end to a large
 number of video game console emulators.  It features an interface that is
 usable with any game controller that has at least 4 buttons, theming support,
 and a game metadata scraper.")
-    (home-page "http://www.emulationstation.org")
-    (license license:expat)))
+      (home-page "http://www.emulationstation.org")
+      (license license:expat))))
 
 (define openttd-engine
   (package
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index e52a030f86..4d6b1a3c89 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -37,20 +37,19 @@
   (package
     (name "gd")
 
-    ;; Note: With libgd.org now pointing to bitbucket.org, genuine old
+    ;; Note: With libgd.org now pointing to github.com, genuine old
     ;; tarballs are no longer available.  Notably, versions 2.0.x are
     ;; missing.
-    (version "2.1.1")
+    (version "2.2.1")
 
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "https://bitbucket.org/libgd/gd-libgd/downloads/"
-                   "libgd-" version ".tar.xz"))
+                   "https://github.com/libgd/libgd/releases/download/gd-"
+                   version "/libgd-" version ".tar.xz"))
              (sha256
               (base32
-               "11djy9flzxczphigqgp7fbbblbq35gqwwhn9xfcckawlapa1xnls"))
-             (patches (search-patches "gd-CVE-2016-3074.patch"))))
+               "0xmrqka1ggqgml84xbmkw1y0r0lg7qn657v5b1my8pry92p651vh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 9065732c78..80d53935e2 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -37,14 +37,14 @@
 (define-public gdb
   (package
     (name "gdb")
-    (version "7.11")
+    (version "7.11.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gdb/gdb-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1hg5kwwdvi9b9nxzxfjnx8fx3gip75fqyvkp82xpf3b3rcb42hvs"))))
+               "0w7wi1llznlqdqk2lmzygz2xylb2c9mh580s9i0rypkmwfj6s8g9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; FIXME "make check" fails on single-processor systems.
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 50d480a4ad..34338f936b 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -28,7 +28,7 @@
   #:use-module (guix build-system perl)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages xml))
 
 ;; Use that name to avoid clashes with Guile's 'gettext' procedure.
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index bd2794305b..1cd779a9b0 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages glib)
@@ -75,7 +77,8 @@ provided as well as the framework to add new color models and data types.")
                                         "/" name "-" version ".tar.bz2")))
               (sha256
                (base32
-                "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))))
+                "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))
+              (patches (search-patches "gegl-CVE-2012-4433.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(;; More than just the one test disabled below now fails; disable them
@@ -121,14 +124,15 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.8.14")
+    (version "2.8.16")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.gimp.org/pub/gimp/v2.8/gimp-"
-                                  version ".tar.bz2"))
+              (uri (string-append "http://download.gimp.org/pub/gimp/v"
+                                  (version-major+minor version)
+                                  "/gimp-" version ".tar.bz2"))
               (sha256
                (base32
-                "0bdj0l7a94jqhjnj40m9rqaf622wj905iximivb55iy98639aanq"))))
+                "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ;8 MiB of gtk-doc HTML
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index c5d53d1e0a..8384c76d66 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -97,7 +97,7 @@
   #:use-module (gnu packages geeqie)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
@@ -1787,6 +1787,39 @@ gnome-terminal, but can also be used to embed a console/terminal in games,
 editors, IDEs, etc.")
     (license license:lgpl2.1+)))
 
+(define-public vte-ng
+  (package
+    (inherit vte)
+    (name "vte-ng")
+    (version "0.44.1.b")
+    (native-inputs
+     `(("gtk-doc" ,gtk-doc)
+       ("gperf" ,gperf)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ,@(package-native-inputs vte)))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/thestinger/"
+                                  name "/archive/" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mhz4i1qkdlrs49vgm7nsrb60lry9v6wsgwsmji7fln1nyrp1pag"))))
+    (arguments
+      `(#:configure-flags '("CXXFLAGS=-Wformat=0")
+        #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'bootstrap
+                    (lambda _
+                      (setenv "NOCONFIGURE" "true")
+                      (zero? (system* "sh" "autogen.sh")))))))
+  (synopsis "Enhanced VTE terminal widget")
+  (description
+   "VTE is a library (libvte) implementing a terminal emulator widget for
+GTK+, this fork provides additional functions exposed for keyboard text
+selection and URL hints.")))
+
 ;; provides vte 2.90, required for some terminal emulators
 ;; tilda bug: https://github.com/lanoxx/tilda/issues/94
 ;; pantheon-terminal bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788021
@@ -1820,7 +1853,10 @@ editors, IDEs, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1bmhahkf8wdsra9whd3k5l5z4rv7r58ksr8mshzajgq2ma0hpkw6"))))
+                "1bmhahkf8wdsra9whd3k5l5z4rv7r58ksr8mshzajgq2ma0hpkw6"))
+              (patches (search-patches
+                         "vte-CVE-2012-2738-pt1.patch"
+                         "vte-CVE-2012-2738-pt2.patch"))))
     (arguments
      '(#:configure-flags '("--disable-python")))
     (native-inputs
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index b5a2685f65..0819c485cb 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -266,10 +266,10 @@ privacy-preserving, decentralized public key infrastructure.")
    (home-page "https://gnunet.org/")))
 
 (define-public guile-gnunet                       ;GSoC 2015!
-  (let ((commit "383eac2"))
+  (let ((commit "383eac2aab175d8d9ea5315c2f1c8a5055c76a52"))
     (package
       (name "guile-gnunet")
-      (version (string-append "0.0." commit))
+      (version (string-append "0.0." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 7e52534b8f..4ffa3ac165 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -448,6 +448,8 @@ standards.")
                            )
 
        #:modules ((ice-9 ftw)
+                  (ice-9 rdelim)
+                  (ice-9 match)
                   ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
@@ -509,7 +511,48 @@ standards.")
               (format #t "configure flags: ~s~%" flags)
               (zero? (apply system* bash
                             (string-append srcdir "/configure")
-                            flags))))))))
+                            flags)))))
+         (add-before 'configure 'install-desktop-entry
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install the '.desktop' file.
+             (define (swallow-%%-directives input output)
+               ;; Interpret '%%ifdef' directives found in the '.desktop' file.
+               (let loop ((state 'top))
+                 (match (read-line input 'concat)
+                   ((? eof-object?)
+                    #t)
+                   ((? string? line)
+                    (cond ((string-prefix? "%%ifdef" line)
+                           (loop 'ifdef))
+                          ((string-prefix? "%%else" line)
+                           (loop 'else))
+                          ((string-prefix? "%%endif" line)
+                           (loop 'top))
+                          (else
+                           (case state
+                             ((top else)
+                              (display line output)
+                              (loop state))
+                             (else
+                              (loop state)))))))))
+
+             (let* ((out (assoc-ref outputs "out"))
+                    (applications (string-append out "/share/applications")))
+               (call-with-input-file "debian/icecat.desktop.in"
+                 (lambda (input)
+                   (call-with-output-file "debian/icecat.desktop"
+                     (lambda (output)
+                       (swallow-%%-directives input output)))))
+
+               (substitute* "debian/icecat.desktop"
+                 (("@MOZ_DISPLAY_NAME@")
+                  "GNU IceCat")
+                 (("^Exec=@MOZ_APP_NAME@")
+                  (string-append "Exec=" out "/bin/icecat"))
+                 (("@MOZ_APP_NAME@")
+                  "icecat"))
+               (install-file "debian/icecat.desktop" applications)
+               #t))))))
     (home-page "http://www.gnu.org/software/gnuzilla/")
     (synopsis "Entirely free browser derived from Mozilla Firefox")
     (description
diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm
index 1d9b9943bc..87c833e947 100644
--- a/gnu/packages/gprolog.scm
+++ b/gnu/packages/gprolog.scm
@@ -38,7 +38,10 @@
         "13miyas47bmijmadm68cbvb21n4s156gjafz7kfx9brk9djfkh0q"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
+     `(#:configure-flags
+       (list (string-append
+              "--with-install-dir=" %output "/share/gprolog"))
+       #:phases (alist-cons-before
                  'configure 'change-dir-n-fix-shells
                  (lambda _
                    (chdir "src")
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index ec2feebbf4..31b270c0d8 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -25,6 +25,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages disk)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages fontutils)
@@ -99,11 +100,6 @@
                      ;; Make the font visible.
                      (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
                      (system* "gunzip" "unifont.bdf.gz")
-
-                     ;; TODO: Re-enable this test when we have Parted.
-                     (substitute* "tests/partmap_test.in"
-                       (("set -e") "exit 77"))
-
                      #t)))))
     (inputs
      `(;; ("lvm2" ,lvm2)
@@ -121,6 +117,7 @@
 
        ;; Dependencies for the test suite.  The "real" QEMU is needed here,
        ;; because several targets are used.
+       ("parted" ,parted)
        ("qemu" ,qemu-for-tests)
        ("xorriso" ,xorriso)))
     (home-page "http://www.gnu.org/software/grub/")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 1fe52a4b83..e237c6a66d 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,6 +52,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -822,6 +824,60 @@ includes a tools to generate PDF presentations out of Org mode and Texinfo
 documents.")
     (license license:lgpl3+)))
 
+(define-public guile-gnome
+   (package
+    (name "guile-gnome")
+    (version "2.16.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "mirror://gnu/" name
+                              "/guile-gnome-platform/guile-gnome-platform-"
+                              version ".tar.gz"))
+             (sha256
+              (base32
+               "1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("atk" ,atk)
+       ;;("corba" ,corba) ; not packaged yet
+       ("gconf" ,gconf)
+       ("gobject-introspection" ,gobject-introspection)
+       ;;("gthread" ,gthread) ; not packaged yet
+       ("gnome-vfs" ,gnome-vfs)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gtk+" ,gtk+-2)
+       ("libglade" ,libglade)
+       ("libgnome" ,libgnome)
+       ("libgnomecanvas" ,libgnomecanvas)
+       ("libgnomeui" ,libgnomeui)
+       ("pango" ,pango)
+       ("libffi" ,libffi)
+       ("glib" ,glib)))
+    (inputs `(("guile" ,guile-2.0)))
+    (propagated-inputs
+     `(("guile-cairo" ,guile-cairo)
+       ("g-wrap" ,g-wrap)
+       ("guile-lib" ,guile-lib)))
+    (arguments
+      `(#:tests? #f                               ;FIXME
+        #:phases (modify-phases %standard-phases
+                   (add-before 'configure 'pre-configure
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let ((out (assoc-ref outputs "out")))
+                         (substitute* (find-files "." "^Makefile.in$")
+                           (("guilesite :=.*guile/site" all)
+                            (string-append all "/2.0")))
+                         #t))))))
+    (outputs '("out" "debug"))
+    (synopsis "Guile interface for GTK+ programming for GNOME")
+    (description
+     "Includes guile-clutter, guile-gnome-gstreamer,
+guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
+    (home-page "http://www.gnu.org/software/guile-gnome/")
+    (license license:gpl2+)))
+
 ;;;
 ;;; C++ bindings.
 ;;;
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index c3e0a6100b..b043e03ea4 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -731,6 +732,28 @@ tool lex or flex for C/C++.")
      "This library provides an easy way to define command line parsers.")
     (license license:bsd-3)))
 
+(define-public ghc-concatenative
+  (package
+    (name "ghc-concatenative")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://hackage.haskell.org/package/concatenative/concatenative-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "05xwqvcdnk8bsyj698ab9jxpa1nk23pf3m7wi9mwmw0q8n99fngd"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://patch-tag.com/r/salazar/concatenative/snapshot/current/content/pretty")
+    (synopsis "Library for postfix control flow")
+    (description
+     "Concatenative gives Haskell Factor-style combinators and arrows for
+postfix notation.  For more information on stack based languages, see
+@uref{http://concatenative.org}.")
+    (license license:bsd-3)))
+
 (define-public ghc-happy
   (package
     (name "ghc-happy")
@@ -1979,6 +2002,31 @@ isn't available, portable implementations are used.")
 both client and server code).")
     (license license:bsd-3)))
 
+(define-public ghc-indents
+  (package
+    (name "ghc-indents")
+    (version "0.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://hackage.haskell.org/package/indents/indents-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "16lz21bp9j14xilnq8yym22p3saxvc9fsgfcf5awn2a6i6n527xn"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-parsec" ,ghc-parsec)
+       ("ghc-concatenative" ,ghc-concatenative)
+       ("ghc-mtl" ,ghc-mtl)))
+    (home-page "http://patch-tag.com/r/salazar/indents")
+    (synopsis "Indentation sensitive parser-combinators for parsec")
+    (description
+     "This library provides functions for use in parsing indentation sensitive
+contexts.  It parses blocks of lines all indented to the same level as well as
+lines continued at an indented level below.")
+    (license license:bsd-3)))
+
 (define-public ghc-iproute
   (package
     (name "ghc-iproute")
@@ -3150,6 +3198,27 @@ to annotate the text with semantic information, which can later be rendered in
 a variety of ways.")
     (license license:bsd-3)))
 
+(define-public ghc-wl-pprint
+  (package
+    (name "ghc-wl-pprint")
+    (version "1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://hackage.haskell.org/package/wl-pprint/wl-pprint-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "166zvk4zwn2zaa9kx66m1av38m34qp6h4i65bri2sfnxgvx0700r"))))
+    (build-system haskell-build-system)
+    (home-page "http://hackage.haskell.org/package/wl-pprint")
+    (synopsis "Wadler/Leijen pretty printer")
+    (description
+     "This is a pretty printing library based on Wadler's paper @i{A Prettier
+Printer}.  This version allows the library user to declare overlapping
+instances of the @code{Pretty} class.")
+    (license license:bsd-3)))
+
 (define-public ghc-ansi-wl-pprint
   (package
     (name "ghc-ansi-wl-pprint")
@@ -4856,6 +4925,39 @@ for Haskell, optimized for ease of use and high performance.  (A note on
 naming: in Greek mythology, Aeson was the father of Jason.)")
     (license license:bsd-3)))
 
+(define-public ghc-aeson-pretty
+  (package
+    (name "ghc-aeson-pretty")
+    (version "0.7.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://hackage.haskell.org/package/aeson-pretty/aeson-pretty-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "03ap81853qi8yd9kdgczllrrni23a6glsfxrwj8zab6ipjrbh234"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-text" ,ghc-text)
+       ("ghc-unordered-containers"
+        ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-cmdargs" ,ghc-cmdargs)))
+    (home-page "http://github.com/informatikr/aeson-pretty")
+    (synopsis "JSON pretty-printing library and command-line tool")
+    (description
+     "This package provides a JSON pretty-printing library compatible with aeson
+as well as a command-line tool to improve readabilty of streams of JSON data.
+The library provides the function @code{encodePretty}.  It is a drop-in
+replacement for aeson's @code{encode} function, producing JSON-ByteStrings for
+human readers.  The command-line tool reads JSON from stdin and writes
+prettified JSON to stdout.  It also offers a complementary \"compact\"-mode,
+essentially the opposite of pretty-printing.")
+    (license license:bsd-3)))
+
 (define-public ghc-wai
   (package
     (name "ghc-wai")
@@ -6242,6 +6344,31 @@ definition lists, tables, and other features.  A compatibility mode is
 provided for those who need a drop-in replacement for Markdown.pl.")
     (license license:gpl2+)))
 
+(define-public ghc-union-find
+  (package
+    (name "ghc-union-find")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://hackage.haskell.org/package/union-find/union-find-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1v7hj42j9w6jlzi56jg8rh4p58gfs1c5dx30wd1qqvn0p0mnihp6"))))
+    (build-system haskell-build-system)
+    (home-page "http://github.com/nominolo/union-find")
+    (synopsis "Efficient union and equivalence testing of sets")
+    (description
+     "The Union/Find algorithm implements these operations in (effectively)
+constant-time:
+@enumerate
+@item Check whether two elements are in the same equivalence class.
+@item Create a union of two equivalence classes.
+@item Look up the descriptor of the equivalence class.
+@end enumerate\n")
+    (license license:bsd-3)))
+
 (define-public idris
   (package
     (name "idris")
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 7a0a158899..2b2e162107 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2014, 2015, 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +22,7 @@
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages perl)
@@ -185,3 +186,28 @@ Library and other user programs.")
      "This package provides libihash, needed to build the GNU C
 Library for GNU/Hurd.")
     (license gpl2+)))
+
+(define-public hurd-core-headers
+  (package
+    (name "hurd-core-headers")
+    (version (package-version hurd-headers))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build union))
+       #:builder (begin
+                   (use-modules (ice-9 match)
+                                (guix build union))
+                   (match %build-inputs
+                     (((names . directories) ...)
+                      (union-build (assoc-ref %outputs "out")
+                                   directories))))))
+    (inputs `(("gnumach-headers" ,gnumach-headers)
+              ("hurd-headers" ,hurd-headers)
+              ("hurd-minimal" ,hurd-minimal)))
+    (synopsis "Union of the Hurd headers and libraries")
+    (description
+     "This package contains the union of the Mach and Hurd headers and the
+Hurd-minimal package which are needed for both glibc and GCC.")
+    (home-page (package-home-page hurd-headers))
+    (license (package-license hurd-headers))))
diff --git a/gnu/packages/idutils.scm b/gnu/packages/idutils.scm
index 7a8e1c6752..63760c84e9 100644
--- a/gnu/packages/idutils.scm
+++ b/gnu/packages/idutils.scm
@@ -37,7 +37,7 @@
                "1hmai3422iaqnp34kkzxdnywl7n7pvlxp11vrw66ybxn9wxg90c1"))
              (patches (search-patches "diffutils-gets-undeclared.patch"))))
     (build-system gnu-build-system)
-    (native-inputs `(("emacs" ,emacs-no-x)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://www.gnu.org/software/idutils/")
     (synopsis "Identifier database utilities")
     (description
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 3651e97f3e..0ab3f60c5e 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -693,7 +693,8 @@ channels.")
                 "1zd850nn7nvkkhasrv7kn17kzgslr5ry933v6db62s4lr0zzlbv8"))
               ;; Backported from upstream:
               ;; https://github.com/DentonW/DevIL/commit/724194d7a9a91221a564579f64bdd6f0abd64219.patch
-              (patches (search-patches "devil-fix-libpng.patch"))
+              (patches (search-patches "devil-fix-libpng.patch"
+                                       "devil-CVE-2009-3994.patch"))
               (modules '((guix build utils)))
               (snippet
                ;; Fix old lcms include directives and lib flags.
@@ -766,3 +767,37 @@ implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e.,
 ISO/IEC 15444-1).")
     (home-page "https://www.ece.uvic.ca/~frodo/jasper/")
     (license (license:x11-style "file://LICENSE"))))
+
+(define-public zimg
+  (package
+    (name "zimg")
+    (version "2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/sekrit-twc/zimg/archive/"
+                            "release-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1hqp1gcsa2zhypms5dnasb1srjgxdqm7cip3w5i571kk9nxkn289"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autogen
+           (lambda _
+             (zero? (system* "sh" "autogen.sh")))))))
+    (synopsis "Scaling, colorspace conversion, and dithering library")
+    (description "Zimg implements the commonly required image processing basics
+of scaling, colorspace conversion, and depth conversion.  A simple API enables
+conversion between any supported formats to operate with minimal knowledge from
+the programmer.")
+    (home-page "https://github.com/sekrit-twc/zimg")
+    ;; test/extra/ contains musl-libm, 
+    ;; which is MIT/expat licensed, but only used for tests
+    (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index a7bbe0cce0..5231200919 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,14 +41,14 @@
 (define-public imagemagick
   (package
     (name "imagemagick")
-    (version "6.9.4-4")
+    (version "6.9.4-7")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "005nnp0masv59yfcdip6qld86567zjbz59c9lkcqrxclm27vmx0p"))))
+               "11jcbc9phx37m7ra4v3qsfa2iqh3srsvxplxz38h911jvgfchkzm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths")
@@ -154,7 +155,7 @@ script.")
 (define-public graphicsmagick
   (package
     (name "graphicsmagick")
-    (version "1.3.23")
+    (version "1.3.24")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.graphicsmagick.org/pub/"
@@ -162,7 +163,7 @@ script.")
                                  "/GraphicsMagick-" version ".tar.xz"))
              (sha256
               (base32
-               "03g6l2h8cmf231y1vma0z7x85070jm1ysgs9ppqcd3jj56jka9gx"))))
+               "1q40w5hcl8rcpszm0r7rpr3a9lj390p39zfvavkvlgxyyk7bmgsj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index ff785efad6..fa6109a07d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -181,15 +181,16 @@ build process and its dependencies, whereas Make uses Makefile format.")
 (define-public icedtea-6
   (package
     (name "icedtea")
-    (version "1.13.10")
+    (version "1.13.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "http://icedtea.wildebeest.org/download/source/icedtea6-"
                     version ".tar.xz"))
+              (patches (search-patches "icedtea-remove-overrides.patch"))
               (sha256
                (base32
-                "1mq08sfyfjlfw0c1czjs47303zv4h91s1jc0nhdlra4rbbx0g2d0"))
+                "1grki39a4rf8n74zc0iglcggxxbpniyfh1gk1lb10p63zvvcsvjj"))
               (modules '((guix build utils)))
               (snippet
                '(substitute* "Makefile.in"
@@ -539,6 +540,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
        ("mit-krb5" ,mit-krb5)
        ("nss" ,nss)
        ("libx11" ,libx11)
+       ("libxcomposite" ,libxcomposite)
        ("libxt" ,libxt)
        ("libxtst" ,libxtst)
        ("libxi" ,libxi)
@@ -552,10 +554,10 @@ build process and its dependencies, whereas Make uses Makefile format.")
        ("openjdk6-src"
         ,(origin
            (method url-fetch)
-           (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b38-20_jan_2016.tar.gz")
+           (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b39-03_may_2016.tar.gz")
            (sha256
             (base32
-             "1fapj9w4ahzf5nwvdgi1dsxjyh9dqbcvf9638r60h1by13wjqk5p"))))
+             "1brxbsgwcj4js26y5lk6capc3pvghgjidvv9cavw6z8n7c7aw8af"))))
        ("lcms" ,lcms)
        ("zlib" ,zlib)
        ("gtk" ,gtk+-2)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 4e6b87116a..d358a003e7 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -43,8 +43,8 @@
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "07730c4bd595b4d45a498a8ee0bcd53878ff7c10")
-        (revision "2"))
+  (let ((commit "efb40768b7c7bd9f173a7868f74b92b1c5a61a0e")
+        (revision "3"))
     (package (inherit libuv)
       (name "libuv-julia")
       (version (string-append "0.11.26." revision "-" (string-take commit 8)))
@@ -56,7 +56,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "1r0d4wb41w8k3bi9sjr7kapk1ag131ss2fbqa4jz4gnrzvw94sqx"))))
+                  "16k6pm2jl0ymz5j4ldxn94imdimahqqfd2izgr3zf1vwyyay77w3"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -68,7 +68,7 @@
 (define-public julia
   (package
     (name "julia")
-    (version "0.4.3")
+    (version "0.4.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -76,7 +76,7 @@
                     version "/julia-" version "-full.tar.gz"))
               (sha256
                (base32
-                "1i8k847d8n9v37xg69grpl51dysx36p0phwf0d1qxpsqixdg579b"))))
+                "1nbi78fav5f4zj5332iwm4mfk0qhd5qh61z881q69rvp7b163wyb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/linux-libre-4.5-i686.conf b/gnu/packages/linux-libre-4.6-i686.conf
index 3d09b49117..25cb00a6bd 100644
--- a/gnu/packages/linux-libre-4.5-i686.conf
+++ b/gnu/packages/linux-libre-4.6-i686.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.5.0-gnu Kernel Configuration
+# Linux/x86 4.6.0-gnu Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -40,6 +40,7 @@ CONFIG_X86_32_SMP=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
 CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
@@ -195,6 +196,8 @@ CONFIG_SYSFS_SYSCALL=y
 CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
@@ -378,6 +381,7 @@ CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_FAST_FEATURE_TESTS=y
 CONFIG_X86_MPPARSE=y
 # CONFIG_X86_BIGSMP is not set
+# CONFIG_GOLDFISH is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
 CONFIG_X86_INTEL_MID=y
@@ -481,6 +485,7 @@ CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
 # CONFIG_NOHIGHMEM is not set
@@ -765,10 +770,21 @@ CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
 CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
 
 #
 # PCI host controller drivers
 #
+# CONFIG_PCIE_DW_PLAT is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
@@ -802,16 +818,6 @@ CONFIG_I82365=m
 CONFIG_TCIC=m
 CONFIG_PCMCIA_PROBE=y
 CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_COMPAQ=m
-CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
-CONFIG_HOTPLUG_PCI_IBM=m
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI=y
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
 CONFIG_RAPIDIO=y
 CONFIG_RAPIDIO_TSI721=m
 CONFIG_RAPIDIO_DISC_TIMEOUT=30
@@ -819,6 +825,7 @@ CONFIG_RAPIDIO_DISC_TIMEOUT=30
 CONFIG_RAPIDIO_DMA_ENGINE=y
 # CONFIG_RAPIDIO_DEBUG is not set
 CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
 
 #
 # RapidIO Switch drivers
@@ -896,7 +903,6 @@ CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
@@ -1445,11 +1451,15 @@ CONFIG_NET_ACT_CSUM=m
 CONFIG_NET_ACT_VLAN=m
 CONFIG_NET_ACT_BPF=m
 CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_ADV_BATMAN_V is not set
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
@@ -1461,7 +1471,6 @@ CONFIG_OPENVSWITCH_VXLAN=m
 CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=m
@@ -1525,6 +1534,14 @@ CONFIG_CAN_CALC_BITTIMING=y
 CONFIG_CAN_LEDS=y
 CONFIG_CAN_JANZ_ICAN3=m
 CONFIG_PCH_CAN=m
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_CC770=m
+CONFIG_CAN_CC770_ISA=m
+CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_M_CAN=m
 CONFIG_CAN_SJA1000=m
 CONFIG_CAN_SJA1000_ISA=m
 CONFIG_CAN_SJA1000_PLATFORM=m
@@ -1536,13 +1553,8 @@ CONFIG_CAN_PEAK_PCIEC=y
 CONFIG_CAN_KVASER_PCI=m
 CONFIG_CAN_PLX_PCI=m
 CONFIG_CAN_TSCAN1=m
-CONFIG_CAN_C_CAN=m
-CONFIG_CAN_C_CAN_PLATFORM=m
-CONFIG_CAN_C_CAN_PCI=m
-CONFIG_CAN_M_CAN=m
-CONFIG_CAN_CC770=m
-CONFIG_CAN_CC770_ISA=m
-CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_SOFTING=m
+CONFIG_CAN_SOFTING_CS=m
 
 #
 # CAN SPI interfaces
@@ -1558,8 +1570,6 @@ CONFIG_CAN_GS_USB=m
 CONFIG_CAN_KVASER_USB=m
 CONFIG_CAN_PEAK_USB=m
 CONFIG_CAN_8DEV_USB=m
-CONFIG_CAN_SOFTING=m
-CONFIG_CAN_SOFTING_CS=m
 # CONFIG_CAN_DEBUG_DEVICES is not set
 CONFIG_IRDA=m
 
@@ -1630,6 +1640,7 @@ CONFIG_BT_HIDP=m
 CONFIG_BT_HS=y
 CONFIG_BT_LE=y
 CONFIG_BT_6LOWPAN=m
+# CONFIG_BT_LEDS is not set
 # CONFIG_BT_SELFTEST is not set
 CONFIG_BT_DEBUGFS=y
 
@@ -1653,6 +1664,7 @@ CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIUART_INTEL=y
 CONFIG_BT_HCIUART_BCM=y
 CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
@@ -1668,6 +1680,7 @@ CONFIG_BT_WILINK=m
 CONFIG_AF_RXRPC=m
 # CONFIG_AF_RXRPC_DEBUG is not set
 CONFIG_RXKAD=m
+CONFIG_AF_KCM=m
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1678,7 +1691,6 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_CFG80211_DEBUGFS=y
@@ -1763,6 +1775,9 @@ CONFIG_NFC_S3FWRN5=m
 CONFIG_NFC_S3FWRN5_I2C=m
 CONFIG_NFC_ST95HF=m
 CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
 
 #
 # Device Drivers
@@ -2031,6 +2046,7 @@ CONFIG_VIRTIO_BLK=y
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
 CONFIG_BLK_DEV_NVME=m
 # CONFIG_BLK_DEV_NVME_SCSI is not set
 
@@ -2063,13 +2079,17 @@ CONFIG_HMC6352=m
 CONFIG_DS1682=m
 CONFIG_TI_DAC7512=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=y
+CONFIG_BMP085=m
 CONFIG_BMP085_I2C=m
 CONFIG_BMP085_SPI=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
 CONFIG_LATTICE_ECP3_CONFIG=m
 CONFIG_SRAM=y
+CONFIG_PANEL=m
+CONFIG_PANEL_PARPORT=0
+CONFIG_PANEL_PROFILE=5
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
 CONFIG_C2PORT=m
 CONFIG_C2PORT_DURAMAR_2150=m
 
@@ -2110,6 +2130,10 @@ CONFIG_VMWARE_VMCI=m
 #
 
 #
+# VOP Bus Driver
+#
+
+#
 # Intel MIC Host Driver
 #
 
@@ -2124,6 +2148,10 @@ CONFIG_VMWARE_VMCI=m
 #
 # Intel MIC Coprocessor State Management (COSM) Drivers
 #
+
+#
+# VOP Driver
+#
 CONFIG_ECHO=m
 # CONFIG_CXL_BASE is not set
 # CONFIG_CXL_KERNEL_API is not set
@@ -2431,7 +2459,6 @@ CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_THIN_PROVISIONING=m
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_ERA=m
@@ -2496,6 +2523,7 @@ CONFIG_MACVTAP=m
 CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_GENEVE=m
+CONFIG_MACSEC=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
@@ -2619,6 +2647,7 @@ CONFIG_TIGON3=m
 CONFIG_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
 CONFIG_BNX2X_VXLAN=y
+# CONFIG_BNX2X_GENEVE is not set
 CONFIG_BNXT=m
 CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
@@ -2630,6 +2659,7 @@ CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_UWIRE is not set
 CONFIG_CHELSIO_T4_FCOE=y
 CONFIG_CHELSIO_T4VF=m
 CONFIG_NET_VENDOR_CIRRUS=y
@@ -2673,6 +2703,7 @@ CONFIG_NET_VENDOR_INTEL=y
 CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
 CONFIG_IGB=m
 CONFIG_IGB_HWMON=y
 CONFIG_IGBVF=m
@@ -2694,6 +2725,7 @@ CONFIG_NET_VENDOR_I825XX=y
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -2707,6 +2739,8 @@ CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 CONFIG_MLX5_CORE=m
 CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN_VXLAN=y
 CONFIG_MLXSW_CORE=m
 CONFIG_MLXSW_CORE_HWMON=y
 CONFIG_MLXSW_PCI=m
@@ -3041,6 +3075,7 @@ CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
 # CONFIG_IWLWIFI_UAPSD is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
 
 #
 # Debugging Options
@@ -3158,7 +3193,6 @@ CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX=m
 CONFIG_WL18XX=m
 CONFIG_WLCORE=m
-CONFIG_WLCORE_SPI=m
 CONFIG_WLCORE_SDIO=m
 CONFIG_WILINK_PLATFORM_DATA=y
 CONFIG_WLAN_VENDOR_ZYDAS=y
@@ -3302,13 +3336,6 @@ CONFIG_HISAX_ST5481=m
 CONFIG_HISAX_HFCUSB=m
 CONFIG_HISAX_HFC4S8S=m
 CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-CONFIG_ISDN_DRV_ICN=m
-CONFIG_ISDN_DRV_PCBIT=m
-CONFIG_ISDN_DRV_ACT2000=m
 CONFIG_ISDN_CAPI=m
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
@@ -3421,6 +3448,7 @@ CONFIG_KEYBOARD_CROS_EC=m
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
 CONFIG_MOUSE_PS2_CYPRESS=y
@@ -3519,6 +3547,7 @@ CONFIG_TOUCHSCREEN_WACOM_I2C=m
 CONFIG_TOUCHSCREEN_MAX11801=m
 CONFIG_TOUCHSCREEN_MCS5000=m
 CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
 CONFIG_TOUCHSCREEN_MTOUCH=m
 CONFIG_TOUCHSCREEN_INEXIO=m
 CONFIG_TOUCHSCREEN_INTEL_MID=m
@@ -3629,6 +3658,13 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
 CONFIG_INPUT_DRV260X_HAPTICS=m
 CONFIG_INPUT_DRV2665_HAPTICS=m
 CONFIG_INPUT_DRV2667_HAPTICS=m
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
 
 #
 # Hardware I/O ports
@@ -3713,6 +3749,7 @@ CONFIG_SERIAL_8250_DW=m
 CONFIG_SERIAL_8250_RT288X=y
 CONFIG_SERIAL_8250_FINTEK=m
 CONFIG_SERIAL_8250_MID=m
+CONFIG_SERIAL_8250_MOXA=m
 
 #
 # Non-8250 serial port support
@@ -3744,6 +3781,7 @@ CONFIG_SERIAL_RP2=m
 CONFIG_SERIAL_RP2_NR_UARTS=32
 CONFIG_SERIAL_FSL_LPUART=m
 CONFIG_SERIAL_MEN_Z135=m
+# CONFIG_SERIAL_MVEBU_UART is not set
 CONFIG_TTY_PRINTK=y
 CONFIG_PRINTER=m
 # CONFIG_LP_CONSOLE is not set
@@ -3913,14 +3951,18 @@ CONFIG_SPI_MASTER=y
 # SPI Master Controller Drivers
 #
 CONFIG_SPI_ALTERA=m
+CONFIG_SPI_AXI_SPI_ENGINE=m
 CONFIG_SPI_BITBANG=m
 CONFIG_SPI_BUTTERFLY=m
 CONFIG_SPI_CADENCE=m
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_PCI=m
+CONFIG_SPI_DW_MID_DMA=y
+CONFIG_SPI_DW_MMIO=m
 CONFIG_SPI_DLN2=m
 CONFIG_SPI_GPIO=m
 CONFIG_SPI_LM70_LLP=m
 CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PXA2XX_DMA=y
 CONFIG_SPI_PXA2XX=m
 CONFIG_SPI_PXA2XX_PCI=m
 CONFIG_SPI_SC18IS602=m
@@ -3928,10 +3970,6 @@ CONFIG_SPI_TOPCLIFF_PCH=m
 CONFIG_SPI_XCOMM=m
 # CONFIG_SPI_XILINX is not set
 CONFIG_SPI_ZYNQMP_GQSPI=m
-CONFIG_SPI_DESIGNWARE=m
-CONFIG_SPI_DW_PCI=m
-CONFIG_SPI_DW_MID_DMA=y
-CONFIG_SPI_DW_MMIO=m
 
 #
 # SPI Protocol Masters
@@ -4012,18 +4050,21 @@ CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_GENERIC_PLATFORM=m
 CONFIG_GPIO_ICH=m
 CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_MENZ127=m
 CONFIG_GPIO_VX855=m
 CONFIG_GPIO_ZX=y
 
 #
 # Port-mapped I/O GPIO drivers
 #
+CONFIG_GPIO_104_DIO_48E=m
 CONFIG_GPIO_104_IDIO_16=m
 CONFIG_GPIO_104_IDI_48=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_IT87=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_SCH311X=m
+CONFIG_GPIO_WS16C48=m
 
 #
 # I2C GPIO expanders
@@ -4034,6 +4075,7 @@ CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCA953X=m
 CONFIG_GPIO_PCF857X=m
 CONFIG_GPIO_SX150X=y
+CONFIG_GPIO_TPIC2810=m
 
 #
 # MFD GPIO expanders
@@ -4052,6 +4094,8 @@ CONFIG_GPIO_MSIC=y
 CONFIG_GPIO_PALMAS=y
 CONFIG_GPIO_RC5T583=y
 CONFIG_GPIO_TIMBERDALE=y
+CONFIG_GPIO_TPS65086=m
+CONFIG_GPIO_TPS65218=m
 CONFIG_GPIO_TPS6586X=y
 CONFIG_GPIO_TPS65910=y
 CONFIG_GPIO_TPS65912=m
@@ -4076,6 +4120,7 @@ CONFIG_GPIO_RDC321X=m
 #
 CONFIG_GPIO_MAX7301=m
 CONFIG_GPIO_MC33880=m
+CONFIG_GPIO_PISOSR=m
 
 #
 # SPI or I2C GPIO expanders
@@ -4231,6 +4276,7 @@ CONFIG_SENSORS_JC42=m
 CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
 CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4222=m
@@ -4388,6 +4434,7 @@ CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
 CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
 CONFIG_F71808E_WDT=m
 CONFIG_SP5100_TCO=m
 CONFIG_SBC_FITPC2_WATCHDOG=m
@@ -4422,7 +4469,8 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
-CONFIG_BCM7038_WDT=m
+CONFIG_INTEL_MEI_WDT=m
+CONFIG_NI903X_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -4487,7 +4535,8 @@ CONFIG_MFD_AS3711=y
 CONFIG_PMIC_ADP5520=y
 CONFIG_MFD_AAT2870_CORE=y
 CONFIG_MFD_BCM590XX=m
-CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
 CONFIG_MFD_CROS_EC=m
 CONFIG_MFD_CROS_EC_I2C=m
 CONFIG_MFD_CROS_EC_SPI=m
@@ -4557,6 +4606,7 @@ CONFIG_MFD_PALMAS=y
 CONFIG_TPS6105X=m
 CONFIG_TPS65010=m
 CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65086=m
 CONFIG_MFD_TPS65090=y
 CONFIG_MFD_TPS65217=m
 CONFIG_MFD_TPS65218=m
@@ -4658,6 +4708,7 @@ CONFIG_REGULATOR_TPS6105X=m
 CONFIG_REGULATOR_TPS62360=m
 CONFIG_REGULATOR_TPS65023=m
 CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65086=m
 CONFIG_REGULATOR_TPS65090=m
 CONFIG_REGULATOR_TPS65217=m
 CONFIG_REGULATOR_TPS6524X=m
@@ -4985,7 +5036,6 @@ CONFIG_DVB_NETUP_UNIDVB=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_PLATFORM=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
@@ -5378,6 +5428,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
 CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_FBDEV_EMULATION=y
@@ -5399,6 +5450,11 @@ CONFIG_DRM_AMDGPU=m
 # CONFIG_DRM_AMDGPU_CIK is not set
 CONFIG_DRM_AMDGPU_USERPTR=y
 # CONFIG_DRM_AMD_POWERPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@@ -5406,6 +5462,7 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+CONFIG_DRM_I915_USERPTR=y
 CONFIG_DRM_MGA=m
 CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
@@ -5624,11 +5681,13 @@ CONFIG_SOUND_OSS_CORE=y
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
+CONFIG_SND_PCM_ELD=y
 CONFIG_SND_DMAENGINE_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_COMPRESS_OFFLOAD=m
 CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 CONFIG_SND_OSSEMUL=y
@@ -5917,11 +5976,14 @@ CONFIG_SND_SOC_CS4349=m
 CONFIG_SND_SOC_DMIC=m
 CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_GTM601=m
+CONFIG_SND_SOC_HDAC_HDMI=m
 CONFIG_SND_SOC_INNO_RK3036=m
 CONFIG_SND_SOC_MAX98090=m
 CONFIG_SND_SOC_MAX98357A=m
 CONFIG_SND_SOC_PCM1681=m
 CONFIG_SND_SOC_PCM179X=m
+CONFIG_SND_SOC_PCM179X_I2C=m
+CONFIG_SND_SOC_PCM179X_SPI=m
 CONFIG_SND_SOC_PCM3168A=m
 CONFIG_SND_SOC_PCM3168A_I2C=m
 CONFIG_SND_SOC_PCM3168A_SPI=m
@@ -5931,6 +5993,7 @@ CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RL6347A=m
 CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5616=m
 CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
 CONFIG_SND_SOC_RT5645=m
@@ -6010,6 +6073,7 @@ CONFIG_HID_CHERRY=m
 CONFIG_HID_CHICONY=m
 CONFIG_HID_CORSAIR=m
 CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_CMEDIA=m
 CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=m
 CONFIG_HID_DRAGONRISE=m
@@ -6592,6 +6656,7 @@ CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_CXGB3=m
 # CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_I40IW=m
 CONFIG_MLX4_INFINIBAND=m
 CONFIG_MLX5_INFINIBAND=m
 CONFIG_INFINIBAND_NES=m
@@ -6655,10 +6720,10 @@ CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_ABB5ZES3=m
 CONFIG_RTC_DRV_ABX80X=m
 CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_MAX8907=m
@@ -6670,16 +6735,15 @@ CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PALMAS=m
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
-CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_TWL4030=m
+CONFIG_RTC_DRV_PALMAS=m
 CONFIG_RTC_DRV_TPS6586X=m
 CONFIG_RTC_DRV_TPS65910=m
 CONFIG_RTC_DRV_TPS80031=m
@@ -6691,6 +6755,7 @@ CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
 CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_S5M=m
 
@@ -6703,13 +6768,20 @@ CONFIG_RTC_DRV_DS1305=m
 CONFIG_RTC_DRV_DS1343=m
 CONFIG_RTC_DRV_DS1347=m
 CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
 CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RX4581=m
+CONFIG_RTC_DRV_RX6110=m
 CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_MAX6902=m
 CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_RX4581=m
 CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
 
 #
 # Platform RTC drivers
@@ -6768,6 +6840,8 @@ CONFIG_DMA_ACPI=y
 CONFIG_INTEL_IDMA64=m
 CONFIG_PCH_DMA=m
 CONFIG_TIMB_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
 CONFIG_DW_DMAC_CORE=m
 CONFIG_DW_DMAC=m
 CONFIG_DW_DMAC_PCI=m
@@ -6803,6 +6877,7 @@ CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
 CONFIG_VFIO_PCI_MMAP=y
 CONFIG_VFIO_PCI_INTX=y
+CONFIG_VFIO_PCI_IGD=y
 CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
@@ -6993,10 +7068,6 @@ CONFIG_COMEDI_ISADMA=m
 CONFIG_COMEDI_NI_LABPC=m
 CONFIG_COMEDI_NI_LABPC_ISADMA=m
 CONFIG_COMEDI_NI_TIO=m
-CONFIG_PANEL=m
-CONFIG_PANEL_PARPORT=0
-CONFIG_PANEL_PROFILE=5
-# CONFIG_PANEL_CHANGE_MESSAGE is not set
 CONFIG_RTL8192U=m
 CONFIG_RTLLIB=m
 CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -7079,13 +7150,6 @@ CONFIG_TSL2583=m
 CONFIG_TSL2x7x=m
 
 #
-# Magnetometer sensors
-#
-CONFIG_SENSORS_HMC5843=m
-CONFIG_SENSORS_HMC5843_I2C=m
-CONFIG_SENSORS_HMC5843_SPI=m
-
-#
 # Active energy metering IC
 #
 CONFIG_ADE7753=m
@@ -7106,7 +7170,6 @@ CONFIG_AD2S1210=m
 #
 # Triggers - standalone
 #
-CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
 CONFIG_FB_SM750=m
 CONFIG_FB_XGI=m
 
@@ -7129,12 +7192,11 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m
 CONFIG_SPEAKUP_SYNTH_SPKOUT=m
 CONFIG_SPEAKUP_SYNTH_TXPRT=m
 CONFIG_SPEAKUP_SYNTH_DUMMY=m
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
 CONFIG_STAGING_MEDIA=y
 CONFIG_I2C_BCM2048=m
 CONFIG_DVB_CXD2099=m
 CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
+CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
 CONFIG_LIRC_IMON=m
@@ -7149,22 +7211,18 @@ CONFIG_STAGING_RDMA=m
 #
 # Android
 #
-CONFIG_WIMAX_GDM72XX=m
-CONFIG_WIMAX_GDM72XX_QOS=y
-CONFIG_WIMAX_GDM72XX_K_MODE=y
-CONFIG_WIMAX_GDM72XX_WIMAX2=y
-CONFIG_WIMAX_GDM72XX_USB=y
-# CONFIG_WIMAX_GDM72XX_SDIO is not set
-CONFIG_WIMAX_GDM72XX_USB_PM=y
 CONFIG_LTE_GDM724X=m
 CONFIG_FIREWIRE_SERIAL=m
 CONFIG_FWTTY_MAX_TOTAL_PORTS=64
 CONFIG_FWTTY_MAX_CARD_PORTS=32
 CONFIG_MTD_SPINAND_MT29F=m
 CONFIG_MTD_SPINAND_ONDIEECC=y
+CONFIG_LNET=m
+CONFIG_LNET_MAX_PAYLOAD=1048576
+# CONFIG_LNET_SELFTEST is not set
+CONFIG_LNET_XPRT_IB=m
 # CONFIG_LUSTRE_FS is not set
 CONFIG_DGNC=m
-CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
 CONFIG_FB_TFT=m
 CONFIG_FB_TFT_AGM1264K_FL=m
@@ -7185,7 +7243,9 @@ CONFIG_FB_TFT_RA8875=m
 CONFIG_FB_TFT_S6D02A1=m
 CONFIG_FB_TFT_S6D1121=m
 CONFIG_FB_TFT_SSD1289=m
+CONFIG_FB_TFT_SSD1305=m
 CONFIG_FB_TFT_SSD1306=m
+CONFIG_FB_TFT_SSD1325=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_ST7735R=m
@@ -7211,11 +7271,19 @@ CONFIG_AIM_V4L2=m
 CONFIG_HDM_DIM2=m
 CONFIG_HDM_I2C=m
 CONFIG_HDM_USB=m
+
+#
+# Old ISDN4Linux (deprecated)
+#
+CONFIG_ISDN_DRV_ICN=m
+CONFIG_ISDN_DRV_PCBIT=m
+CONFIG_ISDN_DRV_ACT2000=m
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ALIENWARE_WMI=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
@@ -7291,6 +7359,7 @@ CONFIG_COMMON_CLK=y
 #
 CONFIG_COMMON_CLK_WM831X=m
 CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_CDCE706=m
 CONFIG_COMMON_CLK_CS2000_CP=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=m
@@ -7298,7 +7367,6 @@ CONFIG_CLK_TWL6040=m
 CONFIG_COMMON_CLK_PALMAS=m
 CONFIG_COMMON_CLK_PWM=m
 # CONFIG_COMMON_CLK_PXA is not set
-CONFIG_COMMON_CLK_CDCE706=m
 
 #
 # Hardware Spinlock drivers
@@ -7446,7 +7514,9 @@ CONFIG_PALMAS_GPADC=m
 CONFIG_QCOM_SPMI_IADC=m
 CONFIG_QCOM_SPMI_VADC=m
 CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC0832=m
 CONFIG_TI_ADC128S052=m
+CONFIG_TI_ADS1015=m
 CONFIG_TI_AM335X_ADC=m
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL6030_GPADC=m
@@ -7460,6 +7530,7 @@ CONFIG_AD8366=m
 #
 # Chemical Sensors
 #
+CONFIG_ATLAS_PH_SENSOR=m
 CONFIG_IAQCORE=m
 CONFIG_VZ89X=m
 
@@ -7492,6 +7563,7 @@ CONFIG_AD5504=m
 CONFIG_AD5624R_SPI=m
 CONFIG_AD5686=m
 CONFIG_AD5755=m
+CONFIG_AD5761=m
 CONFIG_AD5764=m
 CONFIG_AD5791=m
 CONFIG_AD7303=m
@@ -7499,6 +7571,7 @@ CONFIG_M62332=m
 CONFIG_MAX517=m
 CONFIG_MCP4725=m
 CONFIG_MCP4922=m
+CONFIG_STX104=m
 
 #
 # IIO dummy driver
@@ -7539,8 +7612,14 @@ CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
 CONFIG_ITG3200=m
 
 #
-# Health sensors
+# Health Sensors
 #
+
+#
+# Heart Rate Monitors
+#
+CONFIG_AFE4403=m
+CONFIG_AFE4404=m
 CONFIG_MAX30100=m
 
 #
@@ -7559,6 +7638,8 @@ CONFIG_ADIS16400=m
 CONFIG_ADIS16480=m
 CONFIG_KMX61=m
 CONFIG_INV_MPU6050_IIO=m
+CONFIG_INV_MPU6050_I2C=m
+CONFIG_INV_MPU6050_SPI=m
 CONFIG_IIO_ADIS_LIB=m
 CONFIG_IIO_ADIS_LIB_BUFFER=y
 
@@ -7605,6 +7686,9 @@ CONFIG_MMC35240=m
 CONFIG_IIO_ST_MAGN_3AXIS=m
 CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
 CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+CONFIG_SENSORS_HMC5843=m
+CONFIG_SENSORS_HMC5843_I2C=m
+CONFIG_SENSORS_HMC5843_SPI=m
 
 #
 # Inclinometer sensors
@@ -7623,6 +7707,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 # Digital potentiometers
 #
 CONFIG_MCP4531=m
+CONFIG_TPL0102=m
 
 #
 # Pressure sensors
@@ -7630,6 +7715,8 @@ CONFIG_MCP4531=m
 CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
+CONFIG_MPL115_I2C=m
+CONFIG_MPL115_SPI=m
 CONFIG_MPL3115=m
 CONFIG_MS5611=m
 CONFIG_MS5611_I2C=m
@@ -7692,7 +7779,6 @@ CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_ARM_GIC_MAX_NR=1
-CONFIG_TS4800_IRQ=m
 CONFIG_IPACK_BUS=m
 CONFIG_BOARD_TPCI200=m
 CONFIG_SERIAL_IPOCTAL=m
@@ -7741,6 +7827,7 @@ CONFIG_NVMEM=m
 CONFIG_STM=m
 CONFIG_STM_DUMMY=m
 CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_STM_SOURCE_HEARTBEAT=m
 CONFIG_INTEL_TH=m
 CONFIG_INTEL_TH_PCI=m
 CONFIG_INTEL_TH_GTH=m
@@ -7768,6 +7855,8 @@ CONFIG_DMI_SYSFS=m
 CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
 # CONFIG_GOOGLE_FIRMWARE is not set
 
 #
@@ -7843,6 +7932,7 @@ CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=m
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
@@ -7890,6 +7980,7 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=y
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 CONFIG_NTFS_FS=m
 # CONFIG_NTFS_DEBUG is not set
 # CONFIG_NTFS_RW is not set
@@ -7913,6 +8004,7 @@ CONFIG_HUGETLB_PAGE=y
 CONFIG_CONFIGFS_FS=m
 CONFIG_EFIVAR_FS=y
 CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ORANGEFS_FS=m
 CONFIG_ADFS_FS=m
 # CONFIG_ADFS_FS_RW is not set
 CONFIG_AFFS_FS=m
@@ -8012,7 +8104,8 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
-CONFIG_NFSD_PNFS=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_GRACE_PERIOD=m
@@ -8155,6 +8248,8 @@ CONFIG_DEBUG_KERNEL=y
 #
 CONFIG_PAGE_EXTENSION=y
 # CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
@@ -8230,6 +8325,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_EQS_DEBUG is not set
 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
 CONFIG_NOTIFIER_ERROR_INJECTION=m
 CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
 CONFIG_PM_NOTIFIER_ERROR_INJECT=m
@@ -8303,6 +8399,7 @@ CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_STRING_HELPERS=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_PRINTF=m
+CONFIG_TEST_BITMAP=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
@@ -8335,7 +8432,6 @@ CONFIG_EARLY_PRINTK_EFI=y
 # CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
 # CONFIG_EFI_PGT_DUMP is not set
-CONFIG_DEBUG_RODATA=y
 # CONFIG_DEBUG_RODATA_TEST is not set
 # CONFIG_DEBUG_WX is not set
 CONFIG_DEBUG_SET_MODULE_RONX=y
@@ -8359,7 +8455,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_DEBUG_ENTRY is not set
 # CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
 CONFIG_X86_DEBUG_FPU=y
 CONFIG_PUNIT_ATOM_DEBUG=m
 
@@ -8455,11 +8550,9 @@ CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG_DEFAULT=m
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_AKCIPHER2=y
-CONFIG_CRYPTO_AKCIPHER=m
-CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_RSA=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_USER=m
@@ -8560,7 +8653,6 @@ CONFIG_CRYPTO_TWOFISH_586=m
 # Compression
 #
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=y
 CONFIG_CRYPTO_842=m
 CONFIG_CRYPTO_LZ4=m
@@ -8599,7 +8691,6 @@ CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
 CONFIG_CRYPTO_DEV_QAT_C62XVF=m
 CONFIG_ASYMMETRIC_KEY_TYPE=y
 CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
-CONFIG_PUBLIC_KEY_ALGO_RSA=y
 CONFIG_X509_CERTIFICATE_PARSER=y
 CONFIG_PKCS7_MESSAGE_PARSER=y
 CONFIG_PKCS7_TEST_KEY=m
@@ -8610,6 +8701,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
 #
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
 CONFIG_HAVE_KVM=y
 CONFIG_HAVE_KVM_IRQCHIP=y
 CONFIG_HAVE_KVM_IRQFD=y
diff --git a/gnu/packages/linux-libre-4.5-x86_64.conf b/gnu/packages/linux-libre-4.6-x86_64.conf
index 8625ce6af5..a7c11eeae3 100644
--- a/gnu/packages/linux-libre-4.5-x86_64.conf
+++ b/gnu/packages/linux-libre-4.6-x86_64.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.5.0-gnu Kernel Configuration
+# Linux/x86 4.6.0-gnu Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -43,6 +43,7 @@ CONFIG_X86_64_SMP=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
 CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
 CONFIG_PGTABLE_LEVELS=4
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
@@ -204,6 +205,8 @@ CONFIG_SYSFS_SYSCALL=y
 CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
@@ -301,6 +304,7 @@ CONFIG_ARCH_MMAP_RND_BITS=28
 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
 CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_HAVE_STACK_VALIDATION=y
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_COMPAT_OLD_SIGACTION=y
 
@@ -393,6 +397,7 @@ CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_FAST_FEATURE_TESTS=y
 CONFIG_X86_X2APIC=y
 CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 CONFIG_X86_NUMACHIP=y
 # CONFIG_X86_VSMP is not set
@@ -471,6 +476,7 @@ CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
@@ -544,6 +550,8 @@ CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
 CONFIG_IDLE_PAGE_TRACKING=y
 CONFIG_ZONE_DEVICE=y
 CONFIG_FRAME_VECTOR=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
 CONFIG_X86_PMEM_LEGACY_DEVICE=y
 CONFIG_X86_PMEM_LEGACY=y
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
@@ -558,6 +566,7 @@ CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
 CONFIG_X86_INTEL_MPX=y
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_EFI_MIXED=y
@@ -755,10 +764,19 @@ CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
 CONFIG_PCI_LABEL=y
+CONFIG_PCI_HYPERV=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
 
 #
 # PCI host controller drivers
 #
+# CONFIG_PCIE_DW_PLAT is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_AMD_NB=y
 CONFIG_PCCARD=m
@@ -778,13 +796,6 @@ CONFIG_YENTA_TOSHIBA=y
 CONFIG_PD6729=m
 CONFIG_I82092=m
 CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI=y
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
 CONFIG_RAPIDIO=y
 CONFIG_RAPIDIO_TSI721=m
 CONFIG_RAPIDIO_DISC_TIMEOUT=30
@@ -792,6 +803,7 @@ CONFIG_RAPIDIO_DISC_TIMEOUT=30
 CONFIG_RAPIDIO_DMA_ENGINE=y
 # CONFIG_RAPIDIO_DEBUG is not set
 CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
 
 #
 # RapidIO Switch drivers
@@ -877,7 +889,6 @@ CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
@@ -1422,11 +1433,15 @@ CONFIG_NET_ACT_CSUM=m
 CONFIG_NET_ACT_VLAN=m
 CONFIG_NET_ACT_BPF=m
 CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_ADV_BATMAN_V is not set
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
@@ -1438,7 +1453,6 @@ CONFIG_OPENVSWITCH_VXLAN=m
 CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=m
@@ -1498,6 +1512,14 @@ CONFIG_CAN_DEV=m
 CONFIG_CAN_CALC_BITTIMING=y
 CONFIG_CAN_LEDS=y
 CONFIG_CAN_JANZ_ICAN3=m
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_CC770=m
+CONFIG_CAN_CC770_ISA=m
+CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_M_CAN=m
 CONFIG_CAN_SJA1000=m
 CONFIG_CAN_SJA1000_ISA=m
 CONFIG_CAN_SJA1000_PLATFORM=m
@@ -1508,13 +1530,8 @@ CONFIG_CAN_PEAK_PCI=m
 CONFIG_CAN_PEAK_PCIEC=y
 CONFIG_CAN_KVASER_PCI=m
 CONFIG_CAN_PLX_PCI=m
-CONFIG_CAN_C_CAN=m
-CONFIG_CAN_C_CAN_PLATFORM=m
-CONFIG_CAN_C_CAN_PCI=m
-CONFIG_CAN_M_CAN=m
-CONFIG_CAN_CC770=m
-CONFIG_CAN_CC770_ISA=m
-CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_SOFTING=m
+CONFIG_CAN_SOFTING_CS=m
 
 #
 # CAN SPI interfaces
@@ -1530,8 +1547,6 @@ CONFIG_CAN_GS_USB=m
 CONFIG_CAN_KVASER_USB=m
 CONFIG_CAN_PEAK_USB=m
 CONFIG_CAN_8DEV_USB=m
-CONFIG_CAN_SOFTING=m
-CONFIG_CAN_SOFTING_CS=m
 # CONFIG_CAN_DEBUG_DEVICES is not set
 CONFIG_IRDA=m
 
@@ -1601,6 +1616,7 @@ CONFIG_BT_HIDP=m
 CONFIG_BT_HS=y
 CONFIG_BT_LE=y
 CONFIG_BT_6LOWPAN=m
+# CONFIG_BT_LEDS is not set
 # CONFIG_BT_SELFTEST is not set
 CONFIG_BT_DEBUGFS=y
 
@@ -1624,6 +1640,7 @@ CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIUART_INTEL=y
 CONFIG_BT_HCIUART_BCM=y
 CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
@@ -1639,6 +1656,7 @@ CONFIG_BT_WILINK=m
 CONFIG_AF_RXRPC=m
 # CONFIG_AF_RXRPC_DEBUG is not set
 CONFIG_RXKAD=m
+CONFIG_AF_KCM=m
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1649,7 +1667,6 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_CFG80211_DEBUGFS=y
@@ -1734,6 +1751,9 @@ CONFIG_NFC_S3FWRN5=m
 CONFIG_NFC_S3FWRN5_I2C=m
 CONFIG_NFC_ST95HF=m
 CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
 CONFIG_HAVE_BPF_JIT=y
 
 #
@@ -1998,6 +2018,7 @@ CONFIG_VIRTIO_BLK=y
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
 CONFIG_BLK_DEV_NVME=m
 # CONFIG_BLK_DEV_NVME_SCSI is not set
 
@@ -2028,12 +2049,16 @@ CONFIG_HMC6352=m
 CONFIG_DS1682=m
 CONFIG_TI_DAC7512=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=y
+CONFIG_BMP085=m
 CONFIG_BMP085_I2C=m
 CONFIG_BMP085_SPI=m
 CONFIG_USB_SWITCH_FSA9480=m
 CONFIG_LATTICE_ECP3_CONFIG=m
 CONFIG_SRAM=y
+CONFIG_PANEL=m
+CONFIG_PANEL_PARPORT=0
+CONFIG_PANEL_PROFILE=5
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
 CONFIG_C2PORT=m
 CONFIG_C2PORT_DURAMAR_2150=m
 
@@ -2076,6 +2101,11 @@ CONFIG_INTEL_MIC_BUS=m
 CONFIG_SCIF_BUS=m
 
 #
+# VOP Bus Driver
+#
+CONFIG_VOP_BUS=m
+
+#
 # Intel MIC Host Driver
 #
 CONFIG_INTEL_MIC_HOST=m
@@ -2094,6 +2124,11 @@ CONFIG_SCIF=m
 # Intel MIC Coprocessor State Management (COSM) Drivers
 #
 CONFIG_MIC_COSM=m
+
+#
+# VOP Driver
+#
+CONFIG_VOP=m
 CONFIG_GENWQE=m
 CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
 CONFIG_ECHO=m
@@ -2373,7 +2408,6 @@ CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_THIN_PROVISIONING=m
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_ERA=m
@@ -2438,6 +2472,7 @@ CONFIG_MACVTAP=m
 CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_GENEVE=m
+CONFIG_MACSEC=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
@@ -2556,6 +2591,7 @@ CONFIG_TIGON3=m
 CONFIG_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
 CONFIG_BNX2X_VXLAN=y
+# CONFIG_BNX2X_GENEVE is not set
 CONFIG_BNXT=m
 CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
@@ -2571,6 +2607,7 @@ CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_UWIRE is not set
 CONFIG_CHELSIO_T4_FCOE=y
 CONFIG_CHELSIO_T4VF=m
 CONFIG_NET_VENDOR_CISCO=y
@@ -2611,6 +2648,7 @@ CONFIG_NET_VENDOR_INTEL=y
 CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
 CONFIG_IGB=m
 CONFIG_IGB_HWMON=y
 CONFIG_IGB_DCA=y
@@ -2634,6 +2672,7 @@ CONFIG_NET_VENDOR_I825XX=y
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -2647,6 +2686,8 @@ CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 CONFIG_MLX5_CORE=m
 CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN_VXLAN=y
 CONFIG_MLXSW_CORE=m
 CONFIG_MLXSW_CORE_HWMON=y
 CONFIG_MLXSW_PCI=m
@@ -2790,7 +2831,9 @@ CONFIG_MICROCHIP_PHY=m
 CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
+CONFIG_MDIO_CAVIUM=m
 CONFIG_MDIO_OCTEON=m
+CONFIG_MDIO_THUNDER=m
 CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_MICREL_KS8995MA=m
 CONFIG_PLIP=m
@@ -2978,6 +3021,7 @@ CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
 # CONFIG_IWLWIFI_UAPSD is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
 
 #
 # Debugging Options
@@ -3095,7 +3139,6 @@ CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX=m
 CONFIG_WL18XX=m
 CONFIG_WLCORE=m
-CONFIG_WLCORE_SPI=m
 CONFIG_WLCORE_SDIO=m
 CONFIG_WILINK_PLATFORM_DATA=y
 CONFIG_WLAN_VENDOR_ZYDAS=y
@@ -3223,10 +3266,6 @@ CONFIG_HISAX_ST5481=m
 CONFIG_HISAX_HFCUSB=m
 CONFIG_HISAX_HFC4S8S=m
 CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
 CONFIG_ISDN_CAPI=m
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
@@ -3337,6 +3376,7 @@ CONFIG_KEYBOARD_CROS_EC=m
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
 CONFIG_MOUSE_PS2_CYPRESS=y
@@ -3432,6 +3472,7 @@ CONFIG_TOUCHSCREEN_WACOM_I2C=m
 CONFIG_TOUCHSCREEN_MAX11801=m
 CONFIG_TOUCHSCREEN_MCS5000=m
 CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
 CONFIG_TOUCHSCREEN_MTOUCH=m
 CONFIG_TOUCHSCREEN_INEXIO=m
 CONFIG_TOUCHSCREEN_MK712=m
@@ -3539,6 +3580,13 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
 CONFIG_INPUT_DRV260X_HAPTICS=m
 CONFIG_INPUT_DRV2665_HAPTICS=m
 CONFIG_INPUT_DRV2667_HAPTICS=m
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
 
 #
 # Hardware I/O ports
@@ -3618,6 +3666,7 @@ CONFIG_SERIAL_8250_DW=m
 CONFIG_SERIAL_8250_RT288X=y
 CONFIG_SERIAL_8250_FINTEK=m
 CONFIG_SERIAL_8250_MID=m
+CONFIG_SERIAL_8250_MOXA=m
 
 #
 # Non-8250 serial port support
@@ -3647,6 +3696,7 @@ CONFIG_SERIAL_RP2=m
 CONFIG_SERIAL_RP2_NR_UARTS=32
 CONFIG_SERIAL_FSL_LPUART=m
 CONFIG_SERIAL_MEN_Z135=m
+# CONFIG_SERIAL_MVEBU_UART is not set
 CONFIG_TTY_PRINTK=y
 CONFIG_PRINTER=m
 # CONFIG_LP_CONSOLE is not set
@@ -3807,24 +3857,24 @@ CONFIG_SPI_MASTER=y
 # SPI Master Controller Drivers
 #
 CONFIG_SPI_ALTERA=m
+CONFIG_SPI_AXI_SPI_ENGINE=m
 CONFIG_SPI_BITBANG=m
 CONFIG_SPI_BUTTERFLY=m
 CONFIG_SPI_CADENCE=m
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_PCI=m
+CONFIG_SPI_DW_MID_DMA=y
+CONFIG_SPI_DW_MMIO=m
 CONFIG_SPI_DLN2=m
 CONFIG_SPI_GPIO=m
 CONFIG_SPI_LM70_LLP=m
 CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PXA2XX_DMA=y
 CONFIG_SPI_PXA2XX=m
 CONFIG_SPI_PXA2XX_PCI=m
 CONFIG_SPI_SC18IS602=m
 CONFIG_SPI_XCOMM=m
 # CONFIG_SPI_XILINX is not set
 CONFIG_SPI_ZYNQMP_GQSPI=m
-CONFIG_SPI_DESIGNWARE=m
-CONFIG_SPI_DW_PCI=m
-CONFIG_SPI_DW_MID_DMA=y
-CONFIG_SPI_DW_MMIO=m
 
 #
 # SPI Protocol Masters
@@ -3904,18 +3954,21 @@ CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_GENERIC_PLATFORM=m
 CONFIG_GPIO_ICH=m
 CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_MENZ127=m
 CONFIG_GPIO_VX855=m
 CONFIG_GPIO_ZX=y
 
 #
 # Port-mapped I/O GPIO drivers
 #
+CONFIG_GPIO_104_DIO_48E=m
 CONFIG_GPIO_104_IDIO_16=m
 CONFIG_GPIO_104_IDI_48=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_IT87=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_SCH311X=m
+CONFIG_GPIO_WS16C48=m
 
 #
 # I2C GPIO expanders
@@ -3926,6 +3979,7 @@ CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCA953X=m
 CONFIG_GPIO_PCF857X=m
 CONFIG_GPIO_SX150X=y
+CONFIG_GPIO_TPIC2810=m
 
 #
 # MFD GPIO expanders
@@ -3941,6 +3995,8 @@ CONFIG_GPIO_KEMPLD=m
 CONFIG_GPIO_LP3943=m
 CONFIG_GPIO_PALMAS=y
 CONFIG_GPIO_RC5T583=y
+CONFIG_GPIO_TPS65086=m
+CONFIG_GPIO_TPS65218=m
 CONFIG_GPIO_TPS6586X=y
 CONFIG_GPIO_TPS65910=y
 CONFIG_GPIO_TPS65912=m
@@ -3964,6 +4020,7 @@ CONFIG_GPIO_RDC321X=m
 #
 CONFIG_GPIO_MAX7301=m
 CONFIG_GPIO_MC33880=m
+CONFIG_GPIO_PISOSR=m
 
 #
 # SPI or I2C GPIO expanders
@@ -4118,6 +4175,7 @@ CONFIG_SENSORS_JC42=m
 CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
 CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4222=m
@@ -4275,6 +4333,7 @@ CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
 CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
 CONFIG_F71808E_WDT=m
 CONFIG_SP5100_TCO=m
 CONFIG_SBC_FITPC2_WATCHDOG=m
@@ -4304,7 +4363,8 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
-CONFIG_BCM7038_WDT=m
+CONFIG_INTEL_MEI_WDT=m
+CONFIG_NI903X_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -4361,7 +4421,8 @@ CONFIG_MFD_AS3711=y
 CONFIG_PMIC_ADP5520=y
 CONFIG_MFD_AAT2870_CORE=y
 CONFIG_MFD_BCM590XX=m
-CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
 CONFIG_MFD_CROS_EC=m
 CONFIG_MFD_CROS_EC_I2C=m
 CONFIG_MFD_CROS_EC_SPI=m
@@ -4430,6 +4491,7 @@ CONFIG_MFD_PALMAS=y
 CONFIG_TPS6105X=m
 CONFIG_TPS65010=m
 CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65086=m
 CONFIG_MFD_TPS65090=y
 CONFIG_MFD_TPS65217=m
 CONFIG_MFD_TPS65218=m
@@ -4530,6 +4592,7 @@ CONFIG_REGULATOR_TPS6105X=m
 CONFIG_REGULATOR_TPS62360=m
 CONFIG_REGULATOR_TPS65023=m
 CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65086=m
 CONFIG_REGULATOR_TPS65090=m
 CONFIG_REGULATOR_TPS65217=m
 CONFIG_REGULATOR_TPS6524X=m
@@ -5226,6 +5289,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
 CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_FBDEV_EMULATION=y
@@ -5247,6 +5311,11 @@ CONFIG_DRM_AMDGPU=m
 # CONFIG_DRM_AMDGPU_CIK is not set
 CONFIG_DRM_AMDGPU_USERPTR=y
 # CONFIG_DRM_AMD_POWERPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@@ -5254,6 +5323,7 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+CONFIG_DRM_I915_USERPTR=y
 CONFIG_DRM_MGA=m
 CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
@@ -5465,11 +5535,13 @@ CONFIG_SOUND_OSS_CORE=y
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
+CONFIG_SND_PCM_ELD=y
 CONFIG_SND_DMAENGINE_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_COMPRESS_OFFLOAD=m
 CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 CONFIG_SND_OSSEMUL=y
@@ -5701,11 +5773,14 @@ CONFIG_SND_SOC_CS4349=m
 CONFIG_SND_SOC_DMIC=m
 CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_GTM601=m
+CONFIG_SND_SOC_HDAC_HDMI=m
 CONFIG_SND_SOC_INNO_RK3036=m
 CONFIG_SND_SOC_MAX98090=m
 CONFIG_SND_SOC_MAX98357A=m
 CONFIG_SND_SOC_PCM1681=m
 CONFIG_SND_SOC_PCM179X=m
+CONFIG_SND_SOC_PCM179X_I2C=m
+CONFIG_SND_SOC_PCM179X_SPI=m
 CONFIG_SND_SOC_PCM3168A=m
 CONFIG_SND_SOC_PCM3168A_I2C=m
 CONFIG_SND_SOC_PCM3168A_SPI=m
@@ -5715,6 +5790,7 @@ CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RL6347A=m
 CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5616=m
 CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
 CONFIG_SND_SOC_RT5645=m
@@ -5793,6 +5869,7 @@ CONFIG_HID_CHERRY=m
 CONFIG_HID_CHICONY=m
 CONFIG_HID_CORSAIR=m
 CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_CMEDIA=m
 CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=m
 CONFIG_HID_DRAGONRISE=m
@@ -6375,6 +6452,7 @@ CONFIG_INFINIBAND_QIB_DCA=y
 CONFIG_INFINIBAND_CXGB3=m
 # CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_I40IW=m
 CONFIG_MLX4_INFINIBAND=m
 CONFIG_MLX5_INFINIBAND=m
 CONFIG_INFINIBAND_NES=m
@@ -6388,6 +6466,7 @@ CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SRPT=m
 CONFIG_INFINIBAND_ISER=m
 CONFIG_INFINIBAND_ISERT=m
+CONFIG_INFINIBAND_RDMAVT=m
 CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_SUPPORT=y
 CONFIG_EDAC=y
@@ -6434,10 +6513,10 @@ CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_ABB5ZES3=m
 CONFIG_RTC_DRV_ABX80X=m
 CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_MAX8907=m
@@ -6449,16 +6528,15 @@ CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PALMAS=m
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
-CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_TWL4030=m
+CONFIG_RTC_DRV_PALMAS=m
 CONFIG_RTC_DRV_TPS6586X=m
 CONFIG_RTC_DRV_TPS65910=m
 CONFIG_RTC_DRV_TPS80031=m
@@ -6470,6 +6548,7 @@ CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
 CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_S5M=m
 
@@ -6482,13 +6561,20 @@ CONFIG_RTC_DRV_DS1305=m
 CONFIG_RTC_DRV_DS1343=m
 CONFIG_RTC_DRV_DS1347=m
 CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
 CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RX4581=m
+CONFIG_RTC_DRV_RX6110=m
 CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_MAX6902=m
 CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_RX4581=m
 CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
 
 #
 # Platform RTC drivers
@@ -6546,6 +6632,8 @@ CONFIG_DMA_ACPI=y
 CONFIG_INTEL_IDMA64=m
 CONFIG_INTEL_IOATDMA=m
 CONFIG_INTEL_MIC_X100_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
 CONFIG_DW_DMAC_CORE=m
 CONFIG_DW_DMAC=m
 CONFIG_DW_DMAC_PCI=m
@@ -6582,6 +6670,7 @@ CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
 CONFIG_VFIO_PCI_MMAP=y
 CONFIG_VFIO_PCI_INTX=y
+CONFIG_VFIO_PCI_IGD=y
 CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
@@ -6773,10 +6862,6 @@ CONFIG_COMEDI_ISADMA=m
 CONFIG_COMEDI_NI_LABPC=m
 CONFIG_COMEDI_NI_LABPC_ISADMA=m
 CONFIG_COMEDI_NI_TIO=m
-CONFIG_PANEL=m
-CONFIG_PANEL_PARPORT=0
-CONFIG_PANEL_PROFILE=5
-# CONFIG_PANEL_CHANGE_MESSAGE is not set
 CONFIG_RTL8192U=m
 CONFIG_RTLLIB=m
 CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -6859,13 +6944,6 @@ CONFIG_TSL2583=m
 CONFIG_TSL2x7x=m
 
 #
-# Magnetometer sensors
-#
-CONFIG_SENSORS_HMC5843=m
-CONFIG_SENSORS_HMC5843_I2C=m
-CONFIG_SENSORS_HMC5843_SPI=m
-
-#
 # Active energy metering IC
 #
 CONFIG_ADE7753=m
@@ -6886,7 +6964,6 @@ CONFIG_AD2S1210=m
 #
 # Triggers - standalone
 #
-CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
 CONFIG_FB_SM750=m
 CONFIG_FB_XGI=m
 
@@ -6905,12 +6982,10 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m
 CONFIG_SPEAKUP_SYNTH_SPKOUT=m
 CONFIG_SPEAKUP_SYNTH_TXPRT=m
 CONFIG_SPEAKUP_SYNTH_DUMMY=m
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
 CONFIG_STAGING_MEDIA=y
 CONFIG_I2C_BCM2048=m
 CONFIG_DVB_CXD2099=m
 CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
 CONFIG_LIRC_IMON=m
@@ -6925,27 +7000,22 @@ CONFIG_INFINIBAND_HFI1=m
 # CONFIG_HFI1_DEBUG_SDMA_ORDER is not set
 CONFIG_HFI1_VERBS_31BIT_PSN=y
 # CONFIG_SDMA_VERBOSITY is not set
-# CONFIG_PRESCAN_RXQ is not set
 
 #
 # Android
 #
-CONFIG_WIMAX_GDM72XX=m
-CONFIG_WIMAX_GDM72XX_QOS=y
-CONFIG_WIMAX_GDM72XX_K_MODE=y
-CONFIG_WIMAX_GDM72XX_WIMAX2=y
-CONFIG_WIMAX_GDM72XX_USB=y
-# CONFIG_WIMAX_GDM72XX_SDIO is not set
-CONFIG_WIMAX_GDM72XX_USB_PM=y
 CONFIG_LTE_GDM724X=m
 CONFIG_FIREWIRE_SERIAL=m
 CONFIG_FWTTY_MAX_TOTAL_PORTS=64
 CONFIG_FWTTY_MAX_CARD_PORTS=32
 CONFIG_MTD_SPINAND_MT29F=m
 CONFIG_MTD_SPINAND_ONDIEECC=y
+CONFIG_LNET=m
+CONFIG_LNET_MAX_PAYLOAD=1048576
+# CONFIG_LNET_SELFTEST is not set
+CONFIG_LNET_XPRT_IB=m
 # CONFIG_LUSTRE_FS is not set
 CONFIG_DGNC=m
-CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
 CONFIG_CRYPTO_SKEIN=y
 CONFIG_UNISYSSPAR=y
@@ -6972,7 +7042,9 @@ CONFIG_FB_TFT_RA8875=m
 CONFIG_FB_TFT_S6D02A1=m
 CONFIG_FB_TFT_S6D1121=m
 CONFIG_FB_TFT_SSD1289=m
+CONFIG_FB_TFT_SSD1305=m
 CONFIG_FB_TFT_SSD1306=m
+CONFIG_FB_TFT_SSD1325=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_ST7735R=m
@@ -6998,11 +7070,16 @@ CONFIG_AIM_V4L2=m
 CONFIG_HDM_DIM2=m
 CONFIG_HDM_I2C=m
 CONFIG_HDM_USB=m
+
+#
+# Old ISDN4Linux (deprecated)
+#
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ALIENWARE_WMI=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
@@ -7073,6 +7150,7 @@ CONFIG_COMMON_CLK=y
 #
 CONFIG_COMMON_CLK_WM831X=m
 CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_CDCE706=m
 CONFIG_COMMON_CLK_CS2000_CP=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=m
@@ -7080,7 +7158,6 @@ CONFIG_CLK_TWL6040=m
 CONFIG_COMMON_CLK_PALMAS=m
 CONFIG_COMMON_CLK_PWM=m
 # CONFIG_COMMON_CLK_PXA is not set
-CONFIG_COMMON_CLK_CDCE706=m
 
 #
 # Hardware Spinlock drivers
@@ -7230,7 +7307,9 @@ CONFIG_PALMAS_GPADC=m
 CONFIG_QCOM_SPMI_IADC=m
 CONFIG_QCOM_SPMI_VADC=m
 CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC0832=m
 CONFIG_TI_ADC128S052=m
+CONFIG_TI_ADS1015=m
 CONFIG_TI_AM335X_ADC=m
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL6030_GPADC=m
@@ -7244,6 +7323,7 @@ CONFIG_AD8366=m
 #
 # Chemical Sensors
 #
+CONFIG_ATLAS_PH_SENSOR=m
 CONFIG_IAQCORE=m
 CONFIG_VZ89X=m
 
@@ -7276,6 +7356,7 @@ CONFIG_AD5504=m
 CONFIG_AD5624R_SPI=m
 CONFIG_AD5686=m
 CONFIG_AD5755=m
+CONFIG_AD5761=m
 CONFIG_AD5764=m
 CONFIG_AD5791=m
 CONFIG_AD7303=m
@@ -7323,8 +7404,14 @@ CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
 CONFIG_ITG3200=m
 
 #
-# Health sensors
+# Health Sensors
+#
+
 #
+# Heart Rate Monitors
+#
+CONFIG_AFE4403=m
+CONFIG_AFE4404=m
 CONFIG_MAX30100=m
 
 #
@@ -7343,6 +7430,8 @@ CONFIG_ADIS16400=m
 CONFIG_ADIS16480=m
 CONFIG_KMX61=m
 CONFIG_INV_MPU6050_IIO=m
+CONFIG_INV_MPU6050_I2C=m
+CONFIG_INV_MPU6050_SPI=m
 CONFIG_IIO_ADIS_LIB=m
 CONFIG_IIO_ADIS_LIB_BUFFER=y
 
@@ -7389,6 +7478,9 @@ CONFIG_MMC35240=m
 CONFIG_IIO_ST_MAGN_3AXIS=m
 CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
 CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+CONFIG_SENSORS_HMC5843=m
+CONFIG_SENSORS_HMC5843_I2C=m
+CONFIG_SENSORS_HMC5843_SPI=m
 
 #
 # Inclinometer sensors
@@ -7407,6 +7499,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 # Digital potentiometers
 #
 CONFIG_MCP4531=m
+CONFIG_TPL0102=m
 
 #
 # Pressure sensors
@@ -7414,6 +7507,8 @@ CONFIG_MCP4531=m
 CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
+CONFIG_MPL115_I2C=m
+CONFIG_MPL115_SPI=m
 CONFIG_MPL3115=m
 CONFIG_MS5611=m
 CONFIG_MS5611_I2C=m
@@ -7478,7 +7573,6 @@ CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_ARM_GIC_MAX_NR=1
-CONFIG_TS4800_IRQ=m
 CONFIG_IPACK_BUS=m
 CONFIG_BOARD_TPCI200=m
 CONFIG_SERIAL_IPOCTAL=m
@@ -7529,6 +7623,7 @@ CONFIG_NVMEM=m
 CONFIG_STM=m
 CONFIG_STM_DUMMY=m
 CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_STM_SOURCE_HEARTBEAT=m
 CONFIG_INTEL_TH=m
 CONFIG_INTEL_TH_PCI=m
 CONFIG_INTEL_TH_GTH=m
@@ -7556,6 +7651,8 @@ CONFIG_DMI_SYSFS=m
 CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
 # CONFIG_GOOGLE_FIRMWARE is not set
 
 #
@@ -7632,6 +7729,7 @@ CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=m
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
@@ -7680,6 +7778,7 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=y
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 CONFIG_NTFS_FS=m
 # CONFIG_NTFS_DEBUG is not set
 # CONFIG_NTFS_RW is not set
@@ -7703,6 +7802,7 @@ CONFIG_HUGETLB_PAGE=y
 CONFIG_CONFIGFS_FS=m
 CONFIG_EFIVAR_FS=y
 CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ORANGEFS_FS=m
 CONFIG_ADFS_FS=m
 # CONFIG_ADFS_FS_RW is not set
 CONFIG_AFFS_FS=m
@@ -7802,7 +7902,8 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
-CONFIG_NFSD_PNFS=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_GRACE_PERIOD=m
@@ -7935,6 +8036,7 @@ CONFIG_DEBUG_FS=y
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
+# CONFIG_STACK_VALIDATION is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
@@ -7945,6 +8047,8 @@ CONFIG_DEBUG_KERNEL=y
 #
 # CONFIG_PAGE_EXTENSION is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
@@ -7961,6 +8065,8 @@ CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
 CONFIG_HAVE_ARCH_KMEMCHECK=y
 CONFIG_HAVE_ARCH_KASAN=y
 # CONFIG_KASAN is not set
+CONFIG_ARCH_HAS_KCOV=y
+# CONFIG_KCOV is not set
 # CONFIG_DEBUG_SHIRQ is not set
 
 #
@@ -8021,6 +8127,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_EQS_DEBUG is not set
 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
 CONFIG_NOTIFIER_ERROR_INJECTION=m
 CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
 CONFIG_PM_NOTIFIER_ERROR_INJECT=m
@@ -8095,6 +8202,7 @@ CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_STRING_HELPERS=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_PRINTF=m
+CONFIG_TEST_BITMAP=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
@@ -8127,7 +8235,6 @@ CONFIG_EARLY_PRINTK_EFI=y
 # CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
 # CONFIG_EFI_PGT_DUMP is not set
-CONFIG_DEBUG_RODATA=y
 # CONFIG_DEBUG_RODATA_TEST is not set
 # CONFIG_DEBUG_WX is not set
 CONFIG_DEBUG_SET_MODULE_RONX=y
@@ -8152,7 +8259,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_DEBUG_ENTRY is not set
 # CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
 CONFIG_X86_DEBUG_FPU=y
 CONFIG_PUNIT_ATOM_DEBUG=m
 
@@ -8248,11 +8354,9 @@ CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG_DEFAULT=m
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_AKCIPHER2=y
-CONFIG_CRYPTO_AKCIPHER=m
-CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_RSA=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_USER=m
@@ -8372,7 +8476,6 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
 # Compression
 #
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=y
 CONFIG_CRYPTO_842=m
 CONFIG_CRYPTO_LZ4=m
@@ -8410,7 +8513,6 @@ CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
 CONFIG_CRYPTO_DEV_QAT_C62XVF=m
 CONFIG_ASYMMETRIC_KEY_TYPE=y
 CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
-CONFIG_PUBLIC_KEY_ALGO_RSA=y
 CONFIG_X509_CERTIFICATE_PARSER=y
 CONFIG_PKCS7_MESSAGE_PARSER=y
 CONFIG_PKCS7_TEST_KEY=m
@@ -8421,6 +8523,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
 #
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
 CONFIG_HAVE_KVM=y
 CONFIG_HAVE_KVM_IRQCHIP=y
 CONFIG_HAVE_KVM_IRQFD=y
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 90f56025f6..2ca9fe7600 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -225,7 +225,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
     (search-path %load-path file)))
 
 (define-public linux-libre
-  (let* ((version "4.5.5")
+  (let* ((version "4.6.1")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Avoid introducing timestamps
@@ -303,7 +303,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "1zys74hfdi13yyk17x45hvvbx7m97wk7pala3cd8k93xbq8qnai0"))))
+               "16cwr2jhd688bxdjfjpymap7sq0qsl24k5dylbz1rwfblnv2wn51"))))
     (build-system gnu-build-system)
     (supported-systems '("x86_64-linux" "i686-linux"))
     (native-inputs `(("perl" ,perl)
@@ -340,13 +340,13 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-4.4
   (package
     (inherit linux-libre)
-    (version "4.4.11")
+    (version "4.4.12")
     (source (origin
               (method url-fetch)
               (uri (linux-libre-urls version))
               (sha256
                (base32
-                "17pb9w72vigdrhm8hnkdyw9kwc2l06nabzygpdkwbvf7fg3j03vc"))))
+                "1zbds4ihk4x3lxr1jw7yrjzv1dkl995m41a54dfgqm0kj70li8ws"))))
     (native-inputs
      (let ((conf (kernel-config (or (%current-target-system)
                                     (%current-system))
@@ -357,13 +357,13 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-4.1
   (package
     (inherit linux-libre)
-    (version "4.1.24")
+    (version "4.1.25")
     (source (origin
               (method url-fetch)
               (uri (linux-libre-urls version))
               (sha256
                (base32
-                "14jlnq0k86bl4wj8shmvgf34w90bbm9in44j1pdjwwvn169zh9ra"))))
+                "1vpgcnmfnn005rcd60wyyg0f84fgapdmz2dpcy77p2l66mw4pakf"))))
     (native-inputs
      (let ((conf (kernel-config (or (%current-target-system)
                                     (%current-system))
@@ -883,7 +883,7 @@ MIDI functionality to the Linux-based operating system.")
 (define-public iptables
   (package
     (name "iptables")
-    (version "1.4.16.2")
+    (version "1.4.21")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -891,7 +891,7 @@ MIDI functionality to the Linux-based operating system.")
                    version ".tar.bz2"))
              (sha256
               (base32
-               "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
+               "1q6kg7sf0pgpq0qhab6sywl23cngxxfzc9zdzscsba8x09l4q02j"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f       ; no test suite
@@ -1307,18 +1307,15 @@ processes currently causing I/O.")
 (define-public fuse
   (package
     (name "fuse")
-    (version "2.9.5")
+    (version "2.9.6")
     (source (origin
               (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
-                     (string-append
-                       "https://github.com/libfuse/libfuse/"
-                       "releases/download/fuse_" version-with-underscores
-                       "/fuse-" version ".tar.gz")))
+              (uri (string-append "https://github.com/libfuse/libfuse/releases/"
+                                  "download/fuse-" version
+                                  "/fuse-" version ".tar.gz"))
               (sha256
                (base32
-                "1dfvbi1p57svbv2sfnbqwpnsk219spvjnlapf35azhgzqlf3g7sp"))))
+                "0szi2vlsjxg03y4ji51jks34p269jqj5ify6l0ajsqq6f6y8pd0c"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
     (arguments
@@ -1354,7 +1351,7 @@ processes currently causing I/O.")
                     (("-DFUSERMOUNT_DIR=[[:graph:]]+")
                      "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
                 %standard-phases)))
-    (home-page "http://fuse.sourceforge.net/")
+    (home-page "https://github.com/libfuse/libfuse")
     (synopsis "Support file systems implemented in user space")
     (description
      "As a consequence of its monolithic design, file system code for Linux
diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm
index b077825529..6b1eee3ef2 100644
--- a/gnu/packages/lirc.scm
+++ b/gnu/packages/lirc.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +23,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -31,23 +32,46 @@
 (define-public lirc
   (package
     (name "lirc")
-    (version "0.9.3")
+    (version "0.9.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/lirc/lirc-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "19c6ldjsdnk1md66q3nb035ja1xj217k8iabhxpsb8rs10a6kwi6"))
+                "1l2xzhnm4hrla51ik09hcafki0y8wnww7svfm7j63zbl2rssc66x"))
               (patches (search-patches "lirc-localstatedir.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--localstatedir=/var")))
+     '(#:configure-flags '("--localstatedir=/var")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-lirc-make-devinput
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; 'lirc-make-devinput' script assumes that linux headers
+             ;; are placed in "/usr/...".
+             (let ((headers (assoc-ref inputs "linux-headers")))
+               (substitute* "tools/lirc-make-devinput"
+                 (("/usr/include") (string-append headers "/include"))))
+             #t))
+         (add-after 'unpack 'patch-doc/Makefile.in
+           (lambda _
+             ;; Lirc wants to install several images and a useless html page
+             ;; to "$(localstatedir)/lib/lirc/".  This makes 'install' phase
+             ;; fail as localstatedir is "/var", so do not install these
+             ;; files there (the same images are installed in
+             ;; "share/doc/lirc/images/" anyway).
+             (substitute* "doc/Makefile.in"
+               (("^vardocs_DATA =.*") "vardocs_DATA =\n")
+               (("^varimage_DATA =.*") "varimage_DATA =\n"))
+             #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libxslt" ,libxslt)))
     (inputs
      `(("libx11" ,libx11)
+       ("libusb-compat" ,libusb-compat)
+       ("linux-headers" ,linux-libre-headers)
        ("alsa-lib" ,alsa-lib)
        ("python" ,python)))
     (home-page "http://www.lirc.org/")
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 85f3f3cebb..e349907f14 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -26,7 +26,7 @@
   #:use-module (guix packages)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages m4)
   #:use-module (guix download)
   #:use-module (guix git-download)
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 17874f86ab..b4b5dee8be 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,13 +31,13 @@
 (define-public lua
   (package
     (name "lua")
-    (version "5.2.3")
+    (version "5.2.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://www.lua.org/ftp/lua-"
                                  version ".tar.gz"))
              (sha256
-              (base32 "0b8034v1s82n4dg5rzcn12067ha3nxaylp2vdp8gg08kjsbzphhk"))
+              (base32 "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr"))
              (patches (search-patches "lua-pkgconfig.patch"
                                       "lua52-liblua-so.patch"))))
     (build-system gnu-build-system)
@@ -46,18 +47,18 @@
                     (guix build utils)
                     (srfi srfi-1))
        #:test-target "test"
-       #:phases (alist-replace
-                 'build
-                 (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux")))
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (zero? (system* "make" "install"
-                                      (string-append "INSTALL_TOP=" out)
-                                      (string-append "INSTALL_MAN=" out
-                                                     "/share/man/man1")))))
-                  (alist-delete 'configure %standard-phases)))))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "make" "install"
+                               (string-append "INSTALL_TOP=" out)
+                               (string-append "INSTALL_MAN=" out
+                                              "/share/man/man1")))))))))
     (home-page "http://www.lua.org/")
     (synopsis "Embeddable scripting language")
     (description
@@ -78,18 +79,19 @@ for configuration, scripting, and rapid prototyping.")
                                  version ".tar.gz"))
              (sha256
               (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16"))
-             (patches (search-patches "lua51-liblua-so.patch"))))))
+             (patches (search-patches "lua51-liblua-so.patch"
+                                      "lua-CVE-2014-5461.patch"))))))
 
 (define-public luajit
   (package
     (name "luajit")
-    (version "2.0.3")
+    (version "2.0.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://luajit.org/download/LuaJIT-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm"))
+               (base32 "0zc0y7p6nx1c0pp4nhgbdgjljpfxsb5kgwp4ysz22l1p2bms83v2"))
               (patches (search-patches "luajit-symlinks.patch"
                                        "luajit-no_ldconfig.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index cbc7509416..2ccf0f2557 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,12 +22,15 @@
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix download)
+  #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system r)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages pkg-config)
@@ -107,6 +111,95 @@ classification.")
      `(("python" ,python)))
     (synopsis "Python bindings of libSVM")))
 
+(define-public ghmm
+  ;; The latest release candidate is several years and a couple of fixes have
+  ;; been published since.  This is why we download the sources from the SVN
+  ;; repository.
+  (let ((svn-revision 2341))
+    (package
+      (name "ghmm")
+      (version (string-append "0.9-rc3-0." (number->string svn-revision)))
+      (source (origin
+                (method svn-fetch)
+                (uri (svn-reference
+                      (url "http://svn.code.sf.net/p/ghmm/code/trunk")
+                      (revision svn-revision)))
+                (file-name (string-append name "-" version))
+                (sha256
+                 (base32
+                  "0qbq1rqp94l530f043qzp8aw5lj7dng9wq0miffd7spd1ff638wq"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'enter-dir
+             (lambda _ (chdir "ghmm") #t))
+           (add-after 'enter-dir 'fix-PYTHONPATH
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; The Python tests fail as the library is assumed to be stored
+               ;; in ./build/lib.linux-i686-*.  To fix this we detect the CPU
+               ;; and use it in the path.
+               (substitute* "configure.in"
+                 (("AM_INIT_AUTOMAKE" line)
+                  (string-append line "\nAC_CANONICAL_HOST\n")))
+               (substitute* "ghmmwrapper/Makefile.am"
+                 (("i686") "@host_cpu@"))
+               #t))
+           (add-after 'enter-dir 'fix-runpath
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "ghmmwrapper/setup.py"
+                 (("^(.*)extra_compile_args = \\[" line indent)
+                  (string-append indent
+                                 "extra_link_args = [\"-Wl,-rpath="
+                                 (assoc-ref outputs "out") "/lib\"],\n"
+                                 line
+                                 "\"-Wl,-rpath="
+                                 (assoc-ref outputs "out")
+                                 "/lib\", ")))
+               #t))
+           (add-after 'enter-dir 'disable-broken-tests
+             (lambda _
+               (substitute* "tests/Makefile.am"
+                 ;; GHMM_SILENT_TESTS is assumed to be a command.
+                 (("TESTS_ENVIRONMENT.*") "")
+                 ;; Do not build broken tests.
+                 (("chmm .*") "")
+                 (("read_fa .*") "")
+                 (("mcmc .*") "")
+                 (("label_higher_order_test.*$")
+                  "label_higher_order_test\n"))
+
+               ;; These Python unittests are broken as there is no gato.
+               ;; See https://sourceforge.net/p/ghmm/support-requests/3/
+               (substitute* "ghmmwrapper/ghmmunittests.py"
+                 (("^(.*)def (testNewXML|testMultipleTransitionClasses|testNewXML)"
+                   line indent)
+                  (string-append indent
+                                 "@unittest.skip(\"Disabled by Guix\")\n"
+                                 line)))
+               #t))
+           (add-before 'configure 'autogen
+             (lambda _
+               (zero? (system* "bash" "./autogen.sh")))))))
+      (inputs
+       `(("python" ,python-2) ; only Python 2 is supported
+         ("libxml2" ,libxml2)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("dejagnu" ,dejagnu)
+         ("swig" ,swig)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)))
+      (home-page "http://ghmm.org")
+      (synopsis "Hidden Markov Model library")
+      (description
+       "The General Hidden Markov Model library (GHMM) is a C library with
+additional Python bindings implementing a wide range of types of @dfn{Hidden
+Markov Models} (HMM) and algorithms: discrete, continous emissions, basic
+training, HMM clustering, HMM mixtures.")
+      (license license:lgpl2.0+))))
+
 (define-public randomjungle
   (package
     (name "randomjungle")
@@ -138,7 +231,8 @@ classification.")
        ("libxml2" ,libxml2)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("gfortran" ,gfortran)))
+     `(("gfortran" ,gfortran)
+       ("gfortran:lib" ,gfortran "lib")))
     (home-page "http://www.imbs-luebeck.de/imbs/de/node/227/")
     (synopsis "Implementation of the Random Forests machine learning method")
     (description
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index e86afb2f2d..b4563277aa 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -344,12 +344,12 @@ repository and Maildir/IMAP as LOCAL repository.")
        ("glib" ,glib "bin")             ; for gtester
        ("autoconf" ,autoconf)
        ("automake" ,automake)
+       ("emacs" ,emacs-minimal)
        ("libtool" ,libtool)
        ("texinfo" ,texinfo)))
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
      `(("xapian" ,xapian)
-       ("emacs" ,emacs-no-x)
        ("guile" ,guile-2.0)
        ("glib" ,glib)
        ("gmime" ,gmime)
@@ -1149,7 +1149,8 @@ deliver it in various ways.")
        ;; The following patch fixes an ambiguous definition of
        ;; getline() in formail.c.  The patch is provided by Debian as
        ;; patch 24.
-       (patches (search-patches "procmail-ambiguous-getline-debian.patch"))))
+       (patches (search-patches "procmail-ambiguous-getline-debian.patch"
+                                "procmail-CVE-2014-3618.patch"))))
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (replace 'configure
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 19ed44f2c9..3b860a957f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -81,7 +81,7 @@
   #:use-module (gnu packages tcsh)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
@@ -582,6 +582,102 @@ common interface for a number of different free optimization routines available
 online as well as original implementations of various other algorithms.")
     (license license:lgpl2.1+)))
 
+(define-public ipopt
+  (package
+    (name "ipopt")
+    (version "3.12.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.coin-or.org/download/source/Ipopt/Ipopt-"
+                    version".tgz"))
+              (sha256
+               (base32
+                "09bk2hqy2vgi4yi76xng9zxakddwqy3wij9nx7wf2vfbxxpazrsk"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Make sure we don't use the bundled software.
+               '(delete-file-recursively "ThirdParty"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'add--L-flags-in-ipopt.pc
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      ;; The '.pc' file lists '-llapack -lblas' in "Libs";
+                      ;; move it to "Libs.private" where it belongs, and add a
+                      ;; '-L' flag for LAPACK.
+                      (let ((out    (assoc-ref outputs "out"))
+                            (lapack (assoc-ref inputs "lapack")))
+                        (substitute* (string-append out "/lib/pkgconfig/"
+                                                    "ipopt.pc")
+                          (("Libs: (.*)-llapack -lblas(.*)$" _ before after)
+                           (string-append "Libs: " before " " after "\n"
+                                          "Libs.private: " before
+                                          "-L" lapack "/lib -llapack -lblas "
+                                          after "\n")))
+                        #t))))))
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (inputs
+     ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL.
+     `(("lapack" ,lapack)))                    ;for both libblas and liblapack
+    (home-page "http://www.coin-or.org")
+    (synopsis "Large-scale nonlinear optimizer")
+    (description
+     "The Interior Point Optimizer (IPOPT) is a software package for
+large-scale nonlinear optimization.  It provides C++, C, and Fortran
+interfaces.")
+    (license license:epl1.0)))
+
+(define-public ceres
+  (package
+    (name "ceres-solver")
+    (version "1.11.0")
+    (home-page "http://ceres-solver.org/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "ceres-solver-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0i7qkbf8g6pd8arxzldppga26ckv93y8zldsfz6wbd4n6b1nqrjd"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; TODO: Build HTML user documentation and install separately.
+     ;; XXX: Use the embedded "miniglog" as a replacement for
+     ;; <https://github.com/google/glog>.  TODO: Use Glog when it's available.
+     '(#:configure-flags '("-DMINIGLOG=ON"
+                           "-DBUILD_EXAMPLES=OFF"
+                           "-DBUILD_SHARED_LIBS=ON")
+
+       #:phases (modify-phases %standard-phases
+                  (add-before 'configure 'set-library-directory
+                    (lambda _
+                      ;; Install libraries to lib/, not lib64/.
+                      (substitute* "internal/ceres/CMakeLists.txt"
+                        (("set\\(LIB_SUFFIX \"64\"\\)")
+                         "set(LIB_SUFFIX \"\")"))
+                      #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("eigen" ,eigen)
+       ("blas" ,openblas)
+       ("lapack" ,lapack)
+       ("suitesparse" ,suitesparse)
+       ("gflags" ,gflags)))
+    (synopsis "C++ library for solving large optimization problems")
+    (description
+     "Ceres Solver is a C++ library for modeling and solving large,
+complicated optimization problems.  It is a feature rich, mature and
+performant library which has been used in production since 2010.  Ceres Solver
+can solve two kinds of problems:
+@enumerate
+@item non-linear least squares problems with bounds constraints;
+@item general unconstrained optimization problems.
+@end enumerate\n")
+    (license license:bsd-3)))
+
 ;; For a fully featured Octave, users  are strongly recommended also to install
 ;; the following packages: texinfo, less, ghostscript, gnuplot.
 (define-public octave
@@ -1610,7 +1706,11 @@ point numbers.")
     (build-system gnu-build-system)
     (inputs
      `(("wxwidgets" ,wxwidgets)
-       ("maxima" ,maxima)))
+       ("maxima" ,maxima)
+       ;; Runtime support.
+       ("adwaita-icon-theme" ,adwaita-icon-theme)
+       ("gtk+" ,gtk+)
+       ("shared-mime-info" ,shared-mime-info)))
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (add-after
@@ -1620,7 +1720,18 @@ point numbers.")
                                                   "/bin/wxmaxima")
                        `("PATH" ":" prefix
                          (,(string-append (assoc-ref inputs "maxima")
-                                          "/bin"))))
+                                          "/bin")))
+                       ;; For GtkFileChooserDialog.
+                       `("GSETTINGS_SCHEMA_DIR" =
+                         (,(string-append (assoc-ref inputs "gtk+")
+                                          "/share/glib-2.0/schemas")))
+                       `("XDG_DATA_DIRS" ":" prefix
+                         (;; Needed by gdk-pixbuf to know supported icon formats.
+                          ,(string-append
+                            (assoc-ref inputs "shared-mime-info") "/share")
+                          ;; The default icon theme of GTK+.
+                          ,(string-append
+                            (assoc-ref inputs "adwaita-icon-theme") "/share"))))
                      #t)))))
     (home-page "https://andrejv.github.io/wxmaxima/")
     (synopsis "Graphical user interface for the Maxima computer algebra system")
diff --git a/gnu/packages/mcrypt.scm b/gnu/packages/mcrypt.scm
index a683ad7ac9..7ac0b92d81 100644
--- a/gnu/packages/mcrypt.scm
+++ b/gnu/packages/mcrypt.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +37,11 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "161031n1w9pb4yzz9i47szc12a4mwpcpvyxnvafsik2l9s2aliai"))))
+        "161031n1w9pb4yzz9i47szc12a4mwpcpvyxnvafsik2l9s2aliai"))
+      (patches (search-patches
+                 "mcrypt-CVE-2012-4409.patch"
+                 "mcrypt-CVE-2012-4426.patch"
+                 "mcrypt-CVE-2012-4527.patch"))))
     (build-system gnu-build-system)
     (inputs
      `(("zlib" ,zlib)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 3ac3888da4..215fa19bb8 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -378,14 +378,14 @@ compromised.")
 (define-public znc
   (package
     (name "znc")
-    (version "1.6.2")
+    (version "1.6.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://znc.in/releases/archive/znc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "14q5dyr5zg99hm6j6g1gilcn1zf7dskhxfpz3bnkyhy6q0kpgwgf"))))
+                "09xqi5fs40x6nj9gq99bnw1a7saq96bvqxknxx0ilq7yfvg4c733"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; tries to download GoogleTest with wget
diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm
index eebb20790d..79e2a42762 100644
--- a/gnu/packages/moreutils.scm
+++ b/gnu/packages/moreutils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,7 +29,7 @@
 (define-public moreutils
   (package
     (name "moreutils")
-    (version "0.57")
+    (version "0.58")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -36,7 +37,7 @@
                     version ".orig.tar.gz"))
               (sha256
                (base32
-                "078dpkwwwrv8hxnylbc901kib2d1rr3hsja37j6dlpjfcfq58z9s"))))
+                "02n00vqp6jxbxr5v3rdjxmzp6kxxjdkjgcclam6wrw8qamsbljww"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)
               ("libxml2" ,libxml2)
@@ -45,18 +46,17 @@
               ("docbook-xsl" ,docbook-xsl)))
     (arguments
      `(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs #:allow-other-keys)
-          (use-modules (srfi srfi-1))
-          (substitute* "Makefile"
-            (("/usr/share/xml/.*/docbook.xsl")
-             (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
-                    (files (find-files docbook-xsl "^docbook\\.xsl$")))
-               (find (lambda (file)
-                       (string-suffix? "/manpages/docbook.xsl" file))
-                     files)))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (use-modules (srfi srfi-1))
+             (substitute* "Makefile"
+               (("/usr/share/xml/.*/docbook.xsl")
+                (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
+                       (files (find-files docbook-xsl "^docbook\\.xsl$")))
+                  (find (lambda (file)
+                          (string-suffix? "/manpages/docbook.xsl" file))
+                        files)))))))
        #:make-flags
        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
              "CC=gcc")))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index fe1d13b382..8451f0ac9f 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -107,11 +108,11 @@ versions of ID3v2.")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/id3lib/id3lib/"
-                                version "/id3lib-"
-                                version ".tar.gz"))
+                                version "/id3lib-" version ".tar.gz"))
             (sha256
              (base32
-              "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))))
+              "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
+            (patches (search-patches "id3lib-CVE-2007-4460.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
@@ -417,36 +418,36 @@ format.")
     (version "0.2.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/mpc123/version%20"
-                                  version "/mpc123-" version ".tar.gz"))
+              (uri (list (string-append "mirror://sourceforge/mpc123/version%20"
+                                        version "/mpc123-" version ".tar.gz")
+                         (string-append "mirror://debian/pool/main/m/" name
+                                        "/" name "_" version ".orig.tar.gz")))
               (sha256
                (base32
                 "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1"))
               (patches (search-patches "mpc123-initialize-ao.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda _
-                   (substitute* "Makefile"
-                     (("CC[[:blank:]]*:=.*")
-                      "CC := gcc\n")))
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out (assoc-ref outputs "out"))
-                           (bin (string-append out "/bin")))
-                      (mkdir-p bin)
-                      (install-file "mpc123" bin)))
-                  %standard-phases))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (substitute* "Makefile"
+               (("CC[[:blank:]]*:=.*")
+                "CC := gcc\n"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (mkdir-p bin)
+               (install-file "mpc123" bin)))))
        #:tests? #f))
-
     (native-inputs
      `(("gettext" ,gnu-gettext)))
     (inputs
      `(("libao" ,ao)
        ("libmpcdec" ,libmpcdec)))
-    (home-page "http://mpc123.sourceforge.net/")
+    (home-page "https://github.com/bucciarati/mpc123")
     (synopsis "Audio player for Musepack-formatted files")
     (description
      "Mpc123 is a command-line player for files in the Musepack audio
@@ -456,7 +457,7 @@ compression format (.mpc files).")
 (define-public eyed3
   (package
     (name "eyed3")
-    (version "0.7.8")
+    (version "0.7.9")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -464,7 +465,7 @@ compression format (.mpc files).")
                   version ".tar.gz"))
              (sha256
               (base32
-               "1nv7nhfn1d0qm7rgkzksbccgqisng8klf97np0nwaqwd5dbmdf86"))))
+               "08mzhqg3k63d244cgwd0y1xrb8x9m6b99ykyskpnwyxl4wxrgrzp"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index f2787ee2d1..d491aa605e 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -85,7 +85,7 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
@@ -437,10 +437,10 @@ Guile.")
 (define-public non-sequencer
   ;; The latest tagged release is three years old and uses a custom build
   ;; system, so we take the last commit affecting the "sequencer" directory.
-  (let ((commit "1d9bd576"))
+  (let ((commit "1d9bd576f6bf7ea240af5f7a60260592750af0dd"))
     (package
       (name "non-sequencer")
-      (version (string-append "1.9.5-" commit))
+      (version (string-append "1.9.5-" (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ffad1db2f2..ba8023aeaa 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
 ;;; Copyright   2016 John Darrington <jmd@gnu.org>
+;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,12 +27,25 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
-  #:use-module (gnu packages tls)
-  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages adns)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages mit-krb5)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages compression))
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages tls))
 
 (define-public macchanger
   (package
@@ -115,14 +129,14 @@ or server shell scripts with network connections.")
 (define-public zeromq
   (package
     (name "zeromq")
-    (version "4.0.5")
+    (version "4.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.zeromq.org/zeromq-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0arl8fy8d03xd5h0mgda1s5bajwg8iyh1kk4hd1420rpcxgkrj9v"))))
+                "00vvwhgcdr1lva2pavicvy92iad0hj8cf71n702hv6blw1kjj2z0"))))
     (build-system gnu-build-system)
     (home-page "http://zeromq.org")
     (synopsis "Library for message-based applications")
@@ -273,3 +287,54 @@ DNS queries are allowed.  The bandwidth is asymmetrical, with limited upstream
 and up to 1 Mbit/s downstream.")
     ;; src/md5.[ch] is released under the zlib license
     (license (list license:isc license:zlib))))
+
+(define-public wireshark
+  (package
+    (name "wireshark")
+    (version "2.0.3")
+    (synopsis "Network traffic analyzer")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32
+         "1z358k65frp9m0l07cppwxhvbcp1w9ya5sml87pzs8gyfmp3g5p1"))))
+    (build-system glib-or-gtk-build-system)
+    (inputs `(("bison" ,bison)
+              ("c-ares" ,c-ares)
+              ("flex" ,flex)
+              ("gnutls" ,gnutls)
+              ("gtk+" ,gtk+)
+              ("libcap" ,libcap)
+              ("libgcrypt" ,libgcrypt)
+              ("libnl" ,libnl)
+              ("libpcap" ,libpcap)
+              ("lua" ,lua)
+              ("krb5" ,mit-krb5)
+              ("openssl" ,openssl)
+              ("portaudio" ,portaudio)
+              ("sbc" ,sbc)
+              ("zlib" ,zlib)))
+    (native-inputs `(("perl" ,perl)
+                     ("pkg-config" ,pkg-config)
+                     ("python" ,python-wrapper)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares"))
+             (string-append "--with-krb5=" (assoc-ref %build-inputs "krb5"))
+             (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap"))
+             (string-append "--with-lua=" (assoc-ref %build-inputs "lua"))
+             (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap"))
+             (string-append "--with-portaudio="
+                             (assoc-ref %build-inputs "portaudio"))
+             (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
+             (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl"))
+             (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib"))
+             "--without-qt")))
+    (description "Wireshark is a network protocol analyzer, or @dfn{packet
+sniffer}, that lets you capture and interactively browse the contents of
+network frames.")
+    (license license:gpl2+)
+    (home-page "https://www.wireshark.org/")))
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 4ae25450e8..bb8bffc40d 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -39,16 +39,20 @@
 (define-public ntp
   (package
    (name "ntp")
-   (version "4.2.8p7")
+   (version "4.2.8p8")
    (source (origin
 	    (method url-fetch)
-	    (uri (string-append
-                  "http://archive.ntp.org/ntp4/ntp-"
-                  (version-major+minor version)
-                  "/ntp-" version ".tar.gz"))
+	    (uri (list (string-append
+                         "http://archive.ntp.org/ntp4/ntp-"
+                         (version-major+minor version)
+                         "/ntp-" version ".tar.gz")
+                       (string-append
+                         "https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-"
+                         (version-major+minor version)
+                         "/ntp-" version ".tar.gz")))
 	    (sha256
 	     (base32
-              "1p100856h17nb0kpnppy70nja57hbcc95h7shhxvw6mhl030rll1"))
+              "1vlpgd0dk2wkpmmf869sfxi8f46sfnmjgk51vl8n6vj5y2sx1cra"))
             (modules '((guix build utils)))
             (snippet
              '(begin
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 434fb132bb..a0a4b936db 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -38,7 +38,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages lynx)
   #:use-module (gnu packages perl)
@@ -386,7 +386,7 @@ It is developed using Objective Caml and Camlp5.")
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)
-       ("emacs" ,emacs-no-x)
+       ("emacs" ,emacs-minimal)
        ("texinfo" ,texinfo)))
     (inputs
      `(("host-emacs" ,emacs)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 314dc90888..46743fefb5 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -152,7 +152,7 @@
 
                        #t))))))
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("emacs" ,emacs-no-x)))      ;for guix.el
+                     ("emacs" ,emacs-minimal)))   ;for guix.el
     (inputs
      (let ((boot-guile (lambda (arch hash)
                          (origin
@@ -327,14 +327,15 @@ symlinks to the files in a common directory such as /usr/local.")
 (define-public rpm
   (package
     (name "rpm")
-    (version "4.12.0")
+    (version "4.12.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://rpm.org/releases/rpm-4.12.x/rpm-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "18hk47hc755nslvb7xkq4jb095z7va0nlcyxdpxayc4lmb8mq3bp"))))
+                "0a82ym8phx7g0f3k6smvxnvzh7yv857l42xafk49689kzhld5pbp"))
+              (patches (search-patches "rpm-CVE-2014-8118.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--with-external-db"   ;use the system's bdb
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 828bd26cf8..b0984a823e 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages freeipmi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mpi)
@@ -121,3 +123,30 @@ framework for starting, executing, and monitoring work (typically a parallel
 job) on a set of allocated nodes, and arbitrates contention for resources
 by managing a queue of pending work.")
    (license license:gpl2+)))
+
+(define-public slurm-drmaa
+  (package
+    (name "slurm-drmaa")
+    (version "1.0.7")
+    (source (origin
+              (method url-fetch)
+              (uri "http://apps.man.poznan.pl/trac/slurm-drmaa/downloads/9")
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0grw55hmny2mc4nc0y1arnvxd2k0dcdfn476kzs180fibjxgfw14"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("slurm" ,slurm)))
+    (native-inputs
+     `(("which" ,which)))
+    (home-page "http://apps.man.poznan.pl/trac/slurm-drmaa")
+    (synopsis "Distributed resource management application API for SLURM")
+    (description
+     "PSNC DRMAA for Simple Linux Utility for Resource Management (SLURM) is
+an implementation of Open Grid Forum DRMAA 1.0 (Distributed Resource
+Management Application API) specification for submission and control of jobs
+to SLURM.  Using DRMAA, grid applications builders, portal developers and ISVs
+can use the same high-level API to link their software with different
+cluster/resource management systems.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/a2ps-CVE-2001-1593.patch b/gnu/packages/patches/a2ps-CVE-2001-1593.patch
new file mode 100644
index 0000000000..17b7e7d932
--- /dev/null
+++ b/gnu/packages/patches/a2ps-CVE-2001-1593.patch
@@ -0,0 +1,69 @@
+Index: b/lib/routines.c
+===================================================================
+--- a/lib/routines.c
++++ b/lib/routines.c
+@@ -242,3 +242,50 @@
+   /* Don't complain if you can't unlink.  Who cares of a tmp file? */
+   unlink (filename);
+ }
++
++/*
++ * Securely generate a temp file, and make sure it gets
++ * deleted upon exit.
++ */
++static char **	tempfiles;
++static unsigned	ntempfiles;
++
++static void
++cleanup_tempfiles()
++{
++	while (ntempfiles--)
++		unlink(tempfiles[ntempfiles]);
++}
++
++char *
++safe_tempnam(const char *pfx)
++{
++	char	*dirname, *filename;
++	int	fd;
++
++	if (!(dirname = getenv("TMPDIR")))
++		dirname = "/tmp";
++
++	tempfiles = (char **) realloc(tempfiles,
++			(ntempfiles+1) * sizeof(char *));
++	if (tempfiles == NULL)
++		return NULL;
++
++	filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));
++	if (!filename)
++		return NULL;
++
++	sprintf(filename, "%s/%sXXXXXX", dirname, pfx);
++
++	if ((fd = mkstemp(filename)) < 0) {
++		free(filename);
++		return NULL;
++	}
++	close(fd);
++
++	if (ntempfiles == 0)
++		atexit(cleanup_tempfiles);
++	tempfiles[ntempfiles++] = filename;
++
++	return filename;
++}
+Index: b/lib/routines.h
+===================================================================
+--- a/lib/routines.h
++++ b/lib/routines.h
+@@ -255,7 +255,8 @@
+ /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */
+ #define tempname_ensure(Str)				\
+ do {							\
+-  (Str) = (Str) ? (Str) : tempnam (NULL, "a2_");	\
++  (Str) = (Str) ? (Str) : safe_tempnam("a2_");	\
+ } while (0)
++char * safe_tempnam(const char *);
+ 
+ #endif
diff --git a/gnu/packages/patches/a2ps-CVE-2014-0466.patch b/gnu/packages/patches/a2ps-CVE-2014-0466.patch
new file mode 100644
index 0000000000..85199e35b0
--- /dev/null
+++ b/gnu/packages/patches/a2ps-CVE-2014-0466.patch
@@ -0,0 +1,30 @@
+Description: CVE-2014-0466: fixps does not invoke gs with -dSAFER
+ A malicious PostScript file could delete files with the privileges of
+ the invoking user.
+Origin: vendor
+Bug-Debian: http://bugs.debian.org/742902
+Author: Salvatore Bonaccorso <carnil@debian.org>
+Last-Update: 2014-03-28
+
+--- a/contrib/fixps.in
++++ b/contrib/fixps.in
+@@ -389,7 +389,7 @@
+   	eval "$command" ;;
+       gs)
+         $verbose "$program: making a full rewrite of the file ($gs)." >&2
+-  	$gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
++  	$gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
+     esac
+   )
+ fi
+--- a/contrib/fixps.m4
++++ b/contrib/fixps.m4
+@@ -307,7 +307,7 @@
+   	eval "$command" ;;
+       gs)
+         $verbose "$program: making a full rewrite of the file ($gs)." >&2
+-  	$gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
++  	$gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
+     esac
+   )
+ fi
diff --git a/gnu/packages/patches/antiword-CVE-2014-8123.patch b/gnu/packages/patches/antiword-CVE-2014-8123.patch
new file mode 100644
index 0000000000..d8d346a634
--- /dev/null
+++ b/gnu/packages/patches/antiword-CVE-2014-8123.patch
@@ -0,0 +1,21 @@
+Description: Add check for buffer overflow with malformed input files
+ This was later re-found and became CVE-2014-8123. 
+Author: <eriks@debian.org>
+Bug-Debian: http://bugs.debian.org/407015
+Bug-Debian: https://bugs.debian.org/771768
+Forwarded: http://seclists.org/oss-sec/2014/q4/870
+Last-Update: 2016-01-11
+
+--- antiword-0.37~/wordole.c	2005-08-26 21:49:57.000000000 +0200
++++ antiword-0.37/wordole.c	2009-06-03 22:31:15.948014682 +0200
+@@ -259,6 +259,10 @@
+ 		}
+ 		tNameSize = (size_t)usGetWord(0x40, aucBytes);
+ 		tNameSize = (tNameSize + 1) / 2;
++		if ( tNameSize > sizeof(atPPSlist[iIndex].szName)) {
++			werr(0, "Name Size of PPS %d is too large", iIndex);
++			tNameSize = sizeof(atPPSlist[iIndex].szName);
++		}
+ 		vName2String(atPPSlist[iIndex].szName, aucBytes, tNameSize);
+ 		atPPSlist[iIndex].ucType = ucGetByte(0x42, aucBytes);
+ 		if (atPPSlist[iIndex].ucType == 5) {
diff --git a/gnu/packages/patches/devil-CVE-2009-3994.patch b/gnu/packages/patches/devil-CVE-2009-3994.patch
new file mode 100644
index 0000000000..e009a95c44
--- /dev/null
+++ b/gnu/packages/patches/devil-CVE-2009-3994.patch
@@ -0,0 +1,24 @@
+Fix CVE-2009-3994 (buffer overflow in GetUID() allows remote DOS or
+arbitrary code execution via crafted DICOM file).
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3994
+
+Copied from Fedora
+https://pkgs.fedoraproject.org/cgit/rpms/DevIL.git/tree/DevIL-1.7.8-CVE-2009-3994.patch?id=9c656a75393d6c455aef9f4968fbbee9c53f4fdb
+
+diff -up devil-1.7.8/src-IL/src/il_dicom.c~ devil-1.7.8/src-IL/src/il_dicom.c
+--- devil-1.7.8/src-IL/src/il_dicom.c~	2009-03-08 08:10:09.000000000 +0100
++++ devil-1.7.8/src-IL/src/il_dicom.c	2009-12-03 12:07:45.000000000 +0100
+@@ -427,9 +427,11 @@ ILboolean GetUID(ILubyte *UID)
+ 		return IL_FALSE;
+ 
+ 	ValLen = GetLittleUShort();
++	if (ValLen > 64)
++		return IL_FALSE;
+ 	if (iread(UID, ValLen, 1) != 1)
+ 		return IL_FALSE;
+-	UID[64] = 0;  // Just to make sure that our string is terminated.
++	UID[ValLen] = 0;  // Just to make sure that our string is terminated.
+ 
+ 	return IL_TRUE;
+ }
diff --git a/gnu/packages/patches/emacs-fix-scheme-indent-function.patch b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
new file mode 100644
index 0000000000..c5a426802c
--- /dev/null
+++ b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
@@ -0,0 +1,29 @@
+Fix 'scheme-indent-function' to indent s-expressions starting with a keyword
+properly, like this:
+
+(#:foo 1
+ #:bar 2)
+
+instead of like this:
+
+(#:foo 1
+       #:bar 2)
+
+The fix is made by Mark H Weaver <mhw@netris.org>:
+<http://www.netris.org/~mhw/scheme-indent-function.el>
+
+--- a/lisp/progmodes/scheme.el
++++ b/lisp/progmodes/scheme.el
+@@ -482,6 +482,12 @@
+ 			(> (length function) 3)
+ 			(string-match "\\`def" function)))
+ 	       (lisp-indent-defform state indent-point))
++              ((and (null method)
++                    (> (length function) 1)
++                    ;; The '#' in '#:' seems to get lost, not sure why
++                    (string-match "\\`:" function))
++               (let ((lisp-body-indent 1))
++                 (lisp-indent-defform state indent-point)))
+ 	      ((integerp method)
+ 	       (lisp-indent-specform method state
+ 				     indent-point normal-indent))
diff --git a/gnu/packages/patches/gd-CVE-2016-3074.patch b/gnu/packages/patches/gd-CVE-2016-3074.patch
deleted file mode 100644
index a90c51d77b..0000000000
--- a/gnu/packages/patches/gd-CVE-2016-3074.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Adapted from upstream commit 2bb97f407c1145c850416a3bfbcc8cf124e68a19
-(gd2: handle corrupt images better (CVE-2016-3074)).
-
-This patch omits the upstream changes to '.gitignore', and the test
-added in files 'tests/Makefile.am', 'tests/gd2/gd2_read_corrupt.c', and
-'tests/gd2/invalid_neg_size.gd2'.
-
-We omit the test because its input data,
-'tests/gd2/invalid_neg_size.gd2', is provided as a binary Git diff,
-which is not supported by `patch`.
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3074
-https://github.com/libgd/libgd/commit/2bb97f407c1145c850416a3bfbcc8cf124e68a19
----
- .gitignore                     |   1 +
- src/gd_gd2.c                   |   2 ++
- tests/Makefile.am              |   3 ++-
- tests/gd2/gd2_read_corrupt.c   |  25 +++++++++++++++++++++++++
- tests/gd2/invalid_neg_size.gd2 | Bin 0 -> 1676 bytes
- 5 files changed, 30 insertions(+), 1 deletion(-)
- create mode 100644 tests/gd2/gd2_read_corrupt.c
- create mode 100644 tests/gd2/invalid_neg_size.gd2
-
-diff --git a/src/gd_gd2.c b/src/gd_gd2.c
-index 6f28461..a50b33d 100644
---- a/src/gd_gd2.c
-+++ b/src/gd_gd2.c
-@@ -165,6 +165,8 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
- 			if (gdGetInt (&cidx[i].size, in) != 1) {
- 				goto fail2;
- 			};
-+			if (cidx[i].offset < 0 || cidx[i].size < 0)
-+				goto fail2;
- 		};
- 		*chunkIdx = cidx;
- 	};
diff --git a/gnu/packages/patches/gegl-CVE-2012-4433.patch b/gnu/packages/patches/gegl-CVE-2012-4433.patch
new file mode 100644
index 0000000000..7352b78dba
--- /dev/null
+++ b/gnu/packages/patches/gegl-CVE-2012-4433.patch
@@ -0,0 +1,117 @@
+From: Michael Gilbert <mgilbert@debian.org>
+Date: Mon, 9 Sep 2013 17:34:32 +0200
+Subject: Fix_CVE-2012-4433
+
+Multiple buffer overflow issues.
+
+Closes: #692435
+---
+ operations/external/ppm-load.c | 62 ++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 53 insertions(+), 9 deletions(-)
+
+diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c
+index efe6d56..465096d 100644
+--- a/operations/external/ppm-load.c
++++ b/operations/external/ppm-load.c
+@@ -36,6 +36,7 @@ gegl_chant_file_path (path, _("File"), "", _("Path of file to load."))
+ #include "gegl-chant.h"
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <errno.h>
+ 
+ typedef enum {
+   PIXMAP_ASCII  = 51,
+@@ -44,8 +45,8 @@ typedef enum {
+ 
+ typedef struct {
+ 	map_type   type;
+-	gint       width;
+-	gint       height;
++	glong      width;
++	glong      height;
+         gsize      numsamples; /* width * height * channels */
+         gsize      bpc;        /* bytes per channel */
+ 	guchar    *data;
+@@ -82,12 +83,33 @@ ppm_load_read_header(FILE       *fp,
+       }
+ 
+     /* Get Width and Height */
+-    img->width  = strtol (header,&ptr,0);
+-    img->height = atoi (ptr);
+-    img->numsamples = img->width * img->height * CHANNEL_COUNT;
++    errno = 0;
++    img->width  = strtol (header,&ptr,10);
++    if (errno)
++      {
++        g_warning ("Error reading width: %s", strerror(errno));
++        return FALSE;
++      }
++    else if (img->width < 0)
++      {
++        g_warning ("Error: width is negative");
++        return FALSE;
++      }
++
++    img->height = strtol (ptr,&ptr,10);
++    if (errno)
++      {
++        g_warning ("Error reading height: %s", strerror(errno));
++        return FALSE;
++      }
++    else if (img->width < 0)
++      {
++        g_warning ("Error: height is negative");
++        return FALSE;
++      }
+ 
+     fgets (header,MAX_CHARS_IN_ROW,fp);
+-    maxval = strtol (header,&ptr,0);
++    maxval = strtol (header,&ptr,10);
+ 
+     if ((maxval != 255) && (maxval != 65535))
+       {
+@@ -109,6 +131,16 @@ ppm_load_read_header(FILE       *fp,
+       g_warning ("%s: Programmer stupidity error", G_STRLOC);
+     }
+ 
++    /* Later on, img->numsamples is multiplied with img->bpc to allocate
++     * memory. Ensure it doesn't overflow. */
++    if (!img->width || !img->height ||
++        G_MAXSIZE / img->width / img->height / CHANNEL_COUNT < img->bpc)
++      {
++        g_warning ("Illegal width/height: %ld/%ld", img->width, img->height);
++        return FALSE;
++      }
++    img->numsamples = img->width * img->height * CHANNEL_COUNT;
++
+     return TRUE;
+ }
+ 
+@@ -229,12 +261,24 @@ process (GeglOperation       *operation,
+   if (!ppm_load_read_header (fp, &img))
+     goto out;
+ 
+-  rect.height = img.height;
+-  rect.width = img.width;
+-
+   /* Allocating Array Size */
++
++  /* Should use g_try_malloc(), but this causes crashes elsewhere because the
++   * error signalled by returning FALSE isn't properly acted upon. Therefore
++   * g_malloc() is used here which aborts if the requested memory size can't be
++   * allocated causing a controlled crash. */
+   img.data = (guchar*) g_malloc (img.numsamples * img.bpc);
+ 
++  /* No-op without g_try_malloc(), see above. */
++  if (! img.data)
++    {
++      g_warning ("Couldn't allocate %" G_GSIZE_FORMAT " bytes, giving up.", ((gsize)img.numsamples * img.bpc));
++      goto out;
++    }
++
++  rect.height = img.height;
++  rect.width = img.width;
++
+   switch (img.bpc)
+     {
+     case 1:
diff --git a/gnu/packages/patches/icedtea-remove-overrides.patch b/gnu/packages/patches/icedtea-remove-overrides.patch
new file mode 100644
index 0000000000..e4d68a9e58
--- /dev/null
+++ b/gnu/packages/patches/icedtea-remove-overrides.patch
@@ -0,0 +1,291 @@
+Upstream patch:
+http://icedtea.classpath.org/hg/icedtea6/rev/60be25a84f2d
+
+Fixes build failure:
+http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2954
+
+Changes to the files 'NEWS' and 'ChangeLog' are omitted here.
+
+# HG changeset patch
+# User Andrew John Hughes <gnu.andrew@redhat.com>
+# Date 1463144538 -3600
+# Node ID 60be25a84f2dd2bce8ff277cc3854cca1b3f7931
+# Parent  c23ceebb80a19a33316f1e743eb93bdf79aac220
+PR2954: ecj/override.patch is missing new @Overrides in RMIJRMPServerImpl.java
+
+2016-05-13  Andrew John Hughes  <gnu.andrew@redhat.com>
+
+	PR2954: ecj/override.patch is missing new
+	@Overrides in RMIJRMPServerImpl.java
+	* patches/ecj/override.patch:
+	Add cases in RMIJRMPServerImpl and others
+	which show up when source/target 5 is
+	used in the rt-class-files pre-build.
+	* patches/openjdk/8014205-blank_swing_dialogs_windows.patch:
+	Remove addition of @Override.
+
+diff -r c23ceebb80a1 -r 60be25a84f2d patches/ecj/override.patch
+--- a/patches/ecj/override.patch	Sun May 08 21:28:21 2016 +0100
++++ b/patches/ecj/override.patch	Fri May 13 14:02:18 2016 +0100
+@@ -362,3 +362,240 @@
+              public Class<?> run() {
+                  try {
+                      ReflectUtil.checkPackageAccess(className);
++diff -r 545db1dd8c2a src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Thu May 12 01:30:54 2016 +0100
++@@ -1870,7 +1870,6 @@
++ 
++     private ModifiableClassLoaderRepository getInstantiatorCLR() {
++         return AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() {
++-            @Override
++             public ModifiableClassLoaderRepository run() {
++                 return instantiator != null ? instantiator.getClassLoaderRepository() : null;
++             }
++diff -r 545db1dd8c2a src/share/classes/com/sun/media/sound/Platform.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/media/sound/Platform.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/media/sound/Platform.java	Thu May 12 01:30:54 2016 +0100
++@@ -160,7 +160,6 @@
++         try {
++             // load the main library
++             AccessController.doPrivileged(new PrivilegedAction<Void>() {
++-                @Override
++                 public Void run() {
++                     System.loadLibrary(libNameMain);
++                     return null;
++@@ -182,7 +181,6 @@
++             final String lib = st.nextToken();
++             try {
++                 AccessController.doPrivileged(new PrivilegedAction<Void>() {
++-                    @Override
++                     public Void run() {
++                         System.loadLibrary(lib);
++                         return null;
++diff -r 545db1dd8c2a src/share/classes/java/awt/EventQueue.java
++--- openjdk-ecj/jdk/src/share/classes/java/awt/EventQueue.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/awt/EventQueue.java	Thu May 12 01:30:54 2016 +0100
++@@ -190,7 +190,6 @@
++                     EventQueue.invokeAndWait(source, r);
++                 }
++ 
++-                @Override
++                 public long getMostRecentEventTime(EventQueue eventQueue) {
++                     return eventQueue.getMostRecentEventTimeImpl();
++                 }
++diff -r 545db1dd8c2a src/share/classes/java/io/ObjectInputStream.java
++--- openjdk-ecj/jdk/src/share/classes/java/io/ObjectInputStream.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/io/ObjectInputStream.java	Thu May 12 01:30:54 2016 +0100
++@@ -3571,7 +3571,6 @@
++     }
++     static {
++         SharedSecrets.setJavaObjectInputStreamAccess(new JavaObjectInputStreamAccess() {
++-            @Override
++             public void setValidator(ObjectInputStream ois, ObjectStreamClassValidator validator) {
++                 ObjectInputStream.setValidator(ois, validator);
++             }
++diff -r 545db1dd8c2a src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java
++--- openjdk-ecj/jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java	Thu May 12 01:30:54 2016 +0100
++@@ -64,7 +64,6 @@
++         final String propName = "sun.rmi.server.invocationhandler.allowFinalizeInvocation";
++         String allowProp = java.security.AccessController.doPrivileged(
++             new PrivilegedAction<String>() {
++-                @Override
++                 public String run() {
++                     return System.getProperty(propName);
++                 }
++diff -r 545db1dd8c2a src/share/classes/sun/awt/image/SunVolatileImage.java
++--- openjdk-ecj/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Thu May 12 01:30:54 2016 +0100
++@@ -262,7 +262,6 @@
++      *
++      * @see sun.java2d.DestSurfaceProvider#getDestSurface
++      */
++-    @Override
++     public Surface getDestSurface() {
++         return volSurfaceManager.getPrimarySurfaceData();
++     }
++diff -r 545db1dd8c2a src/share/classes/sun/java2d/SunGraphics2D.java
++--- openjdk-ecj/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Thu May 12 01:30:54 2016 +0100
++@@ -3294,7 +3294,6 @@
++      *
++      * @see sun.java2d.DestSurfaceProvider#getDestSurface
++      */
++-    @Override
++     public Surface getDestSurface() {
++         return surfaceData;
++     }
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/server/UnicastServerRef.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	Thu May 12 01:30:54 2016 +0100
++@@ -630,12 +630,10 @@
++             this.callID = callID;
++         }
++ 
++-        @Override
++         public void validateDescriptor(ObjectStreamClass descriptor) {
++             descriptorCheck.check(method, descriptor, parameterIndex, callID);
++         }
++ 
++-        @Override
++         public void checkProxyInterfaceNames(String[] ifaces) {
++             descriptorCheck.checkProxyClass(method, ifaces, parameterIndex, callID);
++         }
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/transport/Transport.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/Transport.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/Transport.java	Thu May 12 01:30:54 2016 +0100
++@@ -133,7 +133,6 @@
++      */
++     private static void setContextClassLoader(final ClassLoader ccl) {
++         AccessController.doPrivileged(new PrivilegedAction<Void> () {
++-                @Override
++                 public Void run() {
++                     Thread.currentThread().setContextClassLoader(ccl);
++                     return null;
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Thu May 12 01:30:54 2016 +0100
++@@ -676,7 +676,6 @@
++                           connectionCount.incrementAndGet() +
++                           ")-" + remoteHost);
++                 AccessController.doPrivileged(new PrivilegedAction<Void>() {
++-                    @Override
++                     public Void run() {
++                         run0();
++                         return null;
++diff -r 545db1dd8c2a src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java
++--- openjdk-ecj/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	Thu May 12 01:30:54 2016 +0100
++@@ -92,7 +92,6 @@
++         return this;
++     }
++ 
++-    @Override
++     public SurfaceData createManagedSurface(int w, int h, int transparency) {
++         return GLXSurfaceData.createData(this, w, h,
++                                          getColorModel(transparency),
++@@ -165,12 +164,10 @@
++      * Returns true if the provided capability bit is present for this config.
++      * See OGLContext.java for a list of supported capabilities.
++      */
++-    @Override
++     public final boolean isCapPresent(int cap) {
++         return ((oglCaps.getCaps() & cap) != 0);
++     }
++ 
++-    @Override
++     public final long getNativeConfigInfo() {
++         return pConfigInfo;
++     }
++@@ -180,7 +177,6 @@
++      *
++      * @see sun.java2d.pipe.hw.BufferedContextProvider#getContext
++      */
++-    @Override
++     public final OGLContext getContext() {
++         return context;
++     }
++@@ -394,7 +390,6 @@
++      *
++      * @see sun.java2d.pipe.hw.AccelGraphicsConfig#createCompatibleVolatileImage
++      */
++-    @Override
++     public VolatileImage
++         createCompatibleVolatileImage(int width, int height,
++                                       int transparency, int type)
++@@ -434,17 +429,14 @@
++      *
++      * @see sun.java2d.pipe.hw.AccelGraphicsConfig#getContextCapabilities
++      */
++-    @Override
++     public ContextCapabilities getContextCapabilities() {
++         return oglCaps;
++     }
++ 
++-    @Override
++     public void addDeviceEventListener(AccelDeviceEventListener l) {
++         AccelDeviceEventNotifier.addListener(l, screen.getScreen());
++     }
++ 
++-    @Override
++     public void removeDeviceEventListener(AccelDeviceEventListener l) {
++         AccelDeviceEventNotifier.removeListener(l);
++     }
++diff -r 545db1dd8c2a src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java	Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java	Thu May 12 01:51:42 2016 +0100
++@@ -236,7 +236,6 @@
++         final MBeanInstantiator fInstantiator = instantiator;
++         this.secureClr = new
++             SecureClassLoaderRepository(AccessController.doPrivileged(new PrivilegedAction<ClassLoaderRepository>() {
++-                @Override
++                 public ClassLoaderRepository run() {
++                     return fInstantiator.getClassLoaderRepository();
++                 }
++@@ -1257,7 +1256,6 @@
++         ClassLoader myLoader = outerShell.getClass().getClassLoader();
++         final ModifiableClassLoaderRepository loaders = AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() {
++ 
++-            @Override
++             public ModifiableClassLoaderRepository run() {
++                 return instantiator.getClassLoaderRepository();
++             }
++diff -r b72e7b89dda9 src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java
++--- openjdk-ecj/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	Thu Sep 08 11:00:33 2011 -0700
+++++ openjdk-ecj/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	Thu May 12 16:39:37 2016 +0100
++@@ -227,17 +227,14 @@
++             allowedTypes = credentialsTypes;
++         }
++ 
++-        @Override
++         public String getVersion() throws RemoteException {
++             return impl.getVersion();
++         }
++ 
++-        @Override
++         public RMIConnection newClient(Object credentials) throws IOException {
++             return impl.newClient(credentials);
++         }
++ 
++-        @Override
++         public void check(Method method, ObjectStreamClass descriptor,
++                 int paramIndex, int callID) {
++ 
++@@ -247,7 +244,6 @@
++             }
++         }
++ 
++-        @Override
++         public void checkProxyClass(Method method, String[] ifaces,
++                 int paramIndex, int callID) {
++             if (ifaces != null && ifaces.length > 0) {
++@@ -259,7 +255,6 @@
++             }
++         }
++ 
++-        @Override
++         public void end(int callID) {
++             /* Do nothing */
++         }
+diff -r c23ceebb80a1 -r 60be25a84f2d patches/openjdk/8014205-blank_swing_dialogs_windows.patch
+--- a/patches/openjdk/8014205-blank_swing_dialogs_windows.patch	Sun May 08 21:28:21 2016 +0100
++++ b/patches/openjdk/8014205-blank_swing_dialogs_windows.patch	Fri May 13 14:02:18 2016 +0100
+@@ -116,7 +116,7 @@
+              {
+                  if (numBands == 3 && !ccm.hasAlpha()) {
+                      imageType = TYPE_3BYTE_BGR;
+-@@ -804,6 +801,27 @@
++@@ -804,6 +801,26 @@
+          }   // else if ((raster instanceof ByteComponentRaster) &&
+      }
+  
+@@ -129,7 +129,6 @@
+ +                new PrivilegedAction<Boolean>()
+ +        {
+ +
+-+            @Override
+ +            public Boolean run() {
+ +                final ClassLoader std = System.class.getClassLoader();
+ +
+
diff --git a/gnu/packages/patches/id3lib-CVE-2007-4460.patch b/gnu/packages/patches/id3lib-CVE-2007-4460.patch
new file mode 100644
index 0000000000..36c84179fc
--- /dev/null
+++ b/gnu/packages/patches/id3lib-CVE-2007-4460.patch
@@ -0,0 +1,54 @@
+This patch fixes an issues where temporary files were created in an insecure
+way.
+
+It was first intruduced in version 3.8.3-7 and fixes
+http://bugs.debian.org/438540
+--- a/src/tag_file.cpp
++++ b/src/tag_file.cpp
+@@ -242,8 +242,8 @@
+     strcpy(sTempFile, filename.c_str());
+     strcat(sTempFile, sTmpSuffix.c_str());
+ 
+-#if ((defined(__GNUC__) && __GNUC__ >= 3  ) || !defined(HAVE_MKSTEMP))
+-    // This section is for Windows folk && gcc 3.x folk
++#if !defined(HAVE_MKSTEMP)
++    // This section is for Windows folk
+     fstream tmpOut;
+     createFile(sTempFile, tmpOut);
+ 
+@@ -257,7 +257,7 @@
+       tmpOut.write((char *)tmpBuffer, nBytes);
+     }
+ 
+-#else //((defined(__GNUC__) && __GNUC__ >= 3  ) || !defined(HAVE_MKSTEMP))
++#else //!defined(HAVE_MKSTEMP)
+ 
+     // else we gotta make a temp file, copy the tag into it, copy the
+     // rest of the old file after the tag, delete the old file, rename
+@@ -270,7 +270,7 @@
+       //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file");
+     }
+ 
+-    ofstream tmpOut(fd);
++    ofstream tmpOut(sTempFile);
+     if (!tmpOut)
+     {
+       tmpOut.close();
+@@ -285,14 +285,14 @@
+     uchar tmpBuffer[BUFSIZ];
+     while (file)
+     {
+-      file.read(tmpBuffer, BUFSIZ);
++      file.read((char *)tmpBuffer, BUFSIZ);
+       size_t nBytes = file.gcount();
+-      tmpOut.write(tmpBuffer, nBytes);
++      tmpOut.write((char *)tmpBuffer, nBytes);
+     }
+ 
+     close(fd); //closes the file
+ 
+-#endif ////((defined(__GNUC__) && __GNUC__ >= 3  ) || !defined(HAVE_MKSTEMP))
++#endif ////!defined(HAVE_MKSTEMP)
+ 
+     tmpOut.close();
+     file.close();
diff --git a/gnu/packages/patches/jansson-CVE-2016-4425.patch b/gnu/packages/patches/jansson-CVE-2016-4425.patch
new file mode 100644
index 0000000000..ebe9aa7809
--- /dev/null
+++ b/gnu/packages/patches/jansson-CVE-2016-4425.patch
@@ -0,0 +1,125 @@
+From 64ce0ad3731ebd77e02897b07920eadd0e2cc318 Mon Sep 17 00:00:00 2001
+From: Dmitry Janushkevich <gauri@tut.by>
+Date: Mon, 2 May 2016 13:59:26 +0200
+Subject: [PATCH] Fix for issue #282
+
+The fix limits recursion depths when parsing arrays and objects.
+The limit is configurable via the `JSON_PARSER_MAX_DEPTH` setting
+within `jansson_config.h` and is set by default to 2048.
+
+Update the RFC conformance document to note the limit; the RFC
+allows limits to be set by the implementation so nothing has
+actually changed w.r.t. conformance state.
+
+Reported by Gustavo Grieco.
+---
+ android/jansson_config.h                  |  4 ++++
+ cmake/jansson_config.h.cmake              |  4 ++++
+ doc/conformance.rst                       | 10 ++++++++++
+ src/jansson_config.h.in                   |  4 ++++
+ src/load.c                                | 10 ++++++++++
+ test/suites/invalid/recursion-depth/error |  2 ++
+ test/suites/invalid/recursion-depth/input |  1 +
+ 7 files changed, 35 insertions(+)
+ create mode 100644 test/suites/invalid/recursion-depth/error
+ create mode 100644 test/suites/invalid/recursion-depth/input
+
+--- a/android/jansson_config.h
++++ b/android/jansson_config.h
+@@ -36,4 +36,8 @@
+    otherwise to 0. */
+ #define JSON_HAVE_LOCALECONV 0
+ 
++/* Maximum recursion depth for parsing JSON input.
++   This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+ #endif
+--- a/cmake/jansson_config.h.cmake
++++ b/cmake/jansson_config.h.cmake
+@@ -60,5 +60,9 @@
+ #define JSON_HAVE_LOCALECONV @JSON_HAVE_LOCALECONV@
+ 
+ 
++/* Maximum recursion depth for parsing JSON input.
++   This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+ 
+ #endif
+--- a/doc/conformance.rst
++++ b/doc/conformance.rst
+@@ -108,3 +108,13 @@
+ are implicitly handled via the ordinary C type coercion rules (subject
+ to overflow semantics). Also, no support or hooks are provided for any
+ supplemental "bignum" type add-on packages.
++
++Depth of nested values
++----------------------
++
++To avoid stack exhaustion, Jansson currently limits the nesting depth
++for arrays and objects to a certain value (default: 2048), defined as
++a macro ``JSON_PARSER_MAX_DEPTH`` within ``jansson_config.h``.
++
++The limit is allowed to be set by the RFC; there is no recommended value
++or required minimum depth to be supported.
+--- a/src/jansson_config.h.in
++++ b/src/jansson_config.h.in
+@@ -36,4 +36,8 @@
+    otherwise to 0. */
+ #define JSON_HAVE_LOCALECONV @json_have_localeconv@
+ 
++/* Maximum recursion depth for parsing JSON input.
++   This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+ #endif
+--- a/src/load.c
++++ b/src/load.c
+@@ -61,6 +61,7 @@
+ typedef struct {
+     stream_t stream;
+     strbuffer_t saved_text;
++    size_t depth;
+     int token;
+     union {
+         struct {
+@@ -800,6 +801,12 @@
+     json_t *json;
+     double value;
+ 
++    lex->depth++;
++    if(lex->depth > JSON_PARSER_MAX_DEPTH) {
++        error_set(error, lex, "maximum parsing depth reached");
++        return NULL;
++    }
++
+     switch(lex->token) {
+         case TOKEN_STRING: {
+             const char *value = lex->value.string.val;
+@@ -870,6 +877,7 @@
+     if(!json)
+         return NULL;
+ 
++    lex->depth--;
+     return json;
+ }
+ 
+@@ -877,6 +885,8 @@
+ {
+     json_t *result;
+ 
++    lex->depth = 0;
++
+     lex_scan(lex, error);
+     if(!(flags & JSON_DECODE_ANY)) {
+         if(lex->token != '[' && lex->token != '{') {
+--- /dev/null
++++ b/test/suites/invalid/recursion-depth/error
+@@ -0,0 +1,2 @@
++1 2049 2049
++maximum parsing depth reached near '['
+--- /dev/null
++++ b/test/suites/invalid/recursion-depth/input
+@@ -0,0 +1 @@
++[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
diff --git a/gnu/packages/patches/libtar-CVE-2013-4420.patch b/gnu/packages/patches/libtar-CVE-2013-4420.patch
new file mode 100644
index 0000000000..cc64711ae9
--- /dev/null
+++ b/gnu/packages/patches/libtar-CVE-2013-4420.patch
@@ -0,0 +1,118 @@
+Author: Raphael Geissert <geissert@debian.org>
+Bug-Debian: https://bugs.debian.org/731860
+Description: Avoid directory traversal when extracting archives 
+ by skipping over leading slashes and any prefix containing ".." components.
+Forwarded: yes
+
+--- a/lib/decode.c
++++ b/lib/decode.c
+@@ -22,6 +22,36 @@
+ #endif
+ 
+ 
++char *
++safer_name_suffix (char const *file_name)
++{
++	char const *p, *t;
++	p = t = file_name;
++	while (*p == '/') t = ++p;
++	while (*p)
++	{
++		while (p[0] == '.' && p[0] == p[1] && p[2] == '/')
++		{
++			p += 3;
++			t = p;
++		}
++		/* advance pointer past the next slash */
++		while (*p && (p++)[0] != '/');
++	}
++
++	if (!*t)
++	{
++		t = ".";
++	}
++
++	if (t != file_name)
++	{
++		/* TODO: warn somehow that the path was modified */
++	}
++	return (char*)t;
++}
++
++
+ /* determine full path name */
+ char *
+ th_get_pathname(TAR *t)
+@@ -29,17 +59,17 @@ th_get_pathname(TAR *t)
+ 	static char filename[MAXPATHLEN];
+ 
+ 	if (t->th_buf.gnu_longname)
+-		return t->th_buf.gnu_longname;
++		return safer_name_suffix(t->th_buf.gnu_longname);
+ 
+ 	if (t->th_buf.prefix[0] != '\0')
+ 	{
+ 		snprintf(filename, sizeof(filename), "%.155s/%.100s",
+ 			 t->th_buf.prefix, t->th_buf.name);
+-		return filename;
++		return safer_name_suffix(filename);
+ 	}
+ 
+ 	snprintf(filename, sizeof(filename), "%.100s", t->th_buf.name);
+-	return filename;
++	return safer_name_suffix(filename);
+ }
+ 
+ 
+--- a/lib/extract.c
++++ b/lib/extract.c
+@@ -298,14 +298,14 @@ tar_extract_hardlink(TAR * t, char *real
+ 	if (mkdirhier(dirname(filename)) == -1)
+ 		return -1;
+ 	libtar_hashptr_reset(&hp);
+-	if (libtar_hash_getkey(t->h, &hp, th_get_linkname(t),
++	if (libtar_hash_getkey(t->h, &hp, safer_name_suffix(th_get_linkname(t)),
+ 			       (libtar_matchfunc_t)libtar_str_match) != 0)
+ 	{
+ 		lnp = (char *)libtar_hashptr_data(&hp);
+ 		linktgt = &lnp[strlen(lnp) + 1];
+ 	}
+ 	else
+-		linktgt = th_get_linkname(t);
++		linktgt = safer_name_suffix(th_get_linkname(t));
+ 
+ #ifdef DEBUG
+ 	printf("  ==> extracting: %s (link to %s)\n", filename, linktgt);
+@@ -343,9 +343,9 @@ tar_extract_symlink(TAR *t, char *realna
+ 
+ #ifdef DEBUG
+ 	printf("  ==> extracting: %s (symlink to %s)\n",
+-	       filename, th_get_linkname(t));
++	       filename, safer_name_suffix(th_get_linkname(t)));
+ #endif
+-	if (symlink(th_get_linkname(t), filename) == -1)
++	if (symlink(safer_name_suffix(th_get_linkname(t)), filename) == -1)
+ 	{
+ #ifdef DEBUG
+ 		perror("symlink()");
+--- a/lib/internal.h
++++ b/lib/internal.h
+@@ -15,3 +15,4 @@
+ 
+ #include <libtar.h>
+ 
++char* safer_name_suffix(char const*);
+--- a/lib/output.c
++++ b/lib/output.c
+@@ -123,9 +123,9 @@ th_print_long_ls(TAR *t)
+ 		else
+ 			printf(" link to ");
+ 		if ((t->options & TAR_GNU) && t->th_buf.gnu_longlink != NULL)
+-			printf("%s", t->th_buf.gnu_longlink);
++			printf("%s", safer_name_suffix(t->th_buf.gnu_longlink));
+ 		else
+-			printf("%.100s", t->th_buf.linkname);
++			printf("%.100s", safer_name_suffix(t->th_buf.linkname));
+ 	}
+ 
+ 	putchar('\n');
diff --git a/gnu/packages/patches/libyaml-CVE-2014-9130.patch b/gnu/packages/patches/libyaml-CVE-2014-9130.patch
new file mode 100644
index 0000000000..800358c0d6
--- /dev/null
+++ b/gnu/packages/patches/libyaml-CVE-2014-9130.patch
@@ -0,0 +1,30 @@
+Fixes CVE-2014-9130
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9130
+
+Upstream source:
+https://bitbucket.org/xi/libyaml/commits/2b9156756423e967cfd09a61d125d883fca6f4f2
+
+# HG changeset patch
+# User Kirill Simonov <xi@resolvent.net>
+# Date 1417197312 21600
+# Node ID 2b9156756423e967cfd09a61d125d883fca6f4f2
+# Parent  053f53a381ff6adbbc93a31ab7fdee06a16c8a33
+Removed invalid simple key assertion (thank to Jonathan Gray).
+
+diff --git a/src/scanner.c b/src/scanner.c
+--- a/src/scanner.c
++++ b/src/scanner.c
+@@ -1106,13 +1106,6 @@
+             && parser->indent == (ptrdiff_t)parser->mark.column);
+ 
+     /*
+-     * A simple key is required only when it is the first token in the current
+-     * line.  Therefore it is always allowed.  But we add a check anyway.
+-     */
+-
+-    assert(parser->simple_key_allowed || !required);    /* Impossible. */
+-
+-    /*
+      * If the current position may start a simple key, save it.
+      */
+ 
diff --git a/gnu/packages/patches/lua-CVE-2014-5461.patch b/gnu/packages/patches/lua-CVE-2014-5461.patch
new file mode 100644
index 0000000000..bc72ef14ad
--- /dev/null
+++ b/gnu/packages/patches/lua-CVE-2014-5461.patch
@@ -0,0 +1,20 @@
+From: Enrico Tassi <gareuselesinge@debian.org>
+Date: Tue, 26 Aug 2014 16:20:55 +0200
+Subject: Fix stack overflow in vararg functions
+
+---
+ src/ldo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ldo.c b/src/ldo.c
+index d1bf786..30333bf 100644
+--- a/src/ldo.c
++++ b/src/ldo.c
+@@ -274,7 +274,7 @@ int luaD_precall (lua_State *L, StkId func, int nresults) {
+     CallInfo *ci;
+     StkId st, base;
+     Proto *p = cl->p;
+-    luaD_checkstack(L, p->maxstacksize);
++    luaD_checkstack(L, p->maxstacksize + p->numparams);
+     func = restorestack(L, funcr);
+       base = func + 1;
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4409.patch b/gnu/packages/patches/mcrypt-CVE-2012-4409.patch
new file mode 100644
index 0000000000..60cf8e0430
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4409.patch
@@ -0,0 +1,33 @@
+From 4876e3a692739bb9ca00d0f500fd5f4b3eb16ce3 Mon Sep 17 00:00:00 2001
+From: Tom Callaway <spot@fedoraproject.org>
+Date: Fri, 7 Sep 2012 11:39:29 -0400
+Subject: apply fix for CVE-2012-4409 (thanks to Raphael Geissert)
+
+---
+ mcrypt-CVE-2012-4409.patch | 12 ++++++++++++
+ mcrypt.spec                | 10 +++++++++-
+ 2 files changed, 21 insertions(+), 1 deletion(-)
+ create mode 100644 mcrypt-CVE-2012-4409.patch
+
+diff --git a/mcrypt-CVE-2012-4409.patch b/mcrypt-CVE-2012-4409.patch
+new file mode 100644
+index 0000000..747f428
+--- /dev/null
++++ b/mcrypt-CVE-2012-4409.patch
+@@ -0,0 +1,12 @@
++diff -up mcrypt-2.6.8/src/extra.c.CVE-2012-4409 mcrypt-2.6.8/src/extra.c
++--- mcrypt-2.6.8/src/extra.c.CVE-2012-4409	2012-09-07 11:00:55.906870746 -0400
+++++ mcrypt-2.6.8/src/extra.c	2012-09-07 11:00:27.967858365 -0400
++@@ -242,6 +242,8 @@ int check_file_head(FILE * fstream, char
++ 			if (m_getbit(0, sflag) != 0) { /* if the first bit is set */
++ 				*salt_size = m_setbit(0, sflag, 0);
++ 				if (*salt_size > 0) {
+++					if (*salt_size > sizeof(tmp_buf))
+++						err_quit(_("Salt is too long\n"));
++ 					fread(tmp_buf, 1, *salt_size,
++ 					      fstream);
++ 					memmove(salt, tmp_buf, *salt_size);
+ 
+-- 
+cgit v0.12
+
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4426.patch b/gnu/packages/patches/mcrypt-CVE-2012-4426.patch
new file mode 100644
index 0000000000..61c197b0c9
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4426.patch
@@ -0,0 +1,36 @@
+diff --git a/mcrypt-CVE-2012-4426.patch b/mcrypt-CVE-2012-4426.patch
+new file mode 100644
+index 0000000..747f428
+--- mcrypt-2.6.8/src/errors.c
++++ mcrypt-2.6.8/src/errors.c
+@@ -25,24 +25,24 @@
+ 
+ void err_quit(char *errmsg)
+ {
+-	fprintf(stderr, errmsg);
++	fprintf(stderr, "%s", errmsg);
+ 	exit(-1);
+ }
+ 
+ void err_warn(char *errmsg)
+ {
+ 	if (quiet <= 1)
+-		fprintf(stderr, errmsg);
++		fprintf(stderr, "%s", errmsg);
+ }
+ 
+ void err_info(char *errmsg)
+ {
+ 	if (quiet == 0)
+-		fprintf(stderr, errmsg);
++		fprintf(stderr, "%s", errmsg);
+ }
+ 
+ void err_crit(char *errmsg)
+ {
+ 	if (quiet <= 2)
+-		fprintf(stderr, errmsg);
++		fprintf(stderr, "%s", errmsg);
+ }
+
+---
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4527.patch b/gnu/packages/patches/mcrypt-CVE-2012-4527.patch
new file mode 100644
index 0000000000..d931dd174b
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4527.patch
@@ -0,0 +1,111 @@
+From b0716eac4e800a0ea53e1b949250f671702f28a0 Mon Sep 17 00:00:00 2001
+From: Tom Callaway <spot@fedoraproject.org>
+Date: Tue, 30 Oct 2012 15:39:24 -0400
+Subject: apply workaround to CVE-2012-4527
+
+---
+ mcrypt-CVE-2012-4527-80-width-patch | 91 +++++++++++++++++++++++++++++++++++++
+ mcrypt.spec                         | 10 +++-
+ 2 files changed, 100 insertions(+), 1 deletion(-)
+ create mode 100644 mcrypt-CVE-2012-4527-80-width-patch
+
+diff --git a/mcrypt-CVE-2012-4527-80-width-patch b/mcrypt-CVE-2012-4527-80-width-patch
+new file mode 100644
+index 0000000..0eb94d8
+--- /dev/null
++++ b/mcrypt-CVE-2012-4527-80-width-patch
+@@ -0,0 +1,91 @@
++--- mcrypt-2.6.8.orig/src/mcrypt.c
+++++ mcrypt-2.6.8/src/mcrypt.c
++@@ -41,6 +41,8 @@
++ # include <time.h>
++ #endif
++ 
+++#define WIDTH 80
+++
++ static char rcsid[] =
++     "$Id: mcrypt.c,v 1.2 2007/11/07 17:10:21 nmav Exp $";
++ 
++@@ -482,7 +484,7 @@
++ #ifdef HAVE_STAT
++       if (stream_flag == FALSE) {
++ 	 if (is_normal_file(file[i]) == FALSE) {
++-	    sprintf(tmperr,
+++	    snprintf(tmperr, WIDTH,
++ 		    _
++ 		    ("%s: %s is not a regular file. Skipping...\n"),
++ 		    program_name, file[i]);
++@@ -501,7 +503,7 @@
++ 	    dinfile = file[i];
++ 	 if ((isatty(fileno((FILE *) (stdin))) == 1)
++ 	     && (stream_flag == TRUE) && (force == 0)) {	/* not a tty */
++-	    sprintf(tmperr,
+++	    snprintf(tmperr, WIDTH,
++ 		    _
++ 		    ("%s: Encrypted data will not be read from a terminal.\n"),
++ 		    program_name);
++@@ -520,7 +522,7 @@
++ 	    einfile = file[i];
++ 	 if ((isatty(fileno((FILE *) (stdout))) == 1)
++ 	     && (stream_flag == TRUE) && (force == 0)) {	/* not a tty */
++-	    sprintf(tmperr,
+++	    snprintf(tmperr, WIDTH,
++ 		    _
++ 		    ("%s: Encrypted data will not be written to a terminal.\n"),
++ 		    program_name);
++@@ -544,7 +546,7 @@
++ 	    strcpy(outfile, einfile);
++ 	    /* if file has already the .nc ignore it */
++ 	    if (strstr(outfile, ".nc") != NULL) {
++-	       sprintf(tmperr,
+++	       snprintf(tmperr, WIDTH,
++ 		       _
++ 		       ("%s: file %s has the .nc suffix... skipping...\n"),
++ 		       program_name, outfile);
++@@ -590,10 +592,10 @@
++ 
++ 	 if (x == 0) {
++ 	    if (stream_flag == FALSE) {
++-	       sprintf(tmperr, _("File %s was decrypted.\n"), dinfile);
+++	       snprintf(tmperr, WIDTH, _("File %s was decrypted.\n"), dinfile);
++ 	       err_warn(tmperr);
++ 	    } else {
++-	       sprintf(tmperr, _("Stdin was decrypted.\n"));
+++	       snprintf(tmperr, WIDTH, _("Stdin was decrypted.\n"));
++ 	       err_warn(tmperr);
++ 	    }
++ #ifdef HAVE_STAT
++@@ -610,7 +612,7 @@
++ 
++ 	 } else {
++ 	    if (stream_flag == FALSE) {
++-	       sprintf(tmperr,
+++	       snprintf(tmperr, WIDTH,
++ 		       _
++ 		       ("File %s was NOT decrypted successfully.\n"),
++ 		       dinfile);
++@@ -636,10 +638,10 @@
++ 
++ 	 if (x == 0) {
++ 	    if (stream_flag == FALSE) {
++-	       sprintf(tmperr, _("File %s was encrypted.\n"), einfile);
+++	       snprintf(tmperr, WIDTH, _("File %s was encrypted.\n"), einfile);
++ 	       err_warn(tmperr);
++ 	    } else {
++-	       sprintf(tmperr, _("Stdin was encrypted.\n"));
+++	       snprintf(tmperr, WIDTH, _("Stdin was encrypted.\n"));
++ 	       err_warn(tmperr);
++ 	    }
++ #ifdef HAVE_STAT
++@@ -655,7 +657,7 @@
++ 
++ 	 } else {
++ 	    if (stream_flag == FALSE) {
++-	       sprintf(tmperr,
+++	       snprintf(tmperr, WIDTH,
++ 		       _
++ 		       ("File %s was NOT encrypted successfully.\n"),
++ 		       einfile);
+-- 
+cgit v0.12
+
diff --git a/gnu/packages/patches/pcre2-CVE-2016-3191.patch b/gnu/packages/patches/pcre2-CVE-2016-3191.patch
new file mode 100644
index 0000000000..80f9d3d4f1
--- /dev/null
+++ b/gnu/packages/patches/pcre2-CVE-2016-3191.patch
@@ -0,0 +1,179 @@
+Fixes CVE-2016-3191 (remote execution of arbitrary code or denial of
+service (stack-based buffer overflow) via a crafted regular expression).
+
+See <https://bugzilla.redhat.com/show_bug.cgi?id=1311503>.
+
+This is svn r489 at <svn://vcs.exim.org/pcre2/code>, omitting the
+changes to 'testdata/testoutput8-16-4', which does not exist in the
+source tarball.
+
+git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@489 6239d852-aaf2-0410-a92c-79f79f948069
+---
+ ChangeLog                 |  4 ++++
+ src/pcre2_compile.c       | 16 ++++++++++++++--
+ testdata/testinput8       |  2 ++
+ testdata/testoutput8-16-2 |  3 +++
+ testdata/testoutput8-16-3 |  3 +++
+ testdata/testoutput8-16-4 |  3 +++
+ testdata/testoutput8-32-2 |  3 +++
+ testdata/testoutput8-32-3 |  3 +++
+ testdata/testoutput8-32-4 |  3 +++
+ testdata/testoutput8-8-2  |  3 +++
+ testdata/testoutput8-8-3  |  3 +++
+ testdata/testoutput8-8-4  |  3 +++
+ 12 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3ce0207..65e333e 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -58,6 +58,10 @@ some head-scratching the next time this happens.
+ assertion, caused pcre2test to output a very large number of spaces when the 
+ callout was taken, making the program appearing to loop.
+ 
++12. A pattern that included (*ACCEPT) in the middle of a sufficiently deeply 
++nested set of parentheses of sufficient size caused an overflow of the 
++compiling workspace (which was diagnosed, but of course is not desirable).
++
+ 
+ Version 10.21 12-January-2016
+ -----------------------------
+diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c
+index e33d620..887fbfd 100644
+--- a/src/pcre2_compile.c
++++ b/src/pcre2_compile.c
+@@ -5901,10 +5901,22 @@ for (;; ptr++)
+               goto FAILED;
+               }
+             cb->had_accept = TRUE;
++            
++            /* In the first pass, just accumulate the length required;
++            otherwise hitting (*ACCEPT) inside many nested parentheses can
++            cause workspace overflow. */
++              
+             for (oc = cb->open_caps; oc != NULL; oc = oc->next)
+               {
+-              *code++ = OP_CLOSE;
+-              PUT2INC(code, 0, oc->number);
++              if (lengthptr != NULL)
++                {
++                *lengthptr += CU2BYTES(1) + IMM2_SIZE; 
++                }
++              else
++                {       
++                *code++ = OP_CLOSE;
++                PUT2INC(code, 0, oc->number);
++                } 
+               }
+             setverb = *code++ =
+               (cb->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
+diff --git a/testdata/testinput8 b/testdata/testinput8
+index ca3b1b9..7e2a1f0 100644
+--- a/testdata/testinput8
++++ b/testdata/testinput8
+@@ -182,4 +182,6 @@
+ 
+ /((?1)(?2)(?3)(?4)(?5)(?6)(?7)(?8)(?9)(?9)(?8)(?7)(?6)(?5)(?4)(?3)(?2)(?1)(?0)){2,}()()()()()()()()()/debug
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-16-2 b/testdata/testoutput8-16-2
+index 05669bb..a5e8dec 100644
+--- a/testdata/testoutput8-16-2
++++ b/testdata/testoutput8-16-2
+@@ -1027,4 +1027,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 186 at offset 490: regular expression is too complicated
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-16-3 b/testdata/testoutput8-16-3
+index 31884e1..36133b3 100644
+--- a/testdata/testoutput8-16-3
++++ b/testdata/testoutput8-16-3
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-2 b/testdata/testoutput8-32-2
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-2
++++ b/testdata/testoutput8-32-2
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-3 b/testdata/testoutput8-32-3
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-3
++++ b/testdata/testoutput8-32-3
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-4 b/testdata/testoutput8-32-4
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-4
++++ b/testdata/testoutput8-32-4
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-2 b/testdata/testoutput8-8-2
+index 6a9aa0a..6dc1f42 100644
+--- a/testdata/testoutput8-8-2
++++ b/testdata/testoutput8-8-2
+@@ -1026,4 +1026,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-3 b/testdata/testoutput8-8-3
+index 2fe1168..ae14946 100644
+--- a/testdata/testoutput8-8-3
++++ b/testdata/testoutput8-8-3
+@@ -1024,4 +1024,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-4 b/testdata/testoutput8-8-4
+index 91993b2..6c79956 100644
+--- a/testdata/testoutput8-8-4
++++ b/testdata/testoutput8-8-4
+@@ -1022,4 +1022,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+ 
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+-- 
+2.8.3
+
diff --git a/gnu/packages/patches/procmail-CVE-2014-3618.patch b/gnu/packages/patches/procmail-CVE-2014-3618.patch
new file mode 100644
index 0000000000..e3f2759738
--- /dev/null
+++ b/gnu/packages/patches/procmail-CVE-2014-3618.patch
@@ -0,0 +1,26 @@
+Fixes CVE-2014-3618 (heap overflow in formisc.c allowing denial of
+service and potential remote execution of arbitrary code).
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3618
+
+Source:
+http://seclists.org/oss-sec/2014/q3/495
+
+Adopted by Debian as patch '27':
+https://sources.debian.net/src/procmail/3.22-25/debian/patches/27/
+
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -84,12 +84,11 @@
+ 	case '"':*target++=delim='"';start++;
+       }
+      ;{ int i;
+-	do
++	while(*start)
+ 	   if((i= *target++= *start++)==delim)	 /* corresponding delimiter? */
+ 	      break;
+ 	   else if(i=='\\'&&*start)		    /* skip quoted character */
+ 	      *target++= *start++;
+-	while(*start);						/* anything? */
+       }
+      hitspc=2;
+    }
diff --git a/gnu/packages/patches/rpm-CVE-2014-8118.patch b/gnu/packages/patches/rpm-CVE-2014-8118.patch
new file mode 100644
index 0000000000..5fdb0f0eb2
--- /dev/null
+++ b/gnu/packages/patches/rpm-CVE-2014-8118.patch
@@ -0,0 +1,25 @@
+Fix CVE-2014-8118 (integer overflow allowing arbitrary remote code
+execution via crafted CPIO header).
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8118
+
+Source:
+https://bugzilla.redhat.com/attachment.cgi?id=962159&action=diff
+
+Adopted by Debian:
+http://anonscm.debian.org/cgit/collab-maint/rpm.git/plain/debian/patches/CVE-2014-8118.patch
+
+diff --git a/lib/cpio.c b/lib/cpio.c
+index 253ff0f..600633a 100644
+--- a/lib/cpio.c
++++ b/lib/cpio.c
+@@ -399,6 +399,9 @@ int rpmcpioHeaderRead(rpmcpio_t cpio, char ** path, int * fx)
+ 
+     GET_NUM_FIELD(hdr.filesize, fsize);
+     GET_NUM_FIELD(hdr.namesize, nameSize);
++    if (nameSize <= 0 || nameSize > 4096) {
++        return RPMERR_BAD_HEADER;
++    }
+ 
+     char name[nameSize + 1];
+     read = Fread(name, nameSize, 1, cpio->fd);
diff --git a/gnu/packages/patches/rush-CVE-2013-6889.patch b/gnu/packages/patches/rush-CVE-2013-6889.patch
new file mode 100644
index 0000000000..862528a12c
--- /dev/null
+++ b/gnu/packages/patches/rush-CVE-2013-6889.patch
@@ -0,0 +1,23 @@
+commit 00bdccd429517f12dbf37ab4397ddec3e51a2738
+Author: Mats Erik Andersson <gnu@gisladisker.se>
+Date:   Mon Jan 20 13:33:52 2014 +0200
+
+    Protect against CVE-2013-6889 (tiny change).
+    
+    Reset the effective user identification in testing mode.
+
+diff --git a/src/rush.c b/src/rush.c
+index 45d737a..dc6518e 100644
+--- a/src/rush.c
++++ b/src/rush.c
+@@ -980,6 +980,10 @@ main(int argc, char **argv)
+ 	} else if (argc > optind)
+ 		die(usage_error, NULL, _("invalid command line"));
+ 	
++	/* Relinquish root privileges in test mode */
++	if (lint_option)
++		setuid(getuid());
++	
+ 	if (test_user_name) {
+ 		struct passwd *pw = getpwnam(test_user_name);
+ 		if (!pw)
diff --git a/gnu/packages/patches/t1lib-CVE-2010-2642.patch b/gnu/packages/patches/t1lib-CVE-2010-2642.patch
new file mode 100644
index 0000000000..cd54889585
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2010-2642.patch
@@ -0,0 +1,24 @@
+diff --git a/lib/t1lib/parseAFM.c b/lib/t1lib/parseAFM.c
+index 6a31d7f..ba64541 100644
+--- a/lib/t1lib/parseAFM.c
++++ b/lib/t1lib/parseAFM.c
+@@ -199,7 +199,9 @@ static char *token(stream)
+     idx = 0;
+     
+     while (ch != EOF && ch != ' ' && ch != CR  && ch != LF &&
+-	   ch != CTRL_Z && ch != '\t' && ch != ':' && ch != ';'){
++	   ch != CTRL_Z && ch != '\t' && ch != ':' && ch != ';'
++     && idx < (MAX_NAME -1))
++    {
+       ident[idx++] = ch;
+       ch = fgetc(stream);
+     } /* while */
+@@ -235,7 +237,7 @@ static char *linetoken(stream)
+     while ((ch = fgetc(stream)) == ' ' || ch == '\t' ); 
+     
+     idx = 0;
+-    while (ch != EOF && ch != CR  && ch != LF && ch != CTRL_Z) 
++    while (ch != EOF && ch != CR  && ch != LF && ch != CTRL_Z && idx < (MAX_NAME - 1)) 
+     {
+         ident[idx++] = ch;
+         ch = fgetc(stream);
diff --git a/gnu/packages/patches/t1lib-CVE-2011-0764.patch b/gnu/packages/patches/t1lib-CVE-2011-0764.patch
new file mode 100644
index 0000000000..c2d9e173b7
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2011-0764.patch
@@ -0,0 +1,32 @@
+Description: Don't lookup previous point if there isn't any
+Author: Marc Deslauriers <marc.deslauriers@canonical.com>
+Forwarded: no
+
+Index: t1lib-5.1.2/lib/type1/type1.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/type1.c	2011-12-13 14:24:14.280965637 -0600
++++ t1lib-5.1.2/lib/type1/type1.c	2011-12-13 14:25:25.893320747 -0600
+@@ -1700,6 +1700,7 @@
+   long pindex = 0;
+   
+   /* compute hinting for previous segment! */
++  if (ppoints == NULL) Error0i("RLineTo: No previous point!\n");
+   FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx, dy);
+ 
+   /* Allocate a new path point and pre-setup data */
+@@ -1728,6 +1729,7 @@
+   long pindex = 0;
+   
+   /* compute hinting for previous point! */
++  if (ppoints == NULL) Error0i("RRCurveTo: No previous point!\n");
+   FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx1, dy1);
+ 
+   /* Allocate three new path points and pre-setup data */
+@@ -1903,6 +1905,7 @@
+     FindStems( currx, curry, 0, 0, dx, dy);
+   }
+   else {
++    if (ppoints == NULL) Error0i("RMoveTo: No previous point!\n");
+     FindStems( currx, curry, ppoints[numppoints-2].x, ppoints[numppoints-2].y, dx, dy);
+   }
+   
diff --git a/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch b/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch
new file mode 100644
index 0000000000..aaa31f7b93
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch
@@ -0,0 +1,133 @@
+Author: Jaroslav Škarvada <jskarvad@redhat.com>
+Description: Fix more crashes on oversized fonts
+Bug-Redhat: http://bugzilla.redhat.com/show_bug.cgi?id=692909
+Index: t1lib-5.1.2/lib/type1/lines.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/lines.c	2007-12-23 09:49:42.000000000 -0600
++++ t1lib-5.1.2/lib/type1/lines.c	2012-01-17 14:15:08.000000000 -0600
+@@ -67,6 +67,10 @@
+ None.
+ */
+  
++#define  BITS         (sizeof(LONG)*8)
++#define  HIGHTEST(p)  (((p)>>(BITS-2)) != 0)  /* includes sign bit */
++#define  TOOBIG(xy)   ((xy < 0) ? HIGHTEST(-xy) : HIGHTEST(xy))
++
+ /*
+ :h2.StepLine() - Produces Run Ends for a Line After Checks
+  
+@@ -84,6 +88,9 @@
+        IfTrace4((LineDebug > 0), ".....StepLine: (%d,%d) to (%d,%d)\n",
+                                             x1, y1, x2, y2);
+  
++      if ( TOOBIG(x1) || TOOBIG(x2) || TOOBIG(y1) || TOOBIG(y2))
++              abort("Lines this big not supported", 49);
++
+        dy = y2 - y1;
+  
+ /*
+Index: t1lib-5.1.2/lib/type1/objects.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/objects.c	2007-12-23 09:49:42.000000000 -0600
++++ t1lib-5.1.2/lib/type1/objects.c	2012-01-17 14:15:08.000000000 -0600
+@@ -1137,12 +1137,13 @@
+     "Context:  out of them", /* 46 */
+     "MatrixInvert:  can't", /* 47 */
+     "xiStub called", /* 48 */
+-    "Illegal access type1 abort() message" /* 49 */
++    "Lines this big not supported", /* 49 */
++    "Illegal access type1 abort() message" /* 50 */
+   };
+ 
+-  /* no is valid from 1 to 48 */
+-  if ( (number<1)||(number>48))
+-    number=49;
++  /* no is valid from 1 to 49 */
++  if ( (number<1)||(number>49))
++    number=50;
+   return( err_msgs[number-1]);
+     
+ }
+Index: t1lib-5.1.2/lib/type1/type1.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/type1.c	2012-01-17 14:13:28.000000000 -0600
++++ t1lib-5.1.2/lib/type1/type1.c	2012-01-17 14:19:54.000000000 -0600
+@@ -1012,6 +1012,7 @@
+   double nextdtana = 0.0;   /* tangent of post-delta against horizontal line */ 
+   double nextdtanb = 0.0;   /* tangent of post-delta against vertical line */ 
+   
++  if (ppoints == NULL || numppoints < 1) Error0v("FindStems: No previous point!\n");
+  
+   /* setup default hinted position */
+   ppoints[numppoints-1].ax     = ppoints[numppoints-1].x;
+@@ -1289,7 +1290,7 @@
+ static int DoRead(CodeP)
+   int *CodeP;
+ {
+-  if (strindex >= CharStringP->len) return(FALSE); /* end of string */
++  if (!CharStringP || strindex >= CharStringP->len) return(FALSE); /* end of string */
+   /* We handle the non-documented Adobe convention to use lenIV=-1 to
+      suppress charstring encryption. */
+   if (blues->lenIV==-1) {
+@@ -1700,7 +1701,7 @@
+   long pindex = 0;
+   
+   /* compute hinting for previous segment! */
+-  if (ppoints == NULL) Error0i("RLineTo: No previous point!\n");
++  if (ppoints == NULL || numppoints < 2) Error0i("RLineTo: No previous point!\n");
+   FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx, dy);
+ 
+   /* Allocate a new path point and pre-setup data */
+@@ -1729,7 +1730,7 @@
+   long pindex = 0;
+   
+   /* compute hinting for previous point! */
+-  if (ppoints == NULL) Error0i("RRCurveTo: No previous point!\n");
++  if (ppoints == NULL || numppoints < 2) Error0i("RRCurveTo: No previous point!\n");
+   FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx1, dy1);
+ 
+   /* Allocate three new path points and pre-setup data */
+@@ -1788,7 +1789,9 @@
+   long tmpind;
+   double deltax = 0.0;
+   double deltay = 0.0;
+-  
++ 
++  if (ppoints == NULL || numppoints < 1) Error0i("DoClosePath: No previous point!");
++ 
+   /* If this ClosePath command together with the starting point of this
+      path completes to a segment aligned to a stem, we would miss
+      hinting for this point. --> Check and explicitly care for this! */
+@@ -1803,6 +1806,7 @@
+     deltax = ppoints[i].x - ppoints[numppoints-1].x;
+     deltay = ppoints[i].y - ppoints[numppoints-1].y;
+ 
++    if (ppoints == NULL || numppoints <= i + 1) Error0i("DoClosePath: No previous point!");
+     /* save nummppoints and reset to move point */
+     tmpind = numppoints;
+     numppoints = i + 1;
+@@ -1905,7 +1909,7 @@
+     FindStems( currx, curry, 0, 0, dx, dy);
+   }
+   else {
+-    if (ppoints == NULL) Error0i("RMoveTo: No previous point!\n");
++    if (ppoints == NULL || numppoints < 2) Error0i("RMoveTo: No previous point!\n");
+     FindStems( currx, curry, ppoints[numppoints-2].x, ppoints[numppoints-2].y, dx, dy);
+   }
+   
+@@ -2155,6 +2159,7 @@
+   DOUBLE cx, cy;
+   DOUBLE ex, ey;
+ 
++  if (ppoints == NULL || numppoints < 8) Error0v("FlxProc: No previous point!");
+ 
+   /* Our PPOINT list now contains 7 moveto commands which
+      are about to be consumed by the Flex mechanism. --> Remove these
+@@ -2324,6 +2329,7 @@
+ /*   Returns currentpoint on stack          */
+ static void FlxProc2()
+ {
++  if (ppoints == NULL || numppoints < 1) Error0v("FlxProc2: No previous point!");
+   /* Push CurrentPoint on fake PostScript stack */
+   PSFakePush( ppoints[numppoints-1].x);
+   PSFakePush( ppoints[numppoints-1].y);
diff --git a/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch b/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch
new file mode 100644
index 0000000000..6e389dd59e
--- /dev/null
+++ b/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch
@@ -0,0 +1,83 @@
+From: Petter Reinholdtsen <pere@debian.org>
+Date: Tue, 22 Sep 2015 15:14:06 +0200
+Subject: oggenc: validate count of channels in the header (CVE-2014-9638 &
+ CVE-2014-9639)
+
+Author: Kamil Dudka <kdudka@redhat.com>
+Origin: http://lists.xiph.org/pipermail/vorbis-dev/2015-February/020423.html
+Bug: https://trac.xiph.org/ticket/2136
+Bug: https://trac.xiph.org/ticket/2137
+Bug-Debian: https://bugs.debian.org/776086
+Forwarded: not-needed
+Reviewed-By: Petter Reinholdtsen <pere@hungry.com>
+Last-Update: 2015-09-22
+---
+ oggenc/audio.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/oggenc/audio.c b/oggenc/audio.c
+index 05e42b3..1b3f179 100644
+--- a/oggenc/audio.c
++++ b/oggenc/audio.c
+@@ -13,6 +13,7 @@
+ #include <config.h>
+ #endif
+ 
++#include <limits.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -251,6 +252,7 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+     aiff_fmt format;
+     aifffile *aiff = malloc(sizeof(aifffile));
+     int i;
++    long channels;
+ 
+     if(buf[11]=='C')
+         aifc=1;
+@@ -277,11 +279,16 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+         return 0;
+     }
+ 
+-    format.channels = READ_U16_BE(buffer);
++    format.channels = channels = READ_U16_BE(buffer);
+     format.totalframes = READ_U32_BE(buffer+2);
+     format.samplesize = READ_U16_BE(buffer+6);
+     format.rate = (int)read_IEEE80(buffer+8);
+ 
++    if(channels <= 0L || SHRT_MAX < channels)
++    {
++        fprintf(stderr, _("Warning: Unsupported count of channels in AIFF header\n"));
++        return 0;
++    }
+     aiff->bigendian = 1;
+ 
+     if(aifc)
+@@ -412,6 +419,7 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+     wav_fmt format;
+     wavfile *wav = malloc(sizeof(wavfile));
+     int i;
++    long channels;
+ 
+     /* Ok. At this point, we know we have a WAV file. Now we have to detect
+      * whether we support the subtype, and we have to find the actual data
+@@ -449,12 +457,18 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+     }
+ 
+     format.format =      READ_U16_LE(buf);
+-    format.channels =    READ_U16_LE(buf+2);
++    format.channels = channels = READ_U16_LE(buf+2);
+     format.samplerate =  READ_U32_LE(buf+4);
+     format.bytespersec = READ_U32_LE(buf+8);
+     format.align =       READ_U16_LE(buf+12);
+     format.samplesize =  READ_U16_LE(buf+14);
+ 
++    if(channels <= 0L || SHRT_MAX < channels)
++    {
++        fprintf(stderr, _("Warning: Unsupported count of channels in WAV header\n"));
++        return 0;
++    }
++
+     if(format.format == -2) /* WAVE_FORMAT_EXTENSIBLE */
+     {
+       if(len<40)
diff --git a/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch b/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch
new file mode 100644
index 0000000000..97d18e0db7
--- /dev/null
+++ b/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch
@@ -0,0 +1,29 @@
+Index: vorbis-tools/oggenc/oggenc.c

+===================================================================

+--- vorbis-tools/oggenc/oggenc.c	(revision 19116)

++++ vorbis-tools/oggenc/oggenc.c	(revision 19117)

+@@ -98,4 +98,6 @@

+               0,0,0.f,

+               0, 0, 0, 0, 0};

++    input_format raw_format = {NULL, 0, raw_open, wav_close, "raw", 

++      N_("RAW file reader")};

+ 

+     int i;

+@@ -240,6 +242,4 @@

+         if(opt.rawmode)

+         {

+-            input_format raw_format = {NULL, 0, raw_open, wav_close, "raw", 

+-                N_("RAW file reader")};

+ 

+             enc_opts.rate=opt.raw_samplerate;

+Index: vorbis-tools/oggenc/skeleton.h

+===================================================================

+--- vorbis-tools/oggenc/skeleton.h	(revision 19116)

++++ vorbis-tools/oggenc/skeleton.h	(revision 19117)

+@@ -42,5 +42,5 @@

+     ogg_int64_t start_granule;                             /* start granule value */

+     ogg_uint32_t preroll;                                   /* preroll */

+-    unsigned char granule_shift; // a 8-bit field           /* 1 byte value holding the granule shift */

++    unsigned char granule_shift;                            /* 1 byte value holding the granule shift */

+     char *message_header_fields;                            /* holds all the message header fields */

+     /* current total size of the message header fields, for realloc purpose, initially zero */

diff --git a/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch b/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch
new file mode 100644
index 0000000000..fd45407939
--- /dev/null
+++ b/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch
@@ -0,0 +1,40 @@
+From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 19 May 2012 17:36:09 +0000
+Subject: emulation: Limit integer arguments to 65535
+
+To guard against malicious sequences containing excessively big numbers,
+limit all parsed numbers to 16 bit range. Doing this here in the parsing
+routine is a catch-all guard; this doesn't preclude enforcing
+more stringent limits in the handlers themselves.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/table.c b/src/table.c
+index 140e8c8..85cf631 100644
+--- a/src/table.c
++++ b/src/table.c
+@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
+ 		if (G_UNLIKELY (*array == NULL)) {
+ 			*array = g_value_array_new(1);
+ 		}
+-		g_value_set_long(&value, total);
++		g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
+ 		g_value_array_append(*array, &value);
+ 	} while (i++ < arginfo->length);
+ 	g_value_unset(&value);
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 457c06a..46def5b 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
+                               GValueArray *params,
+                               VteTerminalSequenceHandler handler)
+ {
+-        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
++        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
+ }
+ 
+ static void
+--
+cgit v0.9.0.2
diff --git a/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch b/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch
new file mode 100644
index 0000000000..e98fd35b95
--- /dev/null
+++ b/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch
@@ -0,0 +1,82 @@
+From 98ce2f265f986fb88c38d508286bb5e3716b9e74 Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 19 May 2012 18:04:12 +0000
+Subject: emulation: Limit repetitions
+
+Don't allow malicious sequences to cause excessive repetitions.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 46def5b..7fb4707 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -1397,7 +1397,7 @@ vte_sequence_handler_dc (VteTerminal *terminal, GValueArray *params)
+ static void
+ vte_sequence_handler_DC (VteTerminal *terminal, GValueArray *params)
+ {
+-	vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_dc);
++	vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_dc);
+ }
+ 
+ /* Delete a line at the current cursor position. */
+@@ -1790,7 +1790,7 @@ vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
+ static void
+ vte_sequence_handler_RI (VteTerminal *terminal, GValueArray *params)
+ {
+-	vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_nd);
++	vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_nd);
+ }
+ 
+ /* Save cursor (position). */
+@@ -2782,8 +2782,7 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
+ {
+ 	GValue *value;
+ 	VteScreen *screen;
+-	long param, end, row;
+-	int i;
++	long param, end, row, i, limit;
+ 	screen = terminal->pvt->screen;
+ 	/* The default is one. */
+ 	param = 1;
+@@ -2801,7 +2800,13 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
+ 	} else {
+ 		end = screen->insert_delta + terminal->row_count - 1;
+ 	}
+-	/* Insert the new lines at the cursor. */
++
++	/* Only allow to insert as many lines as there are between this row
++         * and the end of the scrolling region. See bug #676090.
++         */
++        limit = end - row + 1;
++        param = MIN (param, limit);
++
+ 	for (i = 0; i < param; i++) {
+ 		/* Clear a line off the end of the region and add one to the
+ 		 * top of the region. */
+@@ -2822,8 +2827,7 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
+ {
+ 	GValue *value;
+ 	VteScreen *screen;
+-	long param, end, row;
+-	int i;
++	long param, end, row, i, limit;
+ 
+ 	screen = terminal->pvt->screen;
+ 	/* The default is one. */
+@@ -2842,6 +2846,13 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
+ 	} else {
+ 		end = screen->insert_delta + terminal->row_count - 1;
+ 	}
++
++        /* Only allow to delete as many lines as there are between this row
++         * and the end of the scrolling region. See bug #676090.
++         */
++        limit = end - row + 1;
++        param = MIN (param, limit);
++
+ 	/* Clear them from below the current cursor. */
+ 	for (i = 0; i < param; i++) {
+ 		/* Insert a line at the end of the region and remove one from
+--
+cgit v0.9.0.2
diff --git a/gnu/packages/patches/wordnet-CVE-2008-2149.patch b/gnu/packages/patches/wordnet-CVE-2008-2149.patch
new file mode 100644
index 0000000000..9828efa4bc
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-2149.patch
@@ -0,0 +1,19 @@
+Fix CVE-2008-2149: buffer overflows by limiting the length of the string in sprintf
+format string
+Closes: #481186 (CVE-2008-2149)
+Please note: The WordNet code contains several other occurences of potentially
+exploitable functions like strcpy()/strcat()/...  and so even if there are no
+known exploits the code needs a full security audit.
+
+--- a/src/wn.c
++++ b/src/wn.c
+@@ -206,7 +206,8 @@ static int searchwn(int ac, char *av[])
+ 		    outsenses += do_search(av[1], optptr->pos, optptr->search,
+ 					    whichsense, optptr->label);
+ 	    } else {
+-		sprintf(tmpbuf, "wn: invalid search option: %s\n", av[j]);
++		/* Fix CVE-2008-2149: buffer overflows Andreas Tille <tille@debian.org> */
++		sprintf(tmpbuf, "wn: invalid search option: %.200s\n", av[j]);
+ 		display_message(tmpbuf);
+ 		errcount++;
+ 	    }
diff --git a/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch b/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch
new file mode 100644
index 0000000000..a2e796b535
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch
@@ -0,0 +1,710 @@
+Author: Anton Gladky <gladk@debian.org>
+LastChanged: Tue, 26 Feb 2013 20:40:25 +0100
+BugDebian: http://bugs.debian.org/700914
+Description: This patch was created by oCert according to
+  http://www.ocert.org/advisories/ocert-2008-014.html
+ and can be downloaded from
+  http://www.ocert.org/analysis/2008-014/wordnet.patch
+ Unfortunately the original patch had a problem which
+ caused 'wordnet test -synsn' to fail.  The critical
+ part of the patch was removed from the whole patch
+ set and is moved to 51_overflows_memcpy.patch which
+ uses memcpy instead of the formerly used strcpy.
+
+--- a/lib/binsrch.c
++++ b/lib/binsrch.c
+@@ -28,7 +28,7 @@ char *read_index(long offset, FILE *fp)
+     char *linep;
+ 
+     linep = line;
+-    line[0] = '0';
++    line[0] = '\0';
+ 
+     fseek( fp, offset, SEEK_SET );
+     fgets(linep, LINE_LEN, fp);
+@@ -58,6 +58,8 @@ char *bin_search(char *searchkey, FILE *
+         last_bin_search_offset = ftell( fp );
+ 	fgets(linep, LINE_LEN, fp);
+ 	length = (int)(strchr(linep, ' ') - linep);
++	if (length > (sizeof(key) - 1))
++            return(NULL);
+ 	strncpy(key, linep, length);
+ 	key[length] = '\0';
+ 	if(strcmp(key, searchkey) < 0) {
+@@ -110,6 +112,8 @@ static int bin_search_key(char *searchke
+ 	line[length++] =  c;
+     if (getc(fp) == EOF) {	/* only 1 line in file */
+ 	length = (int)(strchr(linep, ' ') - linep);
++	if (length > (sizeof(key) - 1))
++            return(0);
+ 	strncpy(key, linep, length);
+ 	key[length] = '\0';
+ 	if(strcmp(key, searchkey) > 0) {
+@@ -132,6 +136,8 @@ static int bin_search_key(char *searchke
+ 	if (fgets(linep, LINE_LEN, fp) != NULL) {
+   	    offset2 = ftell(fp); /* offset at start of next line */
+ 	    length = (int)(strchr(linep, ' ') - linep);
++	    if (length > (sizeof(key) - 1))
++                return(0);
+ 	    strncpy(key, linep, length);
+ 	    key[length] = '\0';
+ 	    if(strcmp(key, searchkey) < 0) {	/* further in file */
+--- a/lib/morph.c
++++ b/lib/morph.c
+@@ -51,21 +51,21 @@ static struct {
+     char *str;
+     int strlen;
+ } prepositions[NUMPREPS] = {
+-    "to", 2,
+-    "at", 2,
+-    "of", 2,
+-    "on", 2,
+-    "off", 3,
+-    "in", 2,
+-    "out", 3,
+-    "up", 2,
+-    "down", 4,
+-    "from", 4,
+-    "with", 4,
+-    "into", 4,
+-    "for", 3,
+-    "about", 5,
+-    "between", 7,
++    { "to", 2 },
++    { "at", 2 },
++    { "of", 2 },
++    { "on", 2 },
++    { "off", 3 },
++    { "in", 2 },
++    { "out", 3 },
++    { "up", 2 },
++    { "down", 4 },
++    { "from", 4 },
++    { "with", 4 },
++    { "into", 4 },
++    { "for", 3 },
++    { "about", 5 },
++    { "between", 7 }
+ };
+ 
+ static FILE *exc_fps[NUMPARTS + 1];
+@@ -144,18 +144,19 @@ static int do_init(void)
+     } else
+ 	sprintf(searchdir, DEFAULTPATH);
+ #else
+-    if ((env = getenv("WNSEARCHDIR")) != NULL)
+-	strcpy(searchdir, env);
+-    else if ((env = getenv("WNHOME")) != NULL)
+-	sprintf(searchdir, "%s%s", env, DICTDIR);
+-    else
++    if ((env = getenv("WNSEARCHDIR")) != NULL) {
++	snprintf(searchdir, sizeof(searchdir), "%s", env);
++    } else if ((env = getenv("WNHOME")) != NULL) {
++	snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
++    } else {
+ 	strcpy(searchdir, DEFAULTPATH);
++    }
+ #endif
+ 
+     for (i = 1; i <= NUMPARTS; i++) {
+-	sprintf(fname, EXCFILE, searchdir, partnames[i]);
++	snprintf(fname, sizeof(fname), EXCFILE, searchdir, partnames[i]);
+ 	if ((exc_fps[i] = fopen(fname, "r")) == NULL) {
+-	    sprintf(msgbuf,
++	    snprintf(msgbuf, sizeof(msgbuf),
+ 		    "WordNet library error: Can't open exception file(%s)\n\n",
+ 		    fname);
+ 	    display_message(msgbuf);
+@@ -178,13 +179,16 @@ char *morphstr(char *origstr, int pos)
+     int prep;
+     char *end_idx1, *end_idx2;
+     char *append;
+-    
++
+     if (pos == SATELLITE)
+ 	pos = ADJ;
+ 
+     /* First time through for this string */
+ 
+     if (origstr != NULL) {
++        if (strlen(origstr) > WORDBUF - 1)
++            return(NULL);
++
+ 	/* Assume string hasn't had spaces substitued with '_' */
+ 	strtolower(strsubst(strcpy(str, origstr), ' ', '_'));
+ 	searchstr[0] = '\0';
+@@ -232,7 +236,7 @@ char *morphstr(char *origstr, int pos)
+ 		if (end_idx < 0) return(NULL);		/* shouldn't do this */
+ 		strncpy(word, str + st_idx, end_idx - st_idx);
+ 		word[end_idx - st_idx] = '\0';
+-		if(tmp = morphword(word, pos))
++		if ((tmp = morphword(word, pos)) != NULL)
+ 		    strcat(searchstr,tmp);
+ 		else
+ 		    strcat(searchstr,word);
+@@ -240,7 +244,7 @@ char *morphstr(char *origstr, int pos)
+ 		st_idx = end_idx + 1;
+ 	    }
+ 	    
+-	    if(tmp = morphword(strcpy(word, str + st_idx), pos)) 
++	    if ((tmp = morphword(strcpy(word, str + st_idx), pos)) != NULL)
+ 		strcat(searchstr,tmp);
+ 	    else
+ 		strcat(searchstr,word);
+@@ -270,16 +274,15 @@ char *morphword(char *word, int pos)
+ {
+     int offset, cnt;
+     int i;
+-    static char retval[WORDBUF];
+-    char *tmp, tmpbuf[WORDBUF], *end;
+-    
+-    sprintf(retval,"");
+-    sprintf(tmpbuf, "");
+-    end = "";
+-    
++    static char retval[WORDBUF] = "";
++    char *tmp, tmpbuf[WORDBUF] = "", *end = "";
++
+     if(word == NULL) 
+ 	return(NULL);
+ 
++    if (strlen(word) > WORDBUF - 1)
++        return(NULL);
++
+     /* first look for word on exception list */
+     
+     if((tmp = exc_lookup(word, pos)) != NULL)
+@@ -335,7 +338,10 @@ static char *wordbase(char *word, int en
+ {
+     char *pt1;
+     static char copy[WORDBUF];
+-    
++
++    if (strlen(word) > WORDBUF - 1)
++        return(NULL);
++
+     strcpy(copy, word);
+     if(strend(copy,sufx[ender])) {
+ 	pt1=strchr(copy,'\0');
+@@ -368,13 +374,14 @@ static char *exc_lookup(char *word, int
+ {
+     static char line[WORDBUF], *beglp, *endlp;
+     char *excline;
+-    int found = 0;
+ 
+     if (exc_fps[pos] == NULL)
+ 	return(NULL);
+ 
+     /* first time through load line from exception file */
+     if(word != NULL){
++        if (strlen(word) > WORDBUF - 1)
++           return(NULL);
+ 	if ((excline = bin_search(word, exc_fps[pos])) != NULL) {
+ 	    strcpy(line, excline);
+ 	    endlp = strchr(line,' ');
+@@ -403,6 +410,9 @@ static char *morphprep(char *s)
+     char word[WORDBUF], end[WORDBUF];
+     static char retval[WORDBUF];
+ 
++    if (strlen(s) > WORDBUF - 1)
++        return (NULL);
++
+     /* Assume that the verb is the first word in the phrase.  Strip it
+        off, check for validity, then try various morphs with the
+        rest of the phrase tacked on, trying to find a match. */
+@@ -410,7 +420,7 @@ static char *morphprep(char *s)
+     rest = strchr(s, '_');
+     last = strrchr(s, '_');
+     if (rest != last) {		/* more than 2 words */
+-	if (lastwd = morphword(last + 1, NOUN)) {
++	if ((lastwd = morphword(last + 1, NOUN)) != NULL) {
+ 	    strncpy(end, rest, last - rest + 1);
+ 	    end[last-rest+1] = '\0';
+ 	    strcat(end, lastwd);
+--- a/lib/search.c
++++ b/lib/search.c
+@@ -13,6 +13,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <assert.h>
++#include <limits.h>
+ 
+ #include "wn.h"
+ 
+@@ -119,33 +120,22 @@ IndexPtr parse_index(long offset, int db
+     if ( !line )
+       line = read_index( offset, indexfps[dbase] );
+     
+-    idx = (IndexPtr)malloc(sizeof(Index));
++    idx = (IndexPtr)calloc(1, sizeof(Index));
+     assert(idx);
+ 
+     /* set offset of entry in index file */
+     idx->idxoffset = offset;
+     
+-    idx->wd='\0';
+-    idx->pos='\0';
+-    idx->off_cnt=0;
+-    idx->tagged_cnt = 0;
+-    idx->sense_cnt=0;
+-    idx->offset='\0';
+-    idx->ptruse_cnt=0;
+-    idx->ptruse='\0';
+-    
+     /* get the word */
+     ptrtok=strtok(line," \n");
+     
+-    idx->wd = malloc(strlen(ptrtok) + 1);
++    idx->wd = strdup(ptrtok);
+     assert(idx->wd);
+-    strcpy(idx->wd, ptrtok);
+     
+     /* get the part of speech */
+     ptrtok=strtok(NULL," \n");
+-    idx->pos = malloc(strlen(ptrtok) + 1);
++    idx->pos = strdup(ptrtok);
+     assert(idx->pos);
+-    strcpy(idx->pos, ptrtok);
+     
+     /* get the collins count */
+     ptrtok=strtok(NULL," \n");
+@@ -154,7 +144,12 @@ IndexPtr parse_index(long offset, int db
+     /* get the number of pointers types */
+     ptrtok=strtok(NULL," \n");
+     idx->ptruse_cnt = atoi(ptrtok);
+-    
++
++    if (idx->ptruse_cnt < 0 || (unsigned int)idx->ptruse_cnt > UINT_MAX/sizeof(int)) {
++        free_index(idx);
++        return(NULL);
++    }
++
+     if (idx->ptruse_cnt) {
+ 	idx->ptruse = (int *) malloc(idx->ptruse_cnt * (sizeof(int)));
+ 	assert(idx->ptruse);
+@@ -173,9 +168,14 @@ IndexPtr parse_index(long offset, int db
+     /* get the number of senses that are tagged */
+     ptrtok=strtok(NULL," \n");
+     idx->tagged_cnt = atoi(ptrtok);
+-        
++
++    if (idx->off_cnt < 0 || (unsigned long)idx->off_cnt > ULONG_MAX/sizeof(long)) {
++        free_index(idx);
++        return(NULL);
++    }
++
+     /* make space for the offsets */
+-    idx->offset = (long *) malloc(idx->off_cnt * (sizeof(long)));
++    idx->offset = (unsigned long *) malloc(idx->off_cnt * sizeof(long));
+     assert(idx->offset);
+     
+     /* get the offsets */
+@@ -197,15 +197,21 @@ IndexPtr getindex(char *searchstr, int d
+     char strings[MAX_FORMS][WORDBUF]; /* vector of search strings */
+     static IndexPtr offsets[MAX_FORMS];
+     static int offset;
+-    
++
+     /* This works like strrok(): if passed with a non-null string,
+        prepare vector of search strings and offsets.  If string
+        is null, look at current list of offsets and return next
+        one, or NULL if no more alternatives for this word. */
+ 
+     if (searchstr != NULL) {
++        /* Bail out if the input is too long for us to handle */
++        if (strlen(searchstr) > (WORDBUF - 1)) {
++            strcpy(msgbuf, "WordNet library error: search term is too long\n");
++                   display_message(msgbuf);
++            return(NULL);
++        }
+ 
+-	offset = 0;
++    	offset = 0;
+ 	strtolower(searchstr);
+ 	for (i = 0; i < MAX_FORMS; i++) {
+ 	    strcpy(strings[i], searchstr);
+@@ -229,11 +235,11 @@ IndexPtr getindex(char *searchstr, int d
+ 	/* Get offset of first entry.  Then eliminate duplicates
+ 	   and get offsets of unique strings. */
+ 
+-	if (strings[0][0] != NULL)
++	if (strings[0] != NULL)
+ 	    offsets[0] = index_lookup(strings[0], dbase);
+ 
+ 	for (i = 1; i < MAX_FORMS; i++)
+-	    if ((strings[i][0]) != NULL && (strcmp(strings[0], strings[i])))
++	    if (strings[i] != NULL && (strcmp(strings[0], strings[i])))
+ 		offsets[i] = index_lookup(strings[i], dbase);
+     }
+ 
+@@ -272,7 +278,7 @@ SynsetPtr read_synset(int dbase, long bo
+ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
+ {
+     static char line[LINEBUF];
+-    char tbuf[SMLINEBUF];
++    char tbuf[SMLINEBUF] = "";
+     char *ptrtok;
+     char *tmpptr;
+     int foundpert = 0;
+@@ -286,33 +292,11 @@ SynsetPtr parse_synset(FILE *fp, int dba
+     if ((tmpptr = fgets(line, LINEBUF, fp)) == NULL)
+ 	return(NULL);
+     
+-    synptr = (SynsetPtr)malloc(sizeof(Synset));
++    synptr = (SynsetPtr)calloc(1, sizeof(Synset));
+     assert(synptr);
+-    
+-    synptr->hereiam = 0;
++
+     synptr->sstype = DONT_KNOW;
+-    synptr->fnum = 0;
+-    synptr->pos = '\0';
+-    synptr->wcount = 0;
+-    synptr->words = '\0';
+-    synptr->whichword = 0;
+-    synptr->ptrcount = 0;
+-    synptr->ptrtyp = '\0';
+-    synptr->ptroff = '\0';
+-    synptr->ppos = '\0';
+-    synptr->pto = '\0';
+-    synptr->pfrm = '\0';
+-    synptr->fcount = 0;
+-    synptr->frmid = '\0';
+-    synptr->frmto = '\0';
+-    synptr->defn = '\0';
+-    synptr->key = 0;
+-    synptr->nextss = NULL;
+-    synptr->nextform = NULL;
+     synptr->searchtype = -1;
+-    synptr->ptrlist = NULL;
+-    synptr->headword = NULL;
+-    synptr->headsense = 0;
+ 
+     ptrtok = line;
+     
+@@ -322,7 +306,7 @@ SynsetPtr parse_synset(FILE *fp, int dba
+ 
+     /* sanity check - make sure starting file offset matches first field */
+     if (synptr->hereiam != loc) {
+-	sprintf(msgbuf, "WordNet library error: no synset at location %d\n",
++	sprintf(msgbuf, "WordNet library error: no synset at location %ld\n",
+ 		loc);
+ 	display_message(msgbuf);
+ 	free(synptr);
+@@ -335,16 +319,20 @@ SynsetPtr parse_synset(FILE *fp, int dba
+     
+     /* looking at POS */
+     ptrtok = strtok(NULL, " \n");
+-    synptr->pos = malloc(strlen(ptrtok) + 1);
++    synptr->pos = strdup(ptrtok);
+     assert(synptr->pos);
+-    strcpy(synptr->pos, ptrtok);
+     if (getsstype(synptr->pos) == SATELLITE)
+ 	synptr->sstype = INDIRECT_ANT;
+     
+     /* looking at numwords */
+     ptrtok = strtok(NULL, " \n");
+     synptr->wcount = strtol(ptrtok, NULL, 16);
+-    
++
++    if (synptr->wcount < 0 || (unsigned int)synptr->wcount > UINT_MAX/sizeof(char *)) {
++        free_syns(synptr);
++        return(NULL);
++    }
++
+     synptr->words = (char **)malloc(synptr->wcount  * sizeof(char *));
+     assert(synptr->words);
+     synptr->wnsns = (int *)malloc(synptr->wcount * sizeof(int));
+@@ -354,9 +342,8 @@ SynsetPtr parse_synset(FILE *fp, int dba
+     
+     for (i = 0; i < synptr->wcount; i++) {
+ 	ptrtok = strtok(NULL, " \n");
+-	synptr->words[i] = malloc(strlen(ptrtok) + 1);
++	synptr->words[i] = strdup(ptrtok);
+ 	assert(synptr->words[i]);
+-	strcpy(synptr->words[i], ptrtok);
+ 	
+ 	/* is this the word we're looking for? */
+ 	
+@@ -371,6 +358,12 @@ SynsetPtr parse_synset(FILE *fp, int dba
+     ptrtok = strtok(NULL," \n");
+     synptr->ptrcount = atoi(ptrtok);
+ 
++    /* Should we check for long here as well? */
++    if (synptr->ptrcount < 0 || (unsigned int)synptr->ptrcount > UINT_MAX/sizeof(int)) {
++        free_syns(synptr);
++        return(NULL);
++    }
++
+     if (synptr->ptrcount) {
+ 
+ 	/* alloc storage for the pointers */
+@@ -455,21 +448,23 @@ SynsetPtr parse_synset(FILE *fp, int dba
+     ptrtok = strtok(NULL," \n");
+     if (ptrtok) {
+ 	ptrtok = strtok(NULL," \n");
+-	sprintf(tbuf, "");
+ 	while (ptrtok != NULL) {
++	    if (strlen(ptrtok) + strlen(tbuf) + 1 + 1 > sizeof(tbuf)) {
++                free_syns(synptr);
++                return(NULL);
++	    }
+ 	    strcat(tbuf,ptrtok);
+ 	    ptrtok = strtok(NULL, " \n");
+ 	    if(ptrtok)
+ 		strcat(tbuf," ");
+ 	}
+-	assert((1 + strlen(tbuf)) < sizeof(tbuf));
+-	synptr->defn = malloc(strlen(tbuf) + 4);
++	synptr->defn = malloc(strlen(tbuf) + 3);
+ 	assert(synptr->defn);
+ 	sprintf(synptr->defn,"(%s)",tbuf);
+     }
+ 
+     if (keyindexfp) { 		/* we have unique keys */
+-	sprintf(tmpbuf, "%c:%8.8d", partchars[dbase], synptr->hereiam);
++	sprintf(tmpbuf, "%c:%8.8ld", partchars[dbase], synptr->hereiam);
+ 	synptr->key = GetKeyForOffset(tmpbuf);
+     }
+ 
+@@ -635,7 +630,7 @@ static void traceptrs(SynsetPtr synptr,
+ 
+ 	    if ((ptrtyp == PERTPTR || ptrtyp == PPLPTR) &&
+ 		synptr->pto[i] != 0) {
+-		sprintf(tbuf, " (Sense %d)\n",
++		snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
+ 			cursyn->wnsns[synptr->pto[i] - 1]);
+ 		printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ 			    SKIP_ANTS, PRINT_MARKER);
+@@ -656,7 +651,7 @@ static void traceptrs(SynsetPtr synptr,
+ 		    traceptrs(cursyn, HYPERPTR, getpos(cursyn->pos), 0);
+ 		}
+ 	    } else if (ptrtyp == ANTPTR && dbase != ADJ && synptr->pto[i] != 0) {
+-		sprintf(tbuf, " (Sense %d)\n",
++		snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
+ 			cursyn->wnsns[synptr->pto[i] - 1]);
+ 		printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ 			    SKIP_ANTS, PRINT_MARKER);
+@@ -817,7 +812,7 @@ static void tracenomins(SynsetPtr synptr
+ 	    	    
+ 	    cursyn = read_synset(synptr->ppos[i], synptr->ptroff[i], "");
+ 
+-	    sprintf(tbuf, "#%d\n",
++	    snprintf(tbuf, sizeof(tbuf), "#%d\n",
+ 		    cursyn->wnsns[synptr->pto[i] - 1]);
+ 	    printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ 			SKIP_ANTS, SKIP_MARKER);
+@@ -989,12 +984,12 @@ void getexample(char *offset, char *wd)
+     char sentbuf[512];
+     
+     if (vsentfilefp != NULL) {
+-	if (line = bin_search(offset, vsentfilefp)) {
++	if ((line = bin_search(offset, vsentfilefp)) != NULL) {
+ 	    while(*line != ' ') 
+ 		line++;
+ 
+ 	    printbuffer("          EX: ");
+-	    sprintf(sentbuf, line, wd);
++	    snprintf(sentbuf, sizeof(sentbuf), line, wd);
+ 	    printbuffer(sentbuf);
+ 	}
+     }
+@@ -1011,7 +1006,7 @@ int findexample(SynsetPtr synptr)
+     if (vidxfilefp != NULL) {
+ 	wdnum = synptr->whichword - 1;
+ 
+-	sprintf(tbuf,"%s%%%-1.1d:%-2.2d:%-2.2d::",
++	snprintf(tbuf, sizeof(tbuf), "%s%%%-1.1d:%-2.2d:%-2.2d::",
+ 		synptr->words[wdnum],
+ 		getpos(synptr->pos),
+ 		synptr->fnum,
+@@ -1124,7 +1119,7 @@ static void freq_word(IndexPtr index)
+ 	if (cnt >= 17 && cnt <= 32) familiar = 6;
+ 	if (cnt > 32 ) familiar = 7;
+ 	
+-	sprintf(tmpbuf,
++	snprintf(tmpbuf, sizeof(tmpbuf),
+ 		"\n%s used as %s is %s (polysemy count = %d)\n",
+ 		index->wd, a_an[getpos(index->pos)], freqcats[familiar], cnt);
+ 	printbuffer(tmpbuf);
+@@ -1147,6 +1142,9 @@ void wngrep (char *word_passed, int pos)
+    }
+    rewind(inputfile);
+ 
++   if (strlen(word_passed) + 1 > sizeof(word))
++       return;
++
+    strcpy (word, word_passed);
+    ToLowerCase(word);		/* map to lower case for index file search */
+    strsubst (word, ' ', '_');	/* replace spaces with underscores */
+@@ -1169,7 +1167,7 @@ void wngrep (char *word_passed, int pos)
+             ((line[loc + wordlen] == '-') || (line[loc + wordlen] == '_')))
+          ) {
+             strsubst (line, '_', ' ');
+-            sprintf (tmpbuf, "%s\n", line);
++            snprintf (tmpbuf, sizeof(tmpbuf), "%s\n", line);
+             printbuffer (tmpbuf);
+             break;
+          }
+@@ -1683,9 +1681,8 @@ SynsetPtr traceptrs_ds(SynsetPtr synptr,
+ 		cursyn = read_synset(synptr->ppos[i],
+ 				      synptr->ptroff[i],
+ 				      "");
+-		synptr->headword = malloc(strlen(cursyn->words[0]) + 1);
++		synptr->headword = strdup(cursyn->words[0]);
+ 		assert(synptr->headword);
+-		strcpy(synptr->headword, cursyn->words[0]);
+ 		synptr->headsense = cursyn->lexid[0];
+ 		free_synset(cursyn);
+ 		break;
+@@ -2013,7 +2010,7 @@ static int getsearchsense(SynsetPtr synp
+     strsubst(strcpy(wdbuf, synptr->words[whichword - 1]), ' ', '_');
+     strtolower(wdbuf);
+ 		       
+-    if (idx = index_lookup(wdbuf, getpos(synptr->pos))) {
++    if ((idx = index_lookup(wdbuf, getpos(synptr->pos))) != NULL) {
+ 	for (i = 0; i < idx->off_cnt; i++)
+ 	    if (idx->offset[i] == synptr->hereiam) {
+ 		free_index(idx);
+@@ -2037,7 +2034,7 @@ static void printsynset(char *head, Syns
+        by flags */
+ 
+     if (offsetflag)		/* print synset offset */
+-	sprintf(tbuf + strlen(tbuf),"{%8.8d} ", synptr->hereiam);
++	sprintf(tbuf + strlen(tbuf),"{%8.8ld} ", synptr->hereiam);
+     if (fileinfoflag) {		/* print lexicographer file information */
+ 	sprintf(tbuf + strlen(tbuf), "<%s> ", lexfiles[synptr->fnum]);
+ 	prlexid = 1;		/* print lexicographer id after word */
+@@ -2072,7 +2069,7 @@ static void printantsynset(SynsetPtr syn
+     tbuf[0] = '\0';
+ 
+     if (offsetflag)
+-	sprintf(tbuf,"{%8.8d} ", synptr->hereiam);
++	sprintf(tbuf,"{%8.8ld} ", synptr->hereiam);
+     if (fileinfoflag) {
+ 	sprintf(tbuf + strlen(tbuf),"<%s> ", lexfiles[synptr->fnum]);
+ 	prlexid = 1;
+--- a/lib/wnutil.c
++++ b/lib/wnutil.c
+@@ -48,7 +48,7 @@ int wninit(void)
+     char *env;
+ 
+     if (!done) {
+-	if (env = getenv("WNDBVERSION")) {
++	if ((env = getenv("WNDBVERSION")) != NULL) {
+ 	    wnrelease = strdup(env);	/* set release */
+ 	    assert(wnrelease);
+ 	}
+@@ -70,7 +70,7 @@ int re_wninit(void)
+ 
+     closefps();
+ 
+-    if (env = getenv("WNDBVERSION")) {
++    if ((env = getenv("WNDBVERSION")) != NULL) {
+ 	wnrelease = strdup(env);	/* set release */
+ 	assert(wnrelease);
+     }
+@@ -149,25 +149,25 @@ static int do_init(void)
+ 	sprintf(searchdir, DEFAULTPATH);
+ #else
+     if ((env = getenv("WNSEARCHDIR")) != NULL)
+-	strcpy(searchdir, env);
++	snprintf(searchdir, sizeof(searchdir), "%s", env);
+     else if ((env = getenv("WNHOME")) != NULL)
+-	sprintf(searchdir, "%s%s", env, DICTDIR);
++	snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
+     else
+ 	strcpy(searchdir, DEFAULTPATH);
+ #endif
+ 
+     for (i = 1; i < NUMPARTS + 1; i++) {
+-	sprintf(tmpbuf, DATAFILE, searchdir, partnames[i]);
++	snprintf(tmpbuf, sizeof(tmpbuf), DATAFILE, searchdir, partnames[i]);
+ 	if((datafps[i] = fopen(tmpbuf, "r")) == NULL) {
+-	    sprintf(msgbuf,
++	    snprintf(msgbuf, sizeof(msgbuf),
+ 		    "WordNet library error: Can't open datafile(%s)\n",
+ 		    tmpbuf);
+ 	    display_message(msgbuf);
+ 	    openerr = -1;
+ 	}
+-	sprintf(tmpbuf, INDEXFILE, searchdir, partnames[i]);
++	snprintf(tmpbuf, sizeof(tmpbuf), INDEXFILE, searchdir, partnames[i]);
+ 	if((indexfps[i] = fopen(tmpbuf, "r")) == NULL) {
+-	    sprintf(msgbuf,
++	    snprintf(msgbuf, sizeof(msgbuf),
+ 		    "WordNet library error: Can't open indexfile(%s)\n",
+ 		    tmpbuf);
+ 	    display_message(msgbuf);
+@@ -178,35 +178,35 @@ static int do_init(void)
+     /* This file isn't used by the library and doesn't have to
+        be present.  No error is reported if the open fails. */
+ 
+-    sprintf(tmpbuf, SENSEIDXFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), SENSEIDXFILE, searchdir);
+     sensefp = fopen(tmpbuf, "r");
+ 
+     /* If this file isn't present, the runtime code will skip printint out
+        the number of times each sense was tagged. */
+ 
+-    sprintf(tmpbuf, CNTLISTFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), CNTLISTFILE, searchdir);
+     cntlistfp = fopen(tmpbuf, "r");
+ 
+     /* This file doesn't have to be present.  No error is reported if the
+        open fails. */
+ 
+-    sprintf(tmpbuf, KEYIDXFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), KEYIDXFILE, searchdir);
+     keyindexfp = fopen(tmpbuf, "r");
+ 
+-    sprintf(tmpbuf, REVKEYIDXFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), REVKEYIDXFILE, searchdir);
+     revkeyindexfp = fopen(tmpbuf, "r");
+ 
+-    sprintf(tmpbuf, VRBSENTFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), VRBSENTFILE, searchdir);
+     if ((vsentfilefp = fopen(tmpbuf, "r")) == NULL) {
+-	sprintf(msgbuf,
++	snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library warning: Can't open verb example sentence file(%s)\n",
+ 		tmpbuf);
+ 	display_message(msgbuf);
+     }
+ 
+-    sprintf(tmpbuf, VRBIDXFILE, searchdir);
++    snprintf(tmpbuf, sizeof(tmpbuf), VRBIDXFILE, searchdir);
+     if ((vidxfilefp = fopen(tmpbuf, "r")) == NULL) {
+-	sprintf(msgbuf,
++	snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library warning: Can't open verb example sentence index file(%s)\n",
+ 		tmpbuf);
+ 	display_message(msgbuf);
+--- a/src/wn.c
++++ b/src/wn.c
+@@ -131,7 +131,7 @@ static void printusage(), printlicense()
+        printsearches(char *, int, unsigned long);
+ static int error_message(char *);
+ 
+-main(int argc,char *argv[])
++int main(int argc,char *argv[])
+ {
+     display_message = error_message;
+     
+@@ -228,14 +228,14 @@ static int do_search(char *searchword, i
+ 	printf("\n%s of %s %s\n%s",
+ 	       label, partnames[pos], searchword, outbuf);
+ 
+-    if (morphword = morphstr(searchword, pos))
++    if ((morphword = morphstr(searchword, pos)) != NULL)
+ 	do {
+ 	    outbuf = findtheinfo(morphword, pos, search, whichsense);
+ 	    totsenses += wnresults.printcnt;
+ 	    if (strlen(outbuf) > 0) 
+ 		printf("\n%s of %s %s\n%s",
+ 		       label, partnames[pos], morphword, outbuf);
+-	} while (morphword = morphstr(NULL, pos));
++	} while ((morphword = morphstr(NULL, pos)) != NULL);
+ 
+     return(totsenses);
+ }
diff --git a/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch b/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch
new file mode 100644
index 0000000000..2ef2239a7f
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch
@@ -0,0 +1,18 @@
+This patch was created by oCert according to
+ http://www.ocert.org/advisories/ocert-2008-014.html
+Unfortunately the original patch contained a bug which was
+later fixed by the issuer of the patch Rob Holland <rob@ocert.org>
+This part was now separated in this file.
+
+--- a/lib/search.c
++++ b/lib/search.c
+@@ -1568,7 +1568,8 @@ char *findtheinfo(char *searchstr, int d
+ 			bufstart[0] = '\n';
+ 			bufstart++;
+ 		    }
+-		    strncpy(bufstart, tmpbuf, strlen(tmpbuf));
++                   /* Avoid writing a trailing \0 after the string */
++                   memcpy(bufstart, tmpbuf, strlen(tmpbuf));
+ 		    bufstart = searchbuffer + strlen(searchbuffer);
+ 		}
+ 	    }
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index e022b6a81d..553e3f8cac 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,50 +24,48 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages base))
 
 (define-public pciutils
   (package
     (name "pciutils")
-    (version "3.3.1")
+    (version "3.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://kernel.org/software/utils/pciutils/pciutils-"
-                    version
-                    ".tar.xz"))
+                    version ".tar.xz"))
               (sha256
                (base32
-                "1ag3skny1bamqil46dlppw8j1fp08spqa60fjygbxkg4fzdknjji"))))
+                "0byl2f897w5lhs4bvr6p7qwcz9bllj2zyfv7nywbcbsnb9ha9wrb"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; There's no 'configure' script, just a raw makefile.
-                   (substitute* "Makefile"
-                     (("^PREFIX=.*$")
-                      (string-append "PREFIX := " (assoc-ref outputs "out")
-                                     "\n"))
-                     (("^MANDIR:=.*$")
-                       ;; By default the thing tries to automatically
-                       ;; determine whether to use $prefix/man or
-                       ;; $prefix/share/man, and wrongly so.
-                      (string-append "MANDIR := " (assoc-ref outputs "out")
-                                     "/share/man\n"))
-                     (("^SHARED=.*$")
-                      ;; Build libpciutils.so.
-                      "SHARED := yes\n")
-                     (("^ZLIB=.*$")
-                      ;; Ask for zlib support.
-                      "ZLIB := yes\n")))
-
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Install the commands, library, and .pc files.
-                    (zero? (system* "make" "install" "install-lib")))
-                  %standard-phases))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; There's no 'configure' script, just a raw makefile.
+             (substitute* "Makefile"
+               (("^PREFIX=.*$")
+                (string-append "PREFIX := " (assoc-ref outputs "out")
+                               "\n"))
+               (("^MANDIR:=.*$")
+                 ;; By default the thing tries to automatically
+                 ;; determine whether to use $prefix/man or
+                 ;; $prefix/share/man, and wrongly so.
+                (string-append "MANDIR := " (assoc-ref outputs "out")
+                               "/share/man\n"))
+               (("^SHARED=.*$")
+                ;; Build libpciutils.so.
+                "SHARED := yes\n")
+               (("^ZLIB=.*$")
+                ;; Ask for zlib support.
+                "ZLIB := yes\n"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install the commands, library, and .pc files.
+             (zero? (system* "make" "install" "install-lib")))))
 
        ;; Make sure programs have an RPATH so they can find libpciutils.so.
        #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
@@ -78,8 +77,8 @@
      `(("which" ,which)
        ("pkg-config" ,pkg-config)))
     (inputs
-     ;; TODO: Add dependency on Linux libkmod.
-     `(("zlib" ,zlib)))
+     `(("kmod" ,kmod)
+       ("zlib" ,zlib)))
     (home-page "http://mj.ucw.cz/sw/pciutils/")
     (synopsis "Programs for inspecting and manipulating PCI devices")
     (description
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index aea7d6fcb3..fe9157af12 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -78,6 +79,7 @@ POSIX regular expression API.")
               (uri (string-append "mirror://sourceforge/pcre/pcre2/"
                                   version "/pcre2-" version ".tar.bz2"))
 
+              (patches (search-patches "pcre2-CVE-2016-3191.patch"))
               (sha256
                (base32
                 "1q6lrj9b08l1q39vxipb0fi88x6ybvkr6439h8bjb9r8jd81fsn6"))))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 4edf965afd..7c2651764a 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
+;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -112,6 +113,13 @@
              ,@(package-inputs poppler)))
    (synopsis "Qt4 frontend for the Poppler PDF rendering library")))
 
+(define-public poppler-qt5
+  (package (inherit poppler)
+   (name "poppler-qt5")
+   (inputs `(("qt" ,qt)
+             ,@(package-inputs poppler)))
+   (synopsis "Qt5 frontend for the Poppler PDF rendering library")))
+
 (define-public python-poppler-qt4
   (package
     (name "python-poppler-qt4")
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 6af4e4a214..4b21926105 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,11 +37,13 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xfig)
   #:use-module (gnu packages xml))
@@ -218,7 +221,7 @@ overlapping images, as well as some command line tools.")
 (define-public enblend-enfuse
   (package
     (name "enblend-enfuse")
-    (version "4.1.3")
+    (version "4.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/enblend/"
@@ -227,7 +230,7 @@ overlapping images, as well as some command line tools.")
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1b7r1nnwaind0344ckwggy0ghl0ipbk9jzylsxcjfl05rnasw00w"))))
+                "0j5x011ilalb47ssah50ag0a4phgh1b0wdgxdbbp1gcyjcjf60w7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -235,8 +238,10 @@ overlapping images, as well as some command line tools.")
        ("perl-timedate" ,perl-timedate)
        ;; for building the documentation
        ("gnuplot" ,gnuplot)
+       ("help2man" ,help2man)
        ("imagemagick" ,imagemagick)
        ("libxml2" ,libxml2)
+       ("texlive-minimal" ,texlive-minimal)
        ("tidy" ,tidy)
        ("transfig" ,transfig)))
     (inputs
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index ef61239cab..3edb25a42a 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -38,7 +38,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages))
 
@@ -189,7 +189,7 @@ colors, styles, options and details.")
      `(("gs" ,ghostscript)              ;For tests
        ("texinfo" ,texinfo)             ;For generating documentation
        ("texlive" ,texlive)             ;For tests and documentation
-       ("emacs" ,emacs-no-x)
+       ("emacs" ,emacs-minimal)
        ("perl" ,perl)))
     (inputs
      `(("fftw" ,fftw)
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 7739c7a276..0832766512 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -20,7 +20,9 @@
 (define-module (gnu packages popt)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (guix licenses))
 
 (define-public argtable
@@ -88,3 +90,32 @@ similar to getopt(3), it contains a number of enhancements, including:
   - popt provides convience functions for parsing strings into argv[] style
     arrays.")
     (license x11)))
+
+(define-public gflags
+  (package
+    (name "gflags")
+    (version "2.1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (commit (string-append "v" version))
+                    (url "https://github.com/gflags/gflags.git")))
+              (sha256
+               (base32
+                "0qxvr9cyxq3px60jglkm94pq5bil8dkjjdb99l3ypqcds7iypx9w"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"
+                           "-DBUILD_TESTING=ON")))
+    (home-page "https://gflags.github.io/gflags/")
+    (synopsis "C++ library for command-line argument parsing")
+    (description
+     "Gflags is a C++ library to parse command-line flags.  It differs from
+other such libraries in that command-line flag definitions can be scattered
+around the source code, and not just listed in one place such as @code{main}.
+This means that a single source-code file will define and use flags that are
+meaningful to that file.  Any application that links in that file will get the
+flags, and the gflags library will automatically handle that flag
+appropriately.")
+    (license bsd-3)))
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index a1692dd4de..8ba9780685 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,7 +44,10 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))))
+        "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))
+      (patches (search-patches
+                 "a2ps-CVE-2001-1593.patch"
+                 "a2ps-CVE-2014-0466.patch"))))
     (build-system gnu-build-system)
     (inputs
      `(("psutils" ,psutils)
@@ -54,37 +58,36 @@
      `(("gperf" ,gperf)
        ("perl" ,perl)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'patch-scripts
-                 (lambda _
-                   (substitute*
-                       '("afm/make_fonts_map.sh"
-                         "tests/defs"
-                         "tests/backup.tst"
-                         "tests/styles.tst")
-                     (("/bin/rm") (which "rm"))))
-                 (alist-cons-before
-                  'check 'patch-test-files
-                  ;; Alternatively, we could unpatch the shebangs in tstfiles
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    (let ((perl (assoc-ref inputs "perl")))
-                      (substitute* '("tests/ps-ref/includeres.ps"
-                                     "tests/gps-ref/includeres.ps")
-                        (("/usr/local/bin/perl")
-                         (string-append perl "/bin/perl"))))
-                    ;; Some of the reference postscript contain a 'version 3'
-                    ;; string that in inconsistent with the source text in the
-                    ;; tstfiles directory.  Erroneous search-and-replace?
-                    (substitute* '("tests/ps-ref/InsertBlock.ps"
-                                   "tests/gps-ref/InsertBlock.ps"
-                                   "tests/ps-ref/bookie.ps"
-                                   "tests/gps-ref/bookie.ps")
-                      (("version 3") "version 2"))
-                    (substitute* '("tests/ps-ref/psmandup.ps"
-                                   "tests/gps-ref/psmandup.ps")
-                      (("#! */bin/sh") (string-append
-                                        "#!" (which "sh")))))
-                  %standard-phases))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-scripts
+           (lambda _
+             (substitute*
+                 '("afm/make_fonts_map.sh"
+                   "tests/defs"
+                   "tests/backup.tst"
+                   "tests/styles.tst")
+               (("/bin/rm") (which "rm")))))
+         (add-before 'check 'patch-test-files
+           ;; Alternatively, we could unpatch the shebangs in tstfiles
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((perl (assoc-ref inputs "perl")))
+               (substitute* '("tests/ps-ref/includeres.ps"
+                              "tests/gps-ref/includeres.ps")
+                 (("/usr/local/bin/perl")
+                  (string-append perl "/bin/perl"))))
+             ;; Some of the reference postscript contain a 'version 3'
+             ;; string that in inconsistent with the source text in the
+             ;; tstfiles directory.  Erroneous search-and-replace?
+             (substitute* '("tests/ps-ref/InsertBlock.ps"
+                            "tests/gps-ref/InsertBlock.ps"
+                            "tests/ps-ref/bookie.ps"
+                            "tests/gps-ref/bookie.ps")
+               (("version 3") "version 2"))
+             (substitute* '("tests/ps-ref/psmandup.ps"
+                            "tests/gps-ref/psmandup.ps")
+               (("#! */bin/sh") (string-append
+                                 "#!" (which "sh")))))))))
     (home-page "http://www.gnu.org/software/a2ps")
     (synopsis "Any file to PostScript, including pretty-printing")
     (description
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d2698d4231..0c86183e42 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +45,7 @@
   #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages adns)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
@@ -57,6 +59,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages maths)
@@ -68,7 +71,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages statistics)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
@@ -5462,7 +5465,7 @@ should be stored on various operating systems.")
 (define-public python-llfuse
   (package
     (name "python-llfuse")
-    (version "1.0")
+    (version "1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5470,7 +5473,7 @@ should be stored on various operating systems.")
                     "llfuse-" version ".tar.bz2"))
               (sha256
                (base32
-                "1li7q04ljrvwharw4fblcbfhvk6s0l3lnv8yqb4c22lcgbkiqlps"))))
+                "1ywzbqkahrfl9kkcasxrmgilv6fybapvh6pqvimimnfh7sgxal72"))))
     (build-system python-build-system)
     (inputs
      `(("fuse" ,fuse)
@@ -5806,6 +5809,35 @@ IPv6 addresses and networks.  This is a port of the Python 3.3 ipaddress
 module to older versions of Python.")
     (license psfl)))
 
+(define-public python2-ipaddr
+  (package
+    (name "python2-ipaddr")
+    (version "2.1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ipaddr" version))
+       (sha256
+        (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2                         ;version 2 only
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* _
+             (zero? (system* "python" "ipaddr_test.py")))))))
+    (home-page "https://github.com/google/ipaddr-py")
+    (synopsis "IP address manipulation library")
+    (description
+     "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
+IPv6 addresses and networks.
+
+For new implementations you may prefer to use the standard module
+@code{ipaddress}, which was introduced in Python 3.3 and backported to older
+versions of Python.")
+    (license asl2.0)))
+
 (define-public python-idna
   (package
     (name "python-idna")
@@ -8807,3 +8839,192 @@ the renaming, moving and extracting of attributes, functions, modules, fields
 and parameters in Python 2 source code.  These refactorings can also be applied
 to occurences in strings and comments.")
     (license gpl2)))
+
+(define-public python-py3status
+  (package
+    (name "python-py3status")
+    (version "2.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "py3status" version))
+       (sha256
+        (base32
+         "09y7h8rjay5kzwk5akq7f5f9wqnvjkxhivck04hdc8ny1nw3vqzp"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/ultrabug/py3status")
+    (synopsis "Extensible i3status wrapper written in Python")
+    (description "py3status is an i3status wrapper which extends i3status
+functionality in a modular way, allowing you to extend your panel with your
+own code, responding to click events and updating clock every second.")
+    (license bsd-3)))
+
+(define-public python-tblib
+  (package
+    (name "python-tblib")
+    (version "1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "tblib" version))
+              (sha256 (base32
+                       "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Upstream runs tests after installation and the package itself
+             ;; resides in a subdirectory. Extend PYTHONPATH so it will be
+             ;; found.
+             (setenv "PYTHONPATH"
+                     (string-append (getcwd) "/build/lib:"
+                                    (getenv "PYTHONPATH")))
+             (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/ionelmc/python-tblib")
+    (synopsis "Traceback serialization library")
+    (description
+     "Traceback serialization allows you to:
+
+@enumerate
+@item Pickle tracebacks and raise exceptions with pickled tracebacks in
+different processes.  This allows better error handling when running code over
+multiple processes (imagine multiprocessing, billiard, futures, celery etc).
+
+@item Parse traceback strings and raise with the parsed tracebacks.
+@end itemize")
+    (license bsd-3)))
+
+(define-public python2-tblib
+  (package-with-python2 python-tblib))
+
+(define-public python-sqlparse
+  (package
+    (name "python-sqlparse")
+    (version "0.1.19")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "sqlparse" version))
+              (sha256
+               (base32
+                "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* _
+             ;; setup.py-integrated 2to3 only affects the build files, but
+             ;; py.test is using the source files. So we need to convert them
+             ;; manually.
+             (when (zero? (system* "python3"))
+               (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
+             (zero? (system* "py.test")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/andialbrecht/sqlparse")
+    (synopsis "Non-validating SQL parser")
+    (description "Sqlparse is a non-validating SQL parser for Python.  It
+provides support for parsing, splitting and formatting SQL statements.")
+    (license bsd-3)))
+
+(define-public python2-sqlparse
+  (package-with-python2 python-sqlparse))
+
+(define-public python-greenlet
+  (package
+    (name "python-greenlet")
+    (version "0.4.9")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "greenlet" version))
+              (sha256
+               (base32
+                "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://greenlet.readthedocs.io/")
+    (synopsis "Lightweight in-process concurrent programming")
+    (description
+     "Greenlet package is a spin-off of Stackless, a version of CPython
+that supports micro-threads called \"tasklets\".  Tasklets run
+pseudo-concurrently (typically in a single or a few OS-level threads) and
+are synchronized with data exchanges on \"channels\".")
+    (license (list psfl license:expat))))
+
+(define-public python2-greenlet
+  (package-with-python2 python-greenlet))
+
+(define-public python-gevent
+  (package
+    (name "python-gevent")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gevent" version))
+              (sha256
+               (base32
+                "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; unbunding libev and c-ares
+                  (for-each delete-file-recursively '("libev" "c-ares"))
+                  ;; fixing testsuite
+                  (call-with-output-file "greentest/__init__.py" noop)
+                  (substitute* "greentest/testrunner.py"
+                    (("import util") "from . import util")
+                    (("from util import log") "from .util import log"))))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-greenlet" ,python-greenlet)))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-six" ,python-six)))
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("libev" ,libev)))
+    (home-page "http://www.gevent.org/")
+    (synopsis "Coroutine-based network library")
+    (description
+     "gevent is a coroutine-based Python networking library that uses greenlet
+to provide a high-level synchronous API on top of the libev event loop.")
+    (license license:expat)))
+
+(define-public python2-gevent
+  (package-with-python2 python-gevent))
+
+(define-public python-twisted
+  (package
+    (name "python-twisted")
+    (version "16.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (list (pypi-uri "Twisted" version ".tar.bz2") ; 404
+                         (string-append
+                          "https://pypi.io/packages/source/T/Twisted/"
+                          "Twisted-" version ".tar.bz2")))
+              (sha256
+               (base32
+                "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-zope-interface" ,python-zope-interface)))
+    (home-page "https://twistedmatrix.com/")
+    (synopsis "Asynchronous networking framework written in Python")
+    (description
+     "Twisted is an extensible framework for Python programming, with special
+focus on event-based network programming and multiprotocol integration.")
+    (license license:expat)))
+
+(define-public python2-twisted
+  (package-with-python2 python-twisted))
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 6dd6ce4d76..4d78f9b086 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
@@ -65,55 +65,58 @@
                "1v1lhhd6m59hqgmiz100g779rjq70pik5v4b3g936ci73djlmb69"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs (configure-flags '())
-                           #:allow-other-keys)
-                   ;; The `configure' script doesn't understand some of the
-                   ;; GNU options.  Thus, add a new phase that's compatible.
-                   (let ((out (assoc-ref outputs "out")))
-                     (setenv "SHELL" (which "bash"))
+     '(;; Running tests in parallel can occasionally lead to failures, like:
+       ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead)
+       #:parallel-tests? #f
 
-                     ;; While we're at it, patch for tests.
-                     (substitute* "tests/libqtest.c"
-                       (("/bin/sh") (which "sh")))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs (configure-flags '())
+                           #:allow-other-keys)
+             ;; The `configure' script doesn't understand some of the
+             ;; GNU options.  Thus, add a new phase that's compatible.
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "SHELL" (which "bash"))
 
-                     ;; The binaries need to be linked against -lrt.
-                     (setenv "LDFLAGS" "-lrt")
-                     (zero?
-                      (apply system*
-                             `("./configure"
-                               ,(string-append "--cc=" (which "gcc"))
-                               "--disable-debug-info" ; save build space
-                               "--enable-virtfs"      ; just to be sure
-                               ,(string-append "--prefix=" out)
-                               ,@configure-flags)))))
-                 (alist-cons-after
-                  'install 'install-info
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    ;; Install the Info manual, unless Texinfo is missing.
-                    (or (not (assoc-ref inputs "texinfo"))
-                        (let ((out (assoc-ref outputs "out")))
-                          (and (zero? (system* "make" "info"))
-                               (let ((infodir (string-append out "/share/info")))
-                                 (mkdir-p infodir)
-                                 (for-each (lambda (info)
-                                             (copy-file
-                                              info
-                                              (string-append infodir "/" info)))
-                                           (find-files "." "\\.info$"))
-                                 #t)))))
-                  (alist-cons-before
-                   'check 'disable-test-qga
-                   (lambda _
-                     (substitute* "tests/Makefile"
-                       ;; Comment out the test-qga test, which needs /sys and
-                       ;; fails within the build environment.
-                       (("check-unit-.* tests/test-qga" all)
-                        (string-append "# " all)))
-                     #t)
-                   %standard-phases)))))
+               ;; While we're at it, patch for tests.
+               (substitute* "tests/libqtest.c"
+                 (("/bin/sh") (which "sh")))
 
+               ;; The binaries need to be linked against -lrt.
+               (setenv "LDFLAGS" "-lrt")
+               (zero?
+                (apply system*
+                       `("./configure"
+                         ,(string-append "--cc=" (which "gcc"))
+                         "--disable-debug-info" ; save build space
+                         "--enable-virtfs"      ; just to be sure
+                         ,(string-append "--prefix=" out)
+                         ,@configure-flags))))))
+         (add-after 'install 'install-info
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Install the Info manual, unless Texinfo is missing.
+             (or (not (assoc-ref inputs "texinfo"))
+                 (let ((out (assoc-ref outputs "out")))
+                   (and (zero? (system* "make" "info"))
+                        (let ((infodir (string-append out "/share/info")))
+                          (mkdir-p infodir)
+                          (for-each (lambda (info)
+                                      (install-file info infodir))
+                                    (find-files "." "\\.info$"))
+                          #t))))))
+         (add-before 'check 'make-gtester-verbose
+           (lambda _
+             ;; Make GTester verbose to facilitate investigation upon failure.
+             (setenv "V" "1")))
+         (add-before 'check 'disable-test-qga
+           (lambda _
+             (substitute* "tests/Makefile"
+               ;; Comment out the test-qga test, which needs /sys and
+               ;; fails within the build environment.
+               (("check-unit-.* tests/test-qga" all)
+                (string-append "# " all)))
+             #t)))))
     (inputs                                       ; TODO: Add optional inputs.
      `(("sdl" ,sdl)
        ("mesa" ,mesa)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 47720384c2..acfda4a2df 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -20,7 +20,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages qt)
-  #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ x11-style))
+  #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ lgpl3 x11-style))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build utils)
@@ -298,6 +298,139 @@ developers using C++ or QML, a CSS & JavaScript like language.")
               (delete-file-recursively olddoc)
               #t))))))))
 
+(define-public qtbase
+  (package
+    (name "qtbase")
+    (version "5.6.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://download.qt.io/official_releases/qt/"
+                                 (version-major+minor version) "/" version
+                                 "/submodules/" name "-opensource-src-"
+                                 version ".tar.xz"))
+             (sha256
+               (base32
+                 "0ynnvcs5idivzldsq5ciqg9myg82b3l3906l4vjv54lyamf8mykf"))
+             (modules '((guix build utils)))
+             (snippet
+              '(begin
+                ;; Remove one of the two bundled harfbuzz copies in addition
+                ;; to passing "-system-harfbuzz".
+                (delete-file-recursively "src/3rdparty/harfbuzz-ng")
+                ;; Remove the bundled sqlite copy in addition to
+                ;; passing "-system-sqlite".
+                (delete-file-recursively "src/3rdparty/sqlite")))))
+    (build-system gnu-build-system)
+    (propagated-inputs
+     `(("mesa" ,mesa)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("cups" ,cups)
+       ("dbus" ,dbus)
+       ("expat" ,expat)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("glib" ,glib)
+       ("harfbuzz" ,harfbuzz)
+       ("icu4c" ,icu4c)
+       ("libjpeg" ,libjpeg)
+       ("libmng" ,libmng)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)
+       ("libxcomposite" ,libxcomposite)
+       ("libxcursor" ,libxcursor)
+       ("libxfixes" ,libxfixes)
+       ("libxi" ,libxi)
+       ("libxinerama" ,libxinerama)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxml2" ,libxml2)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxslt" ,libxslt)
+       ("libxtst" ,libxtst)
+       ("mtdev" ,mtdev)
+       ("mysql" ,mysql)
+       ("nss" ,nss)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("postgresql" ,postgresql)
+       ("pulseaudio" ,pulseaudio)
+       ("sqlite" ,sqlite)
+       ("unixodbc" ,unixodbc)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-image" ,xcb-util-image)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-renderutil" ,xcb-util-renderutil)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("gperf" ,gperf)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-2)
+       ("ruby" ,ruby)
+       ("which" ,(@ (gnu packages base) which))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-bin-sh
+           (lambda _
+             (substitute* '("config.status"
+                            "configure"
+                            "mkspecs/features/qt_functions.prf"
+                            "qmake/library/qmakebuiltins.cpp")
+                          (("/bin/sh") (which "sh")))
+             #t))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "configure"
+                 (("/bin/pwd") (which "pwd")))
+               (substitute* "src/corelib/global/global.pri"
+                 (("/bin/ls") (which "ls")))
+               ;; do not pass "--enable-fast-install", which makes the
+               ;; configure process fail
+               (zero? (system*
+                       "./configure"
+                       "-verbose"
+                       "-prefix" out
+                       "-opensource"
+                       "-confirm-license"
+                       ;; Do not build examples; if desired, these could go
+                       ;; into a separate output, but for the time being, we
+                       ;; prefer to save the space and build time.
+                       "-nomake" "examples"
+                       ;; Most "-system-..." are automatic, but some use
+                       ;; the bundled copy by default.
+                       "-system-sqlite"
+                       "-system-harfbuzz"
+                       ;; explicitly link with openssl instead of dlopening it
+                       "-openssl-linked"
+                       ;; explicitly link with dbus instead of dlopening it
+                       "-dbus-linked"
+                       ;; drop special machine instructions not supported
+                       ;; on all instances of the target
+                       ,@(if (string-prefix? "x86_64"
+                                             (or (%current-target-system)
+                                                 (%current-system)))
+                             '()
+                             '("-no-sse2"))
+                       "-no-sse3"
+                       "-no-ssse3"
+                       "-no-sse4.1"
+                       "-no-sse4.2"
+                       "-no-avx"
+                       "-no-avx2"
+                       "-no-mips_dsp"
+                       "-no-mips_dspr2"))))))))
+    (home-page "https://www.qt.io/")
+    (synopsis "Cross-platform GUI library")
+    (description "Qt is a cross-platform application and UI framework for
+developers using C++ or QML, a CSS & JavaScript like language.")
+    (license (list lgpl2.1 lgpl3))))
+
 (define-public qjson
   (package
     (name "qjson")
@@ -325,17 +458,16 @@ while JSON objects are mapped to QVariantMap.")
 (define-public python-sip
   (package
     (name "python-sip")
-    (version "4.16.9")
+    (version "4.18")
     (source
       (origin
         (method url-fetch)
         (uri
           (string-append "mirror://sourceforge/pyqt/sip/"
-                         "sip-" version "/sip-"
-                         version ".tar.gz"))
+                         "sip-" version "/sip-" version ".tar.gz"))
         (sha256
          (base32
-          "0m85dgm3g9s9h7s5sfxvcxi423vqxwq1vg5wnl5wl9kfasm77qfv"))))
+          "1dlw4kyiwd9bzmd1djm79c121r219abaz86lvizdk6ksq20mrp7i"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-wrapper)))
@@ -344,29 +476,28 @@ while JSON objects are mapped to QVariantMap.")
        #:modules ((srfi srfi-1)
                   ,@%gnu-build-system-modules)
        #:phases
-         (alist-replace
-          'configure
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (bin (string-append out "/bin"))
-                   (include (string-append out "/include"))
-                   (python (assoc-ref inputs "python"))
-                   (python-version
-                     (last (string-split python #\-)))
-                   (python-major+minor
-                     (string-join
-                       (take (string-split python-version #\.) 2)
-                       "."))
-                   (lib (string-append out "/lib/python"
-                                       python-major+minor
-                                       "/site-packages")))
-              (zero?
-                (system* "python" "configure.py"
-                         "--bindir" bin
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (include (string-append out "/include"))
+                    (python (assoc-ref inputs "python"))
+                    (python-version
+                      (last (string-split python #\-)))
+                    (python-major+minor
+                      (string-join
+                        (take (string-split python-version #\.) 2)
+                        "."))
+                    (lib (string-append out "/lib/python"
+                                        python-major+minor
+                                        "/site-packages")))
+               (zero?
+                 (system* "python" "configure.py"
+                          "--bindir" bin
                           "--destdir" lib
-                         "--incdir" include))))
-          %standard-phases)))
-    (home-page "http://www.riverbankcomputing.com/software/sip/intro")
+                          "--incdir" include))))))))
+    (home-page "https://www.riverbankcomputing.com/software/sip/intro")
     (synopsis "Python binding creator for C and C++ libraries")
     (description
      "SIP is a tool to create Python bindings for C and C++ libraries.  It
@@ -390,56 +521,55 @@ module provides support functions to the automatically generated code.")
 (define-public python-pyqt
   (package
     (name "python-pyqt")
-    (version "5.5")
+    (version "5.6")
     (source
       (origin
         (method url-fetch)
         (uri
           (string-append "mirror://sourceforge/pyqt/PyQt5/"
-                         "PyQt-" version "/PyQt-gpl-"
+                         "PyQt-" version "/PyQt5_gpl-"
                          version ".tar.gz"))
         (sha256
          (base32
-          "056qmkv02wdcfblqdaxiswrgn4wa88sz22i1x58dpb1iniavplfd"))
+          "1qgh42zsr9jppl9k7fcdbhxcd1wrb7wyaj9lng9nxfa19in1lj1f"))
        (patches (search-patches "pyqt-configure.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python-sip" ,python-sip)
-       ("qt" ,qt))) ; for qmake
+       ("qtbase" ,qtbase))) ; for qmake
     (inputs
      `(("python" ,python-wrapper)))
     (arguments
      `(#:modules ((srfi srfi-1)
                   ,@%gnu-build-system-modules)
        #:phases
-         (alist-replace
-         'configure
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let* ((out (assoc-ref outputs "out"))
-                  (bin (string-append out "/bin"))
-                  (sip (string-append out "/share/sip"))
-                  (plugins (string-append out "/plugins"))
-                  (designer (string-append plugins "/designer"))
-                  (qml (string-append plugins "/PyQt5"))
-                  (python (assoc-ref inputs "python"))
-                  (python-version
-                    (last (string-split python #\-)))
-                  (python-major+minor
-                    (string-join
-                      (take (string-split python-version #\.) 2)
-                      "."))
-                  (lib (string-append out "/lib/python"
-                                      python-major+minor
-                                      "/site-packages")))
-             (zero? (system* "python" "configure.py"
-                             "--confirm-license"
-                             "--bindir" bin
-                             "--destdir" lib
-                             "--designer-plugindir" designer
-                             "--qml-plugindir" qml
-                             "--sipdir" sip))))
-         %standard-phases)))
-    (home-page "http://www.riverbankcomputing.com/software/pyqt/intro")
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (sip (string-append out "/share/sip"))
+                    (plugins (string-append out "/plugins"))
+                    (designer (string-append plugins "/designer"))
+                    (qml (string-append plugins "/PyQt5"))
+                    (python (assoc-ref inputs "python"))
+                    (python-version
+                      (last (string-split python #\-)))
+                    (python-major+minor
+                      (string-join
+                        (take (string-split python-version #\.) 2)
+                        "."))
+                    (lib (string-append out "/lib/python"
+                                        python-major+minor
+                                        "/site-packages")))
+               (zero? (system* "python" "configure.py"
+                               "--confirm-license"
+                               "--bindir" bin
+                               "--destdir" lib
+                               "--designer-plugindir" designer
+                               "--qml-plugindir" qml
+                               "--sipdir" sip))))))))
+    (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
     (synopsis "Python bindings for Qt")
     (description
      "PyQt is a set of Python v2 and v3 bindings for the Qt application
@@ -452,7 +582,7 @@ contain over 620 classes.")
     (name "python2-pyqt")
     (native-inputs
      `(("python-sip" ,python2-sip)
-       ("qt" ,qt)))
+       ("qtbase" ,qtbase)))
     (inputs
      `(("python" ,python-2)))))
 
@@ -505,7 +635,7 @@ contain over 620 classes.")
 (define-public qtkeychain
   (package
     (name "qtkeychain")
-    (version "0.6.2")
+    (version "0.7.0")
     (source
       (origin
         (method url-fetch)
@@ -513,7 +643,7 @@ contain over 620 classes.")
                             "archive/v" version ".tar.gz"))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-         (base32 "0g76pa786mg0fxy52hrljw09dvi6kffk2ms42lxapvpy6j94a4xf"))))
+         (base32 "0fka5q5cdzlf79igcjgbnb2smvwbwfasqawkzkbr34whispgm6lz"))))
     (build-system cmake-build-system)
     (inputs
      `(("qt" ,qt)))
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
new file mode 100644
index 0000000000..e1e14f5b70
--- /dev/null
+++ b/gnu/packages/rails.scm
@@ -0,0 +1,95 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rails)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (gnu packages ruby)
+  #:use-module (guix build-system ruby))
+
+(define-public ruby-spring
+  (package
+    (name "ruby-spring")
+    (version "1.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/rails/spring/archive/v"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0czc4mkwfngcqmna49a0l98f6wlhdq2i8gwr63lrmk90d9k25x1n"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "test:unit"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'remove-bump
+           (lambda _
+             (substitute* "spring.gemspec"
+               (("gem.add_development_dependency 'bump'") ""))
+             (substitute* "Rakefile"
+               (("require \\\"bump/tasks\\\"") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-activesupport" ,ruby-activesupport)))
+    (synopsis "Ruby on Rails application preloader")
+    (description
+     "Spring is a Ruby on Rails application preloader.  It speeds up
+development by keeping your application running in the background so the
+application does need to boot it every time you run a test, rake task or
+migration.")
+    (home-page "https://github.com/rails/spring")
+    (license license:expat)))
+
+(define-public ruby-debug-inspector
+  (package
+    (name "ruby-debug-inspector")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "debug_inspector" version))
+       (sha256
+        (base32
+         "109761g00dbrw5q0dfnbqg8blfm699z4jj70l4zrgf9mzn7ii50m"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (and
+              (zero? (system* "rake" "compile"))
+              (zero?
+               (system*
+                "ruby" "-Ilib" "-e"
+                (string-append
+                 "require 'debug_inspector'; RubyVM::DebugInspector."
+                 "open{|dc| p dc.backtrace_locations}")))))))))
+    (synopsis "Ruby wrapper for the MRI 2.0 debug_inspector API")
+    (description
+     "This package provides a Ruby wrapper for the MRI 2.0 debug_inspector
+API.")
+    (home-page
+     "https://github.com/banister/debug_inspector")
+    (license license:expat)))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6c2e08f29d..c6b6eedb9d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -423,13 +423,13 @@ expectations and mocks frameworks.")
 (define-public bundler
   (package
     (name "bundler")
-    (version "1.11.2")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "bundler" version))
               (sha256
                (base32
-                "0s37j1hyngc4shq0in8f9y1knjdqkisdg3dd1mfwgq7n1bz8zan7"))))
+                "1q84xiwm9j771lpmiply0ls9l2bpvl5axn3jblxjvrldh8di2pkc"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -1707,6 +1707,33 @@ instance, it provides @code{assert_true}, @code{assert_false} and
     (home-page "http://blowmage.com/minitest-rg")
     (license license:expat)))
 
+(define-public ruby-minitest-hooks
+  (package
+    (name "ruby-minitest-hooks")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "minitest-hooks" version))
+       (sha256
+        (base32
+         "092fymh0c09v3a585qw3hc15b0zf159s74rxx1ga87drk5jr958z"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"))
+    (native-inputs
+     `(("ruby-sequel" ,ruby-sequel)
+       ("ruby-sqlite3" ,ruby-sqlite3)))
+    (synopsis "Hooks for the minitest framework")
+    (description
+     "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
+@code{around_all} hooks for Minitest.  This allows, for instance, running each
+suite of specs inside a database transaction, running each spec inside its own
+savepoint inside that transaction.  This can significantly speed up testing
+for specs that share expensive database setup code.")
+    (home-page "http://github.com/jeremyevans/minitest-hooks")
+    (license license:expat)))
+
 (define-public ruby-daemons
   (package
     (name "ruby-daemons")
@@ -1871,24 +1898,24 @@ to reproduce user environments.")
 
 (define-public ruby-mini-portile-2
   (package (inherit ruby-mini-portile)
-    (version "2.0.0")
+    (version "2.1.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "mini_portile2" version))
               (sha256
                (base32
-                "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l"))))))
+                "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb"))))))
 
 (define-public ruby-nokogiri
   (package
     (name "ruby-nokogiri")
-    (version "1.6.7.1")
+    (version "1.6.7.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "nokogiri" version))
               (sha256
                (base32
-                "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2"))))
+                "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv"))))
     (build-system ruby-build-system)
     (arguments
      ;; Tests fail because Nokogiri can only test with an installed extension,
@@ -1897,7 +1924,13 @@ to reproduce user environments.")
        #:gem-flags (list "--" "--use-system-libraries"
                          (string-append "--with-xml2-include="
                                         (assoc-ref %build-inputs "libxml2")
-                                        "/include/libxml2" ))))
+                                        "/include/libxml2" ))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'extract-gemspec 'update-dependency
+           (lambda _
+             (substitute* ".gemspec" (("2.0.0.rc2") "2.0"))
+             #t)))))
     (native-inputs
      `(("ruby-hoe" ,ruby-hoe)
        ("ruby-rake-compiler" ,ruby-rake-compiler)))
@@ -2505,67 +2538,68 @@ multibyte strings, internationalization, time zones, and testing.")
     (license license:expat)))
 
 (define-public ruby-nokogumbo
-  (package
-    (name "ruby-nokogumbo")
-    (version "1.4.6")
-    (source (origin
-              ;; We use the git reference, because there's no Rakefile in the
-              ;; published gem and the tarball on Github is outdated.
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/rubys/nokogumbo.git")
-                    (commit "d56f954d20a")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:modules ((guix build ruby-build-system)
-                  (guix build utils)
-                  (ice-9 rdelim))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'build-gemspec
-          (lambda _
-            (substitute* "Rakefile"
-              ;; Build Makefile even without a copy of gumbo-parser sources
-              (("'gumbo-parser/src',") "")
-              ;; We don't bundle gumbo-parser sources
-              (("'gumbo-parser/src/\\*',") "")
-              (("'gumbo-parser/visualc/include/\\*',") "")
-              ;; The definition of SOURCES will be cut in gemspec, and
-              ;; "FileList" will be undefined.
-              (("SOURCES \\+ FileList\\[")
-               "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
-
-            ;; Copy the Rakefile and cut out the gemspec.
-            (copy-file "Rakefile" ".gemspec")
-            (with-atomic-file-replacement ".gemspec"
-              (lambda (in out)
-                (let loop ((line (read-line in 'concat))
-                           (skipping? #t))
-                  (if (eof-object? line)
-                      #t
-                      (let ((skip-next? (if skipping?
-                                            (not (string-prefix? "SPEC =" line))
-                                            (string-prefix? "end" line))))
-                        (when (or (not skipping?)
-                                  (and skipping? (not skip-next?)))
-                          (format #t "~a" line)
-                          (display line out))
-                        (loop (read-line in 'concat) skip-next?))))))
-            #t)))))
-    (inputs
-     `(("gumbo-parser" ,gumbo-parser)))
-    (propagated-inputs
-     `(("ruby-nokogiri" ,ruby-nokogiri)))
-    (synopsis "Ruby bindings to the Gumbo HTML5 parser")
-    (description
-     "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
+  (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
+    (package
+      (name "ruby-nokogumbo")
+      (version (string-append "1.4.7-1." (string-take commit 8)))
+      (source (origin
+                ;; We use the git reference, because there's no Rakefile in the
+                ;; published gem and the tarball on Github is outdated.
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/rubys/nokogumbo.git")
+                      (commit "d56f954d20a")))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
+      (build-system ruby-build-system)
+      (arguments
+       `(#:modules ((guix build ruby-build-system)
+                    (guix build utils)
+                    (ice-9 rdelim))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'build-gemspec
+            (lambda _
+              (substitute* "Rakefile"
+                ;; Build Makefile even without a copy of gumbo-parser sources
+                (("'gumbo-parser/src',") "")
+                ;; We don't bundle gumbo-parser sources
+                (("'gumbo-parser/src/\\*',") "")
+                (("'gumbo-parser/visualc/include/\\*',") "")
+                ;; The definition of SOURCES will be cut in gemspec, and
+                ;; "FileList" will be undefined.
+                (("SOURCES \\+ FileList\\[")
+                 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
+
+              ;; Copy the Rakefile and cut out the gemspec.
+              (copy-file "Rakefile" ".gemspec")
+              (with-atomic-file-replacement ".gemspec"
+                (lambda (in out)
+                  (let loop ((line (read-line in 'concat))
+                             (skipping? #t))
+                    (if (eof-object? line)
+                        #t
+                        (let ((skip-next? (if skipping?
+                                              (not (string-prefix? "SPEC =" line))
+                                              (string-prefix? "end" line))))
+                          (when (or (not skipping?)
+                                    (and skipping? (not skip-next?)))
+                                (format #t "~a" line)
+                                (display line out))
+                          (loop (read-line in 'concat) skip-next?))))))
+              #t)))))
+      (inputs
+       `(("gumbo-parser" ,gumbo-parser)))
+      (propagated-inputs
+       `(("ruby-nokogiri" ,ruby-nokogiri)))
+      (synopsis "Ruby bindings to the Gumbo HTML5 parser")
+      (description
+       "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
 access the result as a Nokogiri parsed document.")
-    (home-page "https://github.com/rubys/nokogumbo/")
-    (license license:asl2.0)))
+      (home-page "https://github.com/rubys/nokogumbo/")
+      (license license:asl2.0))))
 
 (define-public ruby-sanitize
   (package
@@ -3129,14 +3163,14 @@ that TURN is no longer being maintained.")
 (define-public ruby-mime-types-data
   (package
     (name "ruby-mime-types-data")
-    (version "3.2015.1120")
+    (version "3.2016.0221")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "mime-types-data" version))
        (sha256
         (base32
-         "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic"))))
+         "05ygjn0nnfh6yp1wsi574jckk95wqg9a6g598wk4svvrkmkrzkpn"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("ruby-hoe" ,ruby-hoe)))
@@ -3153,14 +3187,14 @@ look up the likely MIME type definitions.")
 (define-public ruby-mime-types
   (package
     (name "ruby-mime-types")
-    (version "3.0")
+    (version "3.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "mime-types" version))
        (sha256
         (base32
-         "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra"))))
+         "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
     (build-system ruby-build-system)
     (propagated-inputs
      `(("ruby-mime-types-data" ,ruby-mime-types-data)))
@@ -3169,7 +3203,8 @@ look up the likely MIME type definitions.")
        ("ruby-fivemat" ,ruby-fivemat)
        ("ruby-minitest-focus" ,ruby-minitest-focus)
        ("ruby-minitest-rg" ,ruby-minitest-rg)
-       ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)))
+       ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
+       ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
     (synopsis "Library and registry for MIME content type definitions")
     (description "The mime-types library provides a library and registry for
 information about Multipurpose Internet Mail Extensions (MIME) content type
@@ -3265,26 +3300,18 @@ names.")
 (define-public ruby-shoulda-matchers
   (package
     (name "ruby-shoulda-matchers")
-    (version "3.0.1")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "shoulda-matchers" version))
        (sha256
         (base32
-         "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb"))))
+         "1cf6d2d9br82vylr9p362yk9cfrd14jz8v77n0yb0lbcxdbk7xzq"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'build 'fix-import
-           (lambda _
-             ;; A presumed bug reported upstream at
-             ;; https://github.com/thoughtbot/shoulda-matchers/pull/871
-             (substitute* (string-append  "lib/shoulda/matchers/active_model/"
-                                          "validate_inclusion_of_matcher.rb")
-               (("^require 'bigdecimal'")
-                "require 'bigdecimal'; require 'date'"))))
          (replace 'check
            (lambda _
              ;; Do not run tests to avoid circular dependence with rails.  Instead
@@ -3380,14 +3407,14 @@ support to both Ruby and JRuby.  It uses @code{unf_ext} on CRuby and
 (define-public ruby-domain-name
   (package
     (name "ruby-domain-name")
-    (version "0.5.25")
+    (version "0.5.20160310")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "domain_name" version))
        (sha256
         (base32
-         "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav"))))
+         "0g1175zspkqhlvl9s11g7p2nbmqpvpxxv02q8csd0ryc81laapys"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -3878,3 +3905,25 @@ part of the Prawn PDF generator.")
     ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
     ;; for details."
     (license (list license:gpl2 license:gpl3 license:ruby))))
+
+(define-public ruby-sequel
+  (package
+    (name "ruby-sequel")
+    (version "4.34.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "sequel" version))
+       (sha256
+        (base32
+         "0qscddpfwcajggxvbm4a4jv8kkpn6q056bgdg03km34bz8bis1x1"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
+    (synopsis "Database toolkit for Ruby")
+    (description "Sequel provides thread safety, connection pooling and a
+concise DSL for constructing SQL queries and table schemas.  It includes a
+comprehensive ORM layer for mapping records to Ruby objects and handling
+associated records.")
+    (home-page "http://sequel.jeremyevans.net")
+    (license license:expat)))
diff --git a/gnu/packages/rush.scm b/gnu/packages/rush.scm
index 6926f68787..cf9e49a7e3 100644
--- a/gnu/packages/rush.scm
+++ b/gnu/packages/rush.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +36,8 @@
              (sha256
               (base32
                "0fh0gbbp0iiq3wbkf503xb40r8ljk42vyj9bnlflbz82d6ipy1rm"))
-             (patches (search-patches "cpio-gets-undeclared.patch"))))
+             (patches (search-patches "cpio-gets-undeclared.patch"
+                                      "rush-CVE-2013-6889.patch"))))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org/software/rush/")
     (synopsis "Restricted user (login) shell")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index c345d59ed3..e409dd546e 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -41,7 +41,7 @@
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages netpbm)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages pkg-config)
@@ -736,7 +736,7 @@ and 32-bit PowerPC architectures.")
       (build-system gnu-build-system)
       (inputs
        `(("mit-scheme" ,mit-scheme)
-         ("emacs" ,emacs-no-x)))
+         ("emacs" ,emacs-minimal)))
       (arguments
        `(#:tests? #f ;; no tests-suite
          #:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index 4b9bacf3e5..5827a1c53e 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,23 +68,23 @@ view to show two terminals at once.")
 (define-public dtach
   (package
     (name "dtach")
-    (version "0.8")
+    (version "0.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/dtach/dtach-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1agjp08zxxxfni62sqx9qsd9526yqwlz7ry07lfq3clavyylwq8n"))))
+                "1wwj2hlngi8qn2pisvhyfxxs8gyqjlgrrv5lz91w8ly54dlzvs9j"))))
     (build-system gnu-build-system)
     (arguments
      ;; No install target.
-     '(#:phases (alist-replace
-                 'install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (install-file "dtach" (string-append out "/bin"))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (install-file "dtach" (string-append out "/bin"))))))
        ;; No check target.
        #:tests? #f))
     (home-page "http://dtach.sourceforge.net/")
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
new file mode 100644
index 0000000000..95c7591480
--- /dev/null
+++ b/gnu/packages/speech.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages speech)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages gcc))
+
+(define-public mitlm
+  (package
+    (name "mitlm")
+    (version "0.4.1")
+    ;; No official release tarballs, so for now we use the one from Debian
+    ;; that is maintained by one of the project developers.
+    ;;
+    ;; See: https://github.com/mitlm/mitlm/issues/54
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://debian/pool/main/m/mitlm/mitlm_"
+                                  version ".orig.tar.gz"))
+              (sha256
+               (base32
+                "12m09xxx8jbir9cnzzaysvni5sfijpfj96z1x1520qqvmpc8lmn7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (synopsis "The MIT Language Modeling toolkit")
+    (description "The MIT Language Modeling (MITLM) toolkit is a set of
+tools designed for the efficient estimation of statistical n-gram language
+models involving iterative parameter estimation.  It achieves much of its
+efficiency through the use of a compact vector representation of n-grams.")
+    (home-page "https://github.com/mitlm/mitlm")
+    (license license:expat)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 43f9042e9c..1288d9d7ef 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -792,6 +792,29 @@ generation in R using Literate Programming techniques.")
     ;; here.
     (license license:gpl2+)))
 
+(define-public r-knitrbootstrap
+  (package
+    (name "r-knitrbootstrap")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "knitrBootstrap" version))
+       (sha256
+        (base32
+         "0pshn2slzqwpryklslsxwh1dmqcnwv6bwi7yfm6m342wjybpk0wl"))))
+    (properties `((upstream-name . "knitrBootstrap")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-knitr" ,r-knitr)
+       ("r-rmarkdown" ,r-rmarkdown)))
+    (home-page "https://github.com/jimhester/knitrBootstrap")
+    (synopsis "Knitr bootstrap framework")
+    (description
+     "This package provides a framework to create Bootstrap 3 HTML reports
+from knitr Rmarkdown.")
+    (license license:expat)))
+
 (define-public r-microbenchmark
   (package
     (name "r-microbenchmark")
@@ -2617,6 +2640,46 @@ noncentral hypergeometric distribution (also called extended hypergeometric
 distribution).")
    (license license:gpl3+)))
 
+(define-public r-runit
+  (package
+    (name "r-runit")
+    (version "0.4.31")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "RUnit" version))
+       (sha256
+        (base32
+         "1jqr871jkll2xmk7wk5hv1z3a36hyn2ibgivw7bwk4b346940xlx"))))
+    (properties `((upstream-name . "RUnit")))
+    (build-system r-build-system)
+    (home-page "http://cran.r-project.org/web/packages/RUnit")
+    (synopsis "R unit test framework")
+    (description
+     "This package provides R functions implementing a standard unit testing
+framework, with additional code inspection and report generation tools.")
+    (license license:gpl2+)))
+
+(define-public r-zoo
+  (package
+    (name "r-zoo")
+    (version "1.7-13")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "zoo" version))
+              (sha256
+               (base32
+                "0m67bnrg7r1jxvs9p7rpa430szp5qfp65r056yb8bivpc16jd98c"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lattice" ,r-lattice)))
+    (home-page "http://zoo.R-Forge.R-project.org/")
+    (synopsis "S3 infrastructure for regular and irregular time series")
+    (description "This package contains an S3 class with methods for totally
+ordered indexed observations.  It is particularly aimed at irregular time
+series of numeric vectors/matrices and factors.")
+    (license license:gpl2+)))
+
 (define-public r-ztable
   (package
     (name "r-ztable")
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index bc70eaf838..ecff82ce7b 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,16 +33,16 @@
 (define-public synergy
   (package
     (name "synergy")
-    (version "1.7.4")
+    (version "1.7.6")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://github.com/synergy/synergy/archive/"
+      (uri (string-append "https://github.com/symless/synergy/archive/"
                           "v" version "-stable.tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "1prb06dmi4bhfsraih4hzlsfiraiczgzhqy9gjsxygczif8w6p91"))
+        "07a1g2kh4f064nqjdqgfzrjfayls31scnssphbndmnvfc20bhlx4"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove ~14MB of unnecessary bundled source and binaries
@@ -65,25 +66,23 @@
     (arguments
      `(#:phases
        (let ((srcdir (string-append "../synergy-" ,version "-stable")))
-         (alist-cons-before
-          'configure 'unpack-aux-src
-          ;; TODO: package and use from system
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((unzip (string-append
-                          (assoc-ref inputs "unzip")
-                          "/bin/unzip")))
-              (with-directory-excursion "ext"
-                (for-each
-                 (lambda (f)
-                   (system* unzip "-d" f (string-append f ".zip")))
-                 '("gmock-1.6.0" "gtest-1.6.0")))))
-          (alist-replace
-           'check
-           ;; Don't run "integtests" as it requires network and X an display.
-           (lambda _
-             (zero? (system* (string-append srcdir "/bin/unittests"))))
-           (alist-replace
-            'install
+         (modify-phases %standard-phases
+           (add-before 'configure 'unpack-aux-src
+             ;; TODO: package and use from system
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((unzip (string-append
+                             (assoc-ref inputs "unzip")
+                             "/bin/unzip")))
+                 (with-directory-excursion "ext"
+                   (for-each
+                    (lambda (f)
+                      (system* unzip "-d" f (string-append f ".zip")))
+                    '("gmock-1.6.0" "gtest-1.6.0"))))))
+          (replace 'check
+            ;; Don't run "integtests" as it requires network and X an display.
+            (lambda _
+              (zero? (system* (string-append srcdir "/bin/unittests")))))
+          (replace 'install
             ;; There currently is no installation process, see:
             ;; http://synergy-project.org/spit/issues/details/3317/
             (lambda* (#:key outputs #:allow-other-keys)
@@ -103,9 +102,8 @@
                      (install-file (string-append srcdir "/doc/" e) ex))
                    '("synergy.conf.example"
                      "synergy.conf.example-advanced"
-                     "synergy.conf.example-basic")))))
-            %standard-phases))))))
-    (home-page "http://www.synergy-project.org")
+                     "synergy.conf.example-basic"))))))))))
+    (home-page "http://symless.com/")
     (synopsis "Mouse and keyboard sharing utility")
     (description
      "Synergy brings your computers together in one cohesive experience; its
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 340475c666..701e14a5e2 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -28,14 +28,14 @@
 (define-public taskwarrior
   (package
     (name "taskwarrior")
-    (version "2.4.3")
+    (version "2.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "http://taskwarrior.org/download/task-" version ".tar.gz"))
        (sha256 (base32
-                "1lkbw2fhshynbl7hppar1viapyrs712s14xhd8p3l8gyhvxbh0mv"))))
+                "059a9yc58wcicc6xxsjh1ph7k2yrag0spsahp1wqmsq6h7jwwyyq"))))
     (build-system cmake-build-system)
     (inputs
      `(("gnutls" ,gnutls)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 50a83fbcf3..b27dd1f6d6 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
 
 (define-module (gnu packages telephony)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
@@ -211,3 +213,42 @@ Real-time Transport Protocol (SRTP), the Universal Security Transform (UST),
 and a supporting cryptographic kernel.")
     (home-page "https://github.com/cisco/libsrtp")
     (license bsd-3)))
+
+(define-public libiax2
+  (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201"))
+    ;; This is the commit used by the Ring Project.
+    (package
+      (name "libiax2")
+      (version (string-append "0.0.0-1." (string-take commit 7)))
+      (source
+       (origin
+         (method url-fetch)
+         (uri
+          (string-append
+           "https://gitlab.savoirfairelinux.com/sflphone/libiax2/"
+           "repository/archive.tar.gz?ref="
+           commit))
+         (file-name (string-append name "-" version ".tar.gz"))
+         (sha256
+          (base32
+           "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)))
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (add-before 'configure 'autoconf
+                      (lambda _
+                        (zero? (system* "autoreconf" "-vfi")))))))
+      (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2")
+      (synopsis "Inter-Asterisk-Protocol library")
+      (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying
+Voice-over-IP (VoIP) communications.")
+      ;; The file 'src/md5.c' is released into the public domain by RSA Data
+      ;; Security.  The files 'src/answer.h', 'src/miniphone.c',
+      ;; 'src/options.c', 'src/options.h', 'src/ring10.h', 'src/winiphone.c' are
+      ;; covered under the 'GPL'.
+      ;; The package as a whole is distributed under the LGPL 2.0.
+      (license (list lgpl2.0 public-domain gpl2+)))))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 1a83eda3c0..ee36f64354 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gettext)
@@ -28,7 +30,10 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages wm))
+  #:use-module (gnu packages wm)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome))
 
 (define-public tilda
   (package
@@ -67,3 +72,52 @@ is similar to the built-in consoles in some applications.  Tilda is highly
 configureable through a graphical wizard.")
     (home-page "https://github.com/lanoxx/tilda")
     (license license:gpl2+)))
+
+(define-public termite
+  (package
+    (name "termite")
+    (version "11")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url (string-append "https://github.com/thestinger/"
+                                  name ".git"))
+              (commit (string-append "v" version))
+              (recursive? #t)))
+        (file-name (string-append name "-" version "-checkout"))
+        (sha256
+          (base32
+            "1cw4yw7n9m2si8b7zcfyz9pyihncabxm5g39v1mxslfajxgwzmd8"))))
+    (build-system gnu-build-system)
+    (arguments
+      `(#:phases (alist-delete 'configure %standard-phases)
+        #:tests? #f
+        ;; This sets the destination when installing the necessary terminal
+        ;; capability data, which are not provided by 'ncurses'.  See
+        ;; <https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html>.
+        #:make-flags (list "PREFIX="
+                           (string-append "VERSION=v" (version))
+                           (string-append "DESTDIR="
+                                          (assoc-ref %outputs "out")))))
+    (inputs
+     `(("vte", vte-ng)
+       ("gtk+", gtk+)
+       ("ncurses", ncurses)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+
+    ;; FIXME: This should only be located in 'ncurses'.  Nonetheless it is
+    ;; provided for usability reasons.  See <https://bugs.gnu.org/22138>.
+    (native-search-paths
+      (list (search-path-specification
+              (variable "TERMINFO_DIRS")
+              (files '("share/terminfo")))))
+    (home-page "https://github.com/thestinger/termite/")
+    (synopsis "Keyboard-centric, VTE-based terminal")
+    (description "Termite is a minimal terminal emulator designed for use with
+tiling window managers.  It is a modal application, similar to Vim, with an
+insert mode and command mode where keybindings have different functions.")
+
+    ;; Files under util/ are under the Expat license; the rest is LGPLv2+.
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/texlive.scm b/gnu/packages/tex.scm
index cbcb6c87fc..c1ab8b3f5c 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/tex.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,7 +19,7 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
-(define-module (gnu packages texlive)
+(define-module (gnu packages tex)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -40,6 +41,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages tcsh)
   #:use-module (gnu packages base)
@@ -387,3 +389,40 @@ to manage bibliographic references.  Automatic execution of dvips to produce
 PostScript documents is also included, as well as usage of pdfLaTeX to produce
 PDF documents.")
     (license license:gpl2+)))
+
+(define-public texmaker
+  (package
+    (name "texmaker")
+    (version "4.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.xm1math.net/texmaker/texmaker-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Qt has its own configuration utility.
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "qmake"
+                               (string-append "PREFIX=" out)
+                               (string-append "DESKTOPDIR=" out
+                                              "/share/applications")
+                               (string-append "ICONDIR=" out "/share/pixmaps")
+                               "texmaker.pro"))))))))
+    (inputs
+     `(("poppler-qt5" ,poppler-qt5)
+       ("qt" ,qt)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://www.xm1math.net/texmaker/")
+    (synopsis "LaTeX editor")
+    (description "Texmaker is a program that integrates many tools needed to
+develop documents with LaTeX, in a single application.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 080c95ba1c..ebcf4b9a1f 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system trivial)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages python)
   #:use-module (gnu packages zip))
@@ -306,7 +308,8 @@ regular expression object can be specified.")
                                   "/antiword-" version ".tar.gz"))
               (sha256
                (base32
-                "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"))))
+                "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"))
+              (patches (search-patches "antiword-CVE-2014-8123.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index cedb306957..8895fd774e 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -351,16 +351,16 @@ security, and applying best practice development processes.")
 (define-public python-acme
   (package
     (name "python-acme")
-    (version "0.6.0")
+    (version "0.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                      "https://pypi.python.org/packages/"
-                     "af/33/703e5ec3d7efde7c4d2fcea9cdf88953a33d4e72aafd5b0a330173a7b395/"
+                     "45/17/6fdcede92c7fe4d9c1ab9d7513ded5aa969a0b9c90f3d7b3b074cd37e898/"
                      "acme-" version ".tar.gz"))
       (sha256
         (base32
-         "1ipck25c6nr0x54w2cc8ziwjmyyrpyz6pc1y8xc9nqmxvw4n0kpc"))))
+         "1nk48p0pi6xmqpsqjvw6xkx5vv4vl33yzq67fpr33ci8fra6pa6z"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -413,30 +413,27 @@ security, and applying best practice development processes.")
 (define-public certbot
   (package
     (name "certbot")
-    (version "0.6.0")
+    (version "0.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                      "https://pypi.python.org/packages/"
-                     "fc/eb/7594bf16d89909a9d52c46edbeae669d4b2ee6e12453bd97e674d0371920/"
+                     "da/b8/fa6d7f0f8c0d37944ca4a1940b1e933fc6673498995a45db03c034bb11dd/"
                      name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0ba95cf6shmyhi4vzvk64vbkrmr8qvkn32k3xwb2iv7ybbfbgc40"))))
+                "052338jdiy8dniskqxm2hzbca084ms0xqnjicshl6cpvhjs70g1w"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
        #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'docs
+         (add-after 'build 'docs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (man1 (string-append out "/share/man/man1"))
                     (man7 (string-append out "/share/man/man7"))
                     (info (string-append out "/info")))
-               (substitute* "docs/man/certbot.rst"
-                 (("certbot --help all")
-                  (string-append out "/bin/certbot" " --help all")))
                (and
                  (zero? (system* "make" "-C" "docs" "man" "info"))
                  (install-file "docs/_build/texinfo/Certbot.info" info)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index db3e9f1768..346f9753a8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -112,14 +112,14 @@ as well as the classic centralized workflow.")
   ;; Keep in sync with 'git-manpages'!
   (package
    (name "git")
-   (version "2.7.4")
+   (version "2.8.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0ys55v2xrhzj74jrrqx75xpr458klnyxshh8d8swfpp0zgg79rfy"))))
+              "14dafk7rz8cy2z5b92yf009qf4pc70s0viwq7hxsgd4898knr3kx"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -292,7 +292,7 @@ everything from small to very large projects with speed and efficiency.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "09ffk5c0dl1xg7xcvr0kadhspx4fr2spmlmcajzfycmap0ddhkyh"))))
+                "1ilbi4xdn77a5yrjyrcx0nap0j4raw3h1fr0k32zs9y35c6f29cx"))))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -479,7 +479,7 @@ will work.")
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/nvie/gitflow/")
-                    (commit "15aab26")))
+                    (commit "15aab26490facf285acef56cb5d61025eacb3a69")))
               (sha256
                (base32
                 "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
@@ -513,10 +513,10 @@ lot easier.")
     (license bsd-2)))
 
 (define-public git-test-sequence
-  (let ((commit "48e5a2f"))
+  (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
     (package
       (name "git-test-sequence")
-      (version (string-append "20140312." commit))
+      (version (string-append "20140312." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -851,8 +851,8 @@ masters from remote CVS hosts.")
                "094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)
-              ("inetutils" ,inetutils)     ; for `hostname', used in the tests
-              ("emacs" ,emacs-no-x)))      ; for `ctags'
+              ("inetutils" ,inetutils))) ; for `hostname', used in the tests
+    (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags'
     (home-page "http://www.gnu.org/software/vc-dwim/")
     (synopsis "Version-control-agnostic ChangeLog diff and commit tool")
     (description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 1bd5198d5b..4782ec4692 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1167,7 +1167,7 @@ capabilities.")
 (define-public vapoursynth
   (package
     (name "vapoursynth")
-    (version "28")
+    (version "32")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1176,7 +1176,7 @@ capabilities.")
               (file-name (string-append name "-" version))
               (sha256
                (base32
-                "0pnrawcg1j65i46yim0z447lglq1af5zgx0lkqf1x5xl1bfwc0v7"))))
+                "1j08whj946v2kkpgxsfhpca8xf0ax9iqzn73wvwjx319p9j0ymp9"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -1189,7 +1189,8 @@ capabilities.")
     (inputs
      `(("ffmpeg" ,ffmpeg)
        ("libass" ,libass)
-       ("tesseract-ocr" ,tesseract-ocr)))
+       ("tesseract-ocr" ,tesseract-ocr)
+       ("zimg" ,zimg)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -1351,7 +1352,7 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "0.14.1")
+    (version "0.14.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/jp9000/obs-studio"
@@ -1359,7 +1360,7 @@ be used for realtime video capture via Linux-specific APIs.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1w07ign2swfigmsjd2jyaqqdnj2zpzs8hzsjzzk5l377jbx3ml5g"))))
+                "1cb8naa67kfnnngkzv1wpd4y241j29ggnk1w7jgnymp9j8dny1xl"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f)) ; no tests
     (native-inputs
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index c86e0f03fc..6ac03fcce6 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -111,14 +111,14 @@ and its related documentation.")
 (define-public nginx
   (package
     (name "nginx")
-    (version "1.10.0")
+    (version "1.10.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0kdyqa5xaxvhz6y75ixs05mzygk3kszzdq5h0gnlrg35vp1lgmlf"))))
+                "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz"))))
     (build-system gnu-build-system)
     (inputs `(("pcre" ,pcre)
               ("openssl" ,openssl)
@@ -232,7 +232,8 @@ and UNIX socket support.")
                              version ".tar.gz"))
              (sha256
               (base32
-               "1mvq9p85khsl818i4vbszyfab0fd45mdrwrxjkzw05mk1xcyc1br"))))
+               "1mvq9p85khsl818i4vbszyfab0fd45mdrwrxjkzw05mk1xcyc1br"))
+             (patches (search-patches "jansson-CVE-2016-4425.patch"))))
     (build-system gnu-build-system)
     (home-page "http://www.digip.org/jansson/")
     (synopsis "JSON C library")
@@ -290,8 +291,7 @@ parse JSON formatted strings back into the C representation of JSON objects.")
                "1fj5mf6wbwz7v74n2safbw7fpw32fik19vf0wdbc2srn82i8fiwz"))))
    (build-system perl-build-system)
    (arguments
-     `(#:tests? #f ; no tests
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          ;; There is no configure or build steps.
          (delete 'configure)
@@ -313,9 +313,7 @@ parse JSON formatted strings back into the C representation of JSON objects.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((bin   (string-append (assoc-ref outputs "out") "/bin"))
                    (perl  (string-append (assoc-ref outputs "out")
-                                         "/lib/perl5/site_perl"))
-                   (share (string-append
-                           (assoc-ref outputs "out") "/share/krona-tools")))
+                                         "/lib/perl5/site_perl/krona-tools/lib")))
                (mkdir-p bin)
                (for-each
                 (lambda (script)
@@ -340,13 +338,13 @@ parse JSON formatted strings back into the C representation of JSON objects.")
                   "ImportTaxonomy"
                   "ImportText"
                   "ImportXML"))
-               (mkdir-p share)
-               (copy-recursively "data" (string-append share "/data"))
-               (copy-recursively "img" (string-append share "/img"))
-               (copy-recursively "taxonomy" (string-append share "/taxonomy"))
-               (substitute* '("lib/KronaTools.pm")
-                 (("taxonomyDir = \".libPath/../taxonomy\"")
-                  (string-append "taxonomyDir = \"" share "/taxonomy\"")))
+               (copy-recursively "data" (string-append perl "/../data"))
+               (copy-recursively "img" (string-append perl "/../img"))
+               (copy-recursively "taxonomy" (string-append perl "/../taxonomy"))
+               (install-file "src/krona-2.0.js" (string-append perl "/../src"))
+               (substitute* "lib/KronaTools.pm"
+                 (("`ktGetLibPath`")
+                  (string-append "\"" perl "\"")))
                (install-file "lib/KronaTools.pm" perl))))
          (add-after 'install 'wrap-program
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -356,8 +354,14 @@ parse JSON formatted strings back into the C representation of JSON objects.")
                 (lambda (executable)
                   (wrap-program executable
                     `("PERL5LIB" ":" prefix
-                      (,(string-append out "/lib/perl5/site_perl")))))
-                (find-files (string-append out "/bin/") ".*"))))))))
+                      (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
+                (find-files (string-append out "/bin/") ".*")))))
+         (delete 'check)
+         (add-after 'wrap-program 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (with-directory-excursion "data"
+               (zero? (system* (string-append (assoc-ref outputs "out") "/bin/ktImportText")
+                               "ec.tsv"))))))))
    (inputs
     `(("perl" ,perl)))
    (home-page "https://github.com/marbl/Krona/wiki")
@@ -527,16 +531,15 @@ used to validate and fix HTML data.")
 (define-public tinyproxy
   (package
     (name "tinyproxy")
-    (version "1.8.3")
+    (version "1.8.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://download.banu.com/tinyproxy/"
-                    (version-major+minor version)
-                    "/tinyproxy-" version ".tar.gz"))
+              (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
+                                  "releases/download/" version "/tinyproxy-"
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "05y0y2q9j10x72y1fipya6bmc8hjcdf3kfw7dh8ahczpy341c938"))))
+                "002hi97687czhfkwsjkr174yvlp10224qi6gd5s53z230bgls7x4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -559,7 +562,7 @@ used to validate and fix HTML data.")
                      ("docbook-xml" ,docbook-xml)
                      ("docbook-xsl" ,docbook-xsl)
                      ("libxslt" ,libxslt)))
-    (home-page "https://banu.com/tinyproxy/")
+    (home-page "https://tinyproxy.github.io/")
     (synopsis "Light-weight HTTP/HTTPS proxy daemon")
     (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
 daemon.  Designed from the ground up to be fast and yet small, it is an ideal
@@ -604,16 +607,17 @@ of people.")
 (define-public libyaml
   (package
     (name "libyaml")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "http://pyyaml.org/download/libyaml/yaml-"
              version ".tar.gz"))
+       (patches (search-patches "libyaml-CVE-2014-9130.patch"))
        (sha256
         (base32
-         "1vrv5ly58bkmcyc049ad180f2m8iav6l9h3v8l2fqdmrny7yx1zs"))))
+         "0j9731s5zjb8mjx7wzf6vh7bsqi38ay564x6s9nri2nh9cdrg9kx"))))
     (build-system gnu-build-system)
     (home-page "http://pyyaml.org/wiki/LibYAML")
     (synopsis "YAML 1.1 parser and emitter written in C")
@@ -701,7 +705,7 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://serf.googlecode.com/svn/src_releases/serf-"
+       (uri (string-append "https://archive.apache.org/dist/serf/serf-"
                            version ".tar.bz2"))
        (sha256
         (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70"))
@@ -752,7 +756,7 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
                                       (string-append "PREFIX=" out))))))
          (replace 'check   (lambda _ (zero? (system* "scons" "check"))))
          (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
-    (home-page "https://code.google.com/p/serf/")
+    (home-page "https://serf.apache.org/")
     (synopsis "High-performance asynchronous HTTP client library")
     (description
      "serf is a C-based HTTP client library built upon the Apache Portable
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 734e4fc0df..578b4c9847 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -53,14 +53,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.12.2")
+    (version "2.12.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "097i53ip93qfy8sgpv5qjf8fmi07gwm41q83jxrxldqwif89pi4x"))))
+                "01y34v62khf03w25fnzgd42rrai5mf1m95lr5vjyw8ya5sdbng0p"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/wordnet.scm b/gnu/packages/wordnet.scm
index 1823a624ed..dbc75860ef 100644
--- a/gnu/packages/wordnet.scm
+++ b/gnu/packages/wordnet.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses)
   #:use-module (guix download)
+  #:use-module (gnu packages)
   #:use-module (gnu packages tcl))
 
 (define-public wordnet
@@ -30,11 +32,14 @@
     (source (origin
              (method url-fetch)
              (uri (string-append "http://wordnetcode.princeton.edu/"
-                                 version "/WordNet-"
-                                 version ".tar.bz2"))
+                                 version "/WordNet-" version ".tar.bz2"))
              (sha256
               (base32
-               "08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc"))))
+               "08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc"))
+             (patches (search-patches
+                        "wordnet-CVE-2008-2149.patch"
+                        "wordnet-CVE-2008-3908-pt1.patch"
+                        "wordnet-CVE-2008-3908-pt2.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "--with-tcl="
@@ -47,30 +52,30 @@
                                ;; Provide the `result' field in `Tcl_Interp'.
                                ;; See <https://bugs.gentoo.org/show_bug.cgi?id=452034>.
                                "CFLAGS=-DUSE_INTERP_RESULT")
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out"))
-                         (bin (assoc-ref outputs "tk"))
-                         (tk  (assoc-ref inputs "tk"))
-                         (tkv ,(let ((v (package-version tk)))
-                                 (string-take v (string-index-right v #\.)))))
-                     ;; Move `wishwn' and `wnb' to BIN.
-                     (for-each (lambda (prog)
-                                 (let ((orig (string-append out "/bin/" prog))
-                                       (dst  (string-append bin "/bin/" prog))
-                                       (dir  (string-append tk "/lib/tk" tkv)))
-                                   (mkdir-p (dirname dst))
-                                   (copy-file orig dst)
-                                   (delete-file orig)
-                                   (wrap-program dst
-                                                 `("TK_LIBRARY" "" = (,dir))
-                                                 `("PATH" ":" prefix
-                                                   (,(string-append out
-                                                                    "/bin"))))))
-                               '("wishwn" "wnb"))
-                     #t))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (bin (assoc-ref outputs "tk"))
+                   (tk  (assoc-ref inputs "tk"))
+                   (tkv ,(let ((v (package-version tk)))
+                           (string-take v (string-index-right v #\.)))))
+               ;; Move `wishwn' and `wnb' to BIN.
+               (for-each (lambda (prog)
+                           (let ((orig (string-append out "/bin/" prog))
+                                 (dst  (string-append bin "/bin/" prog))
+                                 (dir  (string-append tk "/lib/tk" tkv)))
+                             (mkdir-p (dirname dst))
+                             (copy-file orig dst)
+                             (delete-file orig)
+                             (wrap-program dst
+                                           `("TK_LIBRARY" "" = (,dir))
+                                           `("PATH" ":" prefix
+                                             (,(string-append out
+                                                              "/bin"))))))
+                         '("wishwn" "wnb"))
+               #t))))))
     (outputs '("out"
                "tk"))                             ; for the Tcl/Tk GUI
     (inputs `(("tk" ,tk)
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 2c4a26aeac..3231e3d48d 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -63,7 +63,7 @@
      `(("pkg-config" ,pkg-config)))
     (arguments
      '(#:configure-flags
-       '("--with-regex=sys" "--with-libmspack"
+       '("--with-regex" "--with-libmspack"
          "--with-sdl"
          "--enable-webview"
          "--enable-webkit"
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index c060a39009..bfcba473a8 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -381,9 +382,12 @@ move windows, switch between desktops, etc.).")
     (version "0.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "http://linuxbrit.co.uk/downloads/scrot-"
-                    version ".tar.gz"))
+              (uri (list (string-append
+                           "http://linuxbrit.co.uk/downloads/scrot-"
+                           version ".tar.gz")
+                         (string-append
+                           "https://fossies.org/linux/privat/old/scrot-"
+                           version ".tar.gz")))
               (sha256
                (base32
                 "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
@@ -395,16 +399,16 @@ move windows, switch between desktops, etc.).")
        (list (string-append "--mandir="
                             (assoc-ref %outputs "out")
                             "/share/man"))
-       #:phases (alist-replace
-                 'install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (doc (string-append out "/share/doc/scrot")))
-                     (mkdir-p doc)
-                     (zero?
-                      (system* "make" "install"
-                               (string-append "docsdir=" doc)))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/scrot")))
+               (mkdir-p doc)
+               (zero?
+                (system* "make" "install"
+                         (string-append "docsdir=" doc)))))))))
     (inputs
      `(("libx11" ,libx11)
        ("giblib" ,giblib)))
@@ -540,7 +544,7 @@ things less distracting.")
 (define-public xlockmore
   (package
     (name "xlockmore")
-    (version "5.46")
+    (version "5.47")
     (source (origin
              (method url-fetch)
              (uri (list (string-append
@@ -549,10 +553,10 @@ things less distracting.")
                         (string-append
                           "http://www.tux.org/~bagleyd/xlock/xlockmore-old"
                           "/xlockmore-" version
-                          "/xlockmore-" version ".tar.bz2")))
+                          "/xlockmore-" version ".tar.xz")))
              (sha256
               (base32
-               "1ps0dmnh912x8mwns94y2607xk90rjxrjn5s1pkmmpjg5h9bxcrj"))))
+               "138d79b8zc2hambbr9fnxp3fhihlcljgqns04zf0kv2f53pavqwl"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--enable-appdefaultdir="
@@ -570,8 +574,7 @@ things less distracting.")
      "XLockMore is a classic screen locker and screen saver for the
 X Window System.")
     (license (license:non-copyleft #f "See xlock.c.")
-             ;; + GPLv2 in modes/glx/biof.c.
-             )))
+             ))) ; + GPLv2 in modes/glx/biof.c.
 
 (define-public xosd
   (package
@@ -907,3 +910,44 @@ demos.  It also acts as a nice screen locker.")
               (string-append
                "http://metadata.ftp-master.debian.org/changelogs/"
                "/main/x/xscreensaver/xscreensaver_5.34-2_copyright")))))
+
+(define-public rofi
+  (package
+    (name "rofi")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/DaveDavenport/rofi/"
+                                  "releases/download/"
+                                  version "/rofi-" version ".tar.xz"))
+              (sha256
+               (base32
+                "01jxml9vk4cw7pngpan7dipmb98s6ibh6f0023lw3hbgxy650637"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("pango" ,pango)
+       ("cairo" ,cairo)
+       ("glib" ,glib)
+       ("startup-notification" ,startup-notification)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'adjust-tests
+           (lambda _
+             (substitute* '("test/helper-expand.c")
+               (("~root") "/root")
+               (("~") "")
+               (("g_get_home_dir \\(\\)") "\"/\"")))))))
+    (home-page "https://davedavenport.github.io/rofi/")
+    (synopsis "Application Launcher")
+    (description "Rofi is a minimalist Application Launcher.  It memorizes which
+applications you regularily use and also allows you to search for an application
+by name.")
+    (license license:expat)))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 68f76d5c5c..d1597e96ea 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -270,7 +270,10 @@ Kate stream.")
             (sha256
              (base32
               "1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3"))
-            (patches (search-patches "vorbis-tools-CVE-2015-6749.patch"))))
+            (patches (search-patches 
+                       "vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch"
+                       "vorbis-tools-CVE-2014-9640.patch"
+                       "vorbis-tools-CVE-2015-6749.patch"))))
    (build-system gnu-build-system)
    (inputs `(("ao" ,ao)
              ("curl" ,curl)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index a5ea3d0974..5b72c805bd 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -67,6 +67,7 @@ things the parser might find in the XML document (like start tags).")
   (package
     (name "libxml2")
     (version "2.9.3")
+    (replacement libxml2/fixed)                   ;multiple CVEs
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
@@ -93,9 +94,24 @@ things the parser might find in the XML document (like start tags).")
 project (but it is usable outside of the Gnome platform).")
     (license license:x11)))
 
+(define libxml2/fixed
+  (package
+    (inherit libxml2)
+    (source
+     (let ((name "libxml2")
+           (version "2.9.4"))
+       (origin
+         (method url-fetch)
+         (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
+                             version ".tar.gz"))
+         (sha256
+          (base32
+           "0g336cr0bw6dax1q48bblphmchgihx9p1pjmxdnrd6sh3qci3fgz")))))))
+
 (define-public python-libxml2
   (package (inherit libxml2)
     (name "python-libxml2")
+    (replacement #f)
     (build-system python-build-system)
     (arguments
      `(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 2eff1b28c3..ad81f975dc 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2810,10 +2810,10 @@ X server.")
 
 
 (define-public xf86-video-intel
-  (let ((commit "d167280"))
+  (let ((commit "d1672806a5222f00dcc2eb24ccddd03f727f71bc"))
     (package
       (name "xf86-video-intel")
-      (version (string-append "2.99.917-1-" commit))
+      (version (string-append "2.99.917-1-" (string-take commit 7)))
       (source
        (origin
          ;; there's no current tarball
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 96bf8da02a..2780d124c7 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -93,6 +94,8 @@
             gpm-service-type
             gpm-service
 
+            urandom-seed-service
+
             %base-services))
 
 ;;; Commentary:
@@ -422,6 +425,67 @@ stopped before 'kill' is called."
 
 
 ;;;
+;;; Preserve entropy to seed /dev/urandom on boot.
+;;;
+
+(define %random-seed-file
+  "/var/lib/random-seed")
+
+(define (urandom-seed-shepherd-service _)
+  "Return a shepherd service for the /dev/urandom seed."
+  (list (shepherd-service
+         (documentation "Preserve entropy across reboots for /dev/urandom.")
+         (provision '(urandom-seed))
+         (requirement '(user-processes))
+         (start #~(lambda _
+                    ;; On boot, write random seed into /dev/urandom.
+                    (when (file-exists? #$%random-seed-file)
+                      (call-with-input-file #$%random-seed-file
+                        (lambda (seed)
+                          (call-with-output-file "/dev/urandom"
+                            (lambda (urandom)
+                              (dump-port seed urandom))))))
+                    ;; Immediately refresh the seed in case the system doesn't
+                    ;; shut down cleanly.
+                    (call-with-input-file "/dev/urandom"
+                      (lambda (urandom)
+                        (let ((previous-umask (umask #o077))
+                              (buf (make-bytevector 512)))
+                          (mkdir-p (dirname #$%random-seed-file))
+                          (get-bytevector-n! urandom buf 0 512)
+                          (call-with-output-file #$%random-seed-file
+                            (lambda (seed)
+                              (put-bytevector seed buf)))
+                          (umask previous-umask))))
+                    #t))
+         (stop #~(lambda _
+                   ;; During shutdown, write from /dev/urandom into random seed.
+                   (let ((buf (make-bytevector 512)))
+                     (call-with-input-file "/dev/urandom"
+                       (lambda (urandom)
+                         (let ((previous-umask (umask #o077)))
+                           (get-bytevector-n! urandom buf 0 512)
+                           (mkdir-p (dirname #$%random-seed-file))
+                           (call-with-output-file #$%random-seed-file
+                             (lambda (seed)
+                               (put-bytevector seed buf)))
+                           (umask previous-umask))
+                         #t)))))
+         (modules `((rnrs bytevectors)
+                    (rnrs io ports)
+                    ,@%default-modules)))))
+
+(define urandom-seed-service-type
+  (service-type (name 'urandom-seed)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          urandom-seed-shepherd-service)))))
+
+(define (urandom-seed-service)
+  (service urandom-seed-service-type #f))
+
+
+;;;
 ;;; System-wide environment variables.
 ;;;
 
@@ -1200,7 +1264,6 @@ extra rules from the packages listed in @var{rules}."
   "Return a service that uses @var{device} as a swap device."
   (service swap-service-type device))
 
-
 (define-record-type* <gpm-configuration>
   gpm-configuration make-gpm-configuration gpm-configuration?
   (gpm      gpm-configuration-gpm)                ;package
@@ -1281,6 +1344,7 @@ This is the GNU operating system, welcome!\n\n")))
           (static-networking-service "lo" "127.0.0.1"
                                      #:provision '(loopback))
           (syslog-service)
+          (urandom-seed-service)
           (guix-service)
           (nscd-service)
 
diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm
new file mode 100644
index 0000000000..abab6a3eba
--- /dev/null
+++ b/gnu/services/dict.scm
@@ -0,0 +1,131 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services dict)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu system shadow)
+  #:use-module ((gnu packages admin) #:select (shadow))
+  #:use-module (gnu packages dico)
+  #:use-module (gnu packages dictionaries)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 match)
+  #:export (dicod-service
+            dicod-configuration
+            dicod-database
+            %dicod-database:gcide))
+
+
+;;;
+;;; GNU Dico.
+;;;
+
+(define-record-type* <dicod-configuration>
+  dicod-configuration make-dicod-configuration
+  dicod-configuration?
+  (dico        dicod-configuration-dico       (default dico))
+  (databases   dicod-configuration-databases
+               ;; list of <dicod-database>
+               (default (list %dicod-database:gcide))))
+
+(define-record-type* <dicod-database>
+  dicod-database make-dicod-database
+  dicod-database?
+  (name        dicod-database-name)
+  (module      dicod-database-module)
+  (options     dicod-database-options        (default '())))
+
+(define %dicod-database:gcide
+  (dicod-database
+   (name "gcide")
+   (module "gcide")
+   (options (list #~(string-append "dbdir=" #$gcide "/share/gcide")
+                  "idxdir=/var/run/dicod"))))
+
+(define %dicod-accounts
+  (list (user-group
+         (name "dicod")
+         (system? #t))
+        (user-account
+         (name "dicod")
+         (group "dicod")
+         (system? #t)
+         (home-directory "/var/empty")
+         (shell #~(string-append #$shadow "/sbin/nologin")))))
+
+(define (dicod-configuration-file config)
+  (define dicod-configuration->text
+    (match-lambda
+      (($ <dicod-configuration> dico databases)
+       (append-map (match-lambda
+                     (($ <dicod-database> name module options)
+                      `("
+load-module " ,module ";
+database {
+   name \"" ,name "\";
+   handler \"" ,module
+   (string-join (list ,@options) " " 'prefix) "\";
+}\n")))
+                   databases))))
+  (apply mixed-text-file "dicod.conf" (dicod-configuration->text config)))
+
+(define %dicod-activation
+  #~(begin
+      (use-modules (guix build utils))
+      (let ((user   (getpwnam "dicod"))
+            (rundir "/var/run/dicod"))
+        (mkdir-p rundir)
+        (chown rundir (passwd:uid user) (passwd:gid user)))))
+
+(define (dicod-shepherd-service config)
+  (list (shepherd-service
+         (provision '(dicod))
+         (documentation "Run the dicod daemon.")
+         (start #~(make-forkexec-constructor
+                   (list (string-append #$dico "/bin/dicod") "--foreground"
+                         (string-append
+                          "--config=" #$(dicod-configuration-file config)))
+                   #:user "dicod" #:group "dicod"))
+         (stop #~(make-kill-destructor)))))
+
+(define dicod-service-type
+  (service-type
+   (name 'dict)
+   (extensions
+    (list (service-extension account-service-type
+                             (const %dicod-accounts))
+          (service-extension activation-service-type
+                             (const %dicod-activation))
+          (service-extension shepherd-root-service-type
+                             dicod-shepherd-service)))))
+
+(define* (dicod-service #:key (config (dicod-configuration)))
+  "Return a service that runs the @command{dicod} daemon, an implementation
+of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
+
+The optional @var{config} argument specifies the configuration for
+@command{dicod}, which should be a @code{<dicod-configuration>} object, by
+default it serves the GNU Collaborative International Dictonary of English.
+
+You can add @command{open localhost} to your @file{~/.dico} file to make
+@code{localhost} the default server for @command{dico}
+client (@pxref{Initialization File,,, dico, GNU Dico Manual})."
+  (service dicod-service-type config))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 7e8c4489dd..f4cfaf0990 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -18,7 +18,6 @@
 
 (define-module (gnu system file-systems)
   #:use-module (ice-9 match)
-  #:use-module (guix gexp)
   #:use-module (guix records)
   #:use-module (guix store)
   #:use-module ((gnu build file-systems)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 07ad3cbcb2..a72613e9c5 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -145,6 +145,11 @@ current store is on a RAM disk."
         (chmod #$directory #o1775)))
 
   #~(begin
+      ;; Bind-mount TARGET's /tmp in case we need space to build things.
+      (let ((tmpdir (string-append #$target "/tmp")))
+        (mkdir-p tmpdir)
+        (mount tmpdir "/tmp" "none" MS_BIND))
+
       (unless (file-exists? "/.ro-store")
         (mkdir "/.ro-store")
         (mount #$(%store-prefix) "/.ro-store" "none"
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 03c1eb2baf..a7982002b6 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -47,11 +47,7 @@
   "Return the default Emacs package."
   ;; Lazily resolve the binding to avoid a circular dependency.
   (let ((emacs-mod (resolve-interface '(gnu packages emacs))))
-    ;; we use 'emacs' instead of 'emacs-no-x' because the latter appears not
-    ;; to be loading some macros and causes problems to some packages.  For
-    ;; example, with the latter AUCTeX gives the error message:
-    ;; "(invalid-function dbus-ignore-errors)".
-    (module-ref emacs-mod 'emacs)))
+    (module-ref emacs-mod 'emacs-minimal)))
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
diff --git a/guix/build/bournish.scm b/guix/build/bournish.scm
index 4022796658..1f17e0a22d 100644
--- a/guix/build/bournish.scm
+++ b/guix/build/bournish.scm
@@ -134,8 +134,10 @@ commands such as 'ls' and 'cd'; it lacks globbing, pipes---everything.\n"))
 (define (read-bournish port env)
   "Read a Bournish expression from PORT, and return the corresponding Scheme
 code as an sexp."
-  (match (string-tokenize (read-line port))
-    ((command args ...)
+  (match (read-line port)
+    ((? eof-object? eof)
+     eof)
+    ((= string-tokenize (command args ...))
      (match (assoc command %commands)
        ((command proc)                            ;built-in command
         (apply proc (map expand-variable args)))
@@ -147,11 +149,24 @@ code as an sexp."
 
 (define %bournish-language
   (let ((scheme (lookup-language 'scheme)))
+    ;; XXX: The 'scheme' language lacks a "joiner", so we add one here.  This
+    ;; allows us to have 'read-bournish' read one shell statement at a time
+    ;; instead of having to read until EOF.
+    (set! (language-joiner scheme)
+      (lambda (exps env)
+        (match exps
+          (()   '(begin))
+          ((exp) exp)
+          (_    `(begin ,@exps)))))
+
     (make-language #:name 'bournish
                    #:title "Bournish"
+
+                   ;; The reader does all the heavy lifting.
                    #:reader read-bournish
-                   #:compilers (language-compilers scheme)
-                   #:decompilers (language-decompilers scheme)
+                   #:compilers `((scheme . ,(lambda (exp env options)
+                                              (values exp env env))))
+                   #:decompilers '()
                    #:evaluator (language-evaluator scheme)
                    #:printer (language-printer scheme)
                    #:make-default-environment
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 7741726c41..bd011ce878 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -234,9 +234,10 @@ and 'guix publish', something like
         (string-drop path 33)
         path)))
 
-(define (ftp-fetch uri file)
-  "Fetch data from URI and write it to FILE.  Return FILE on success."
-  (let* ((conn (ftp-open (uri-host uri)))
+(define* (ftp-fetch uri file #:key timeout)
+  "Fetch data from URI and write it to FILE.  Return FILE on success.  Bail
+out if the connection could not be established in less than TIMEOUT seconds."
+  (let* ((conn (ftp-open (uri-host uri) #:timeout timeout))
          (size (false-if-exception (ftp-size conn (uri-path uri))))
          (in   (ftp-retr conn (basename (uri-path uri))
                          (dirname (uri-path uri)))))
@@ -585,8 +586,10 @@ Return the resulting target URI."
                     #:query    (uri-query    ref)
                     #:fragment (uri-fragment ref)))))
 
-(define (http-fetch uri file)
-  "Fetch data from URI and write it to FILE.  Return FILE on success."
+(define* (http-fetch uri file #:key timeout)
+  "Fetch data from URI and write it to FILE; when TIMEOUT is true, bail out if
+the connection could not be established in less than TIMEOUT seconds.  Return
+FILE on success."
 
   (define post-2.0.7?
     (or (> (string->number (major-version)) 2)
@@ -605,7 +608,7 @@ Return the resulting target URI."
       (Accept . "*/*")))
 
   (let*-values (((connection)
-                 (open-connection-for-uri uri))
+                 (open-connection-for-uri uri #:timeout timeout))
                 ((resp bv-or-port)
                  ;; XXX: `http-get*' was introduced in 2.0.7, and replaced by
                  ;; #:streaming? in 2.0.8.  We know we're using it within the
@@ -646,7 +649,7 @@ Return the resulting target URI."
          (format #t "following redirection to `~a'...~%"
                  (uri->string uri))
          (close connection)
-         (http-fetch uri file)))
+         (http-fetch uri file #:timeout timeout)))
       (else
        (error "download failed" (uri->string uri)
               code (response-reason-phrase resp))))))
@@ -686,6 +689,7 @@ Return a list of URIs."
 
 (define* (url-fetch url file
                     #:key
+                    (timeout 10)
                     (mirrors '()) (content-addressed-mirrors '())
                     (hashes '()))
   "Fetch FILE from URL; URL may be either a single string, or a list of
@@ -711,19 +715,19 @@ or #f."
             file (uri->string uri))
     (case (uri-scheme uri)
       ((http https)
-       (false-if-exception* (http-fetch uri file)))
+       (false-if-exception* (http-fetch uri file #:timeout timeout)))
       ((ftp)
-       (false-if-exception* (ftp-fetch uri file)))
+       (false-if-exception* (ftp-fetch uri file #:timeout timeout)))
       (else
        (format #t "skipping URI with unsupported scheme: ~s~%"
                uri)
        #f)))
 
-  (define content-addressed-urls
+  (define content-addressed-uris
     (append-map (lambda (make-url)
                   (filter-map (match-lambda
                                 ((hash-algo . hash)
-                                 (make-url hash-algo hash)))
+                                 (string->uri (make-url hash-algo hash))))
                               hashes))
                 content-addressed-mirrors))
 
@@ -733,7 +737,7 @@ or #f."
 
   (setvbuf (current-error-port) _IOLBF)
 
-  (let try ((uri (append uri content-addressed-urls)))
+  (let try ((uri (append uri content-addressed-uris)))
     (match uri
       ((uri tail ...)
        (or (fetch uri file)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index f0a9a6e125..ab970012a7 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -21,6 +21,7 @@
   #:use-module (guix build utils)
   #:use-module (guix build emacs-utils)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 regex)
@@ -39,6 +40,27 @@
 ;; archive signature.
 (define %install-suffix "/share/emacs/site-lisp/guix.d")
 
+(define gnu:unpack (assoc-ref gnu:%standard-phases 'unpack))
+
+(define (store-file->elisp-source-file file)
+  "Convert FILE, a store file name for an Emacs Lisp source file, into a file
+name that has been stripped of the hash and version number."
+  (let-values (((name version)
+                (package-name->name+version
+                 (strip-store-file-name file))))
+    (string-append name ".el")))
+
+(define* (unpack #:key source #:allow-other-keys)
+  "Unpack SOURCE into the build directory.  SOURCE may be a compressed
+archive, a directory, or an Emacs Lisp file."
+  (if (string-suffix? ".el" source)
+      (begin
+        (mkdir "source")
+        (chdir "source")
+        (copy-file source (store-file->elisp-source-file source))
+        #t)
+      (gnu:unpack #:source source)))
+
 (define* (build #:key outputs inputs #:allow-other-keys)
   "Compile .el files."
   (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
@@ -151,6 +173,7 @@ second hyphen.  This corresponds to 'name-version' as used in ELPA packages."
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
+    (replace 'unpack unpack)
     (delete 'configure)
     (delete 'check)
     (delete 'install)
diff --git a/guix/build/graft.scm b/guix/build/graft.scm
index b61982dd64..fb21fc3af3 100644
--- a/guix/build/graft.scm
+++ b/guix/build/graft.scm
@@ -105,6 +105,19 @@ a list of store file name pairs."
                                (string-append (dirname file) "/" target))))
               matches)))
 
+(define (exit-on-exception proc)
+  "Return a procedure that wraps PROC so that 'primitive-exit' is called when
+an exception is caught."
+  (lambda (arg)
+    (catch #t
+      (lambda ()
+        (proc arg))
+      (lambda (key . args)
+        ;; Since ports are not thread-safe as of Guile 2.0, reopen stderr.
+        (let ((port (fdopen 2 "w0")))
+          (print-exception port #f key args)
+          (primitive-exit 1))))))
+
 (define* (rewrite-directory directory output mapping
                             #:optional (store (%store-directory)))
   "Copy DIRECTORY to OUTPUT, replacing strings according to MAPPING, a list of
@@ -147,9 +160,13 @@ file name pairs."
   ;; #o777.
   (umask #o022)
 
+  ;; Use 'exit-on-exception' to force an exit upon I/O errors, given that
+  ;; 'n-par-for-each' silently swallows exceptions.
+  ;; See <http://bugs.gnu.org/23581>.
   (n-par-for-each (parallel-job-count)
-                  rewrite-leaf (find-files directory (const #t)
-                                           #:directories? #t))
+                  (exit-on-exception rewrite-leaf)
+                  (find-files directory (const #t)
+                              #:directories? #t))
   (rename-matching-files output mapping))
 
 ;;; graft.scm ends here
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index a4ac3b307c..79ac380cb8 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -66,14 +66,13 @@ directory."
       ;; Use GNU unpack strategy for things that aren't gem archives.
       (gnu:unpack #:source source)))
 
-(define* (build #:key source #:allow-other-keys)
-  "Build a new gem using the gemspec from the SOURCE gem."
-  (define (first-gemspec)
-    (first-matching-file "\\.gemspec$"))
+(define (first-gemspec)
+  (first-matching-file "\\.gemspec$"))
 
-  ;; Remove the original gemspec, if present, and replace it with a new one.
-  ;; This avoids issues with upstream gemspecs requiring tools such as git to
-  ;; generate the files list.
+(define* (extract-gemspec #:key source #:allow-other-keys)
+  "Remove the original gemspec, if present, and replace it with a new one.
+This avoids issues with upstream gemspecs requiring tools such as git to
+generate the files list."
   (when (gem-archive? source)
     (let ((gemspec (or (false-if-exception (first-gemspec))
                        ;; Make new gemspec if one wasn't shipped.
@@ -94,7 +93,10 @@ directory."
                   (write-char (read-char pipe) out))))
             #t)
           (lambda ()
-            (close-pipe pipe))))))
+            (close-pipe pipe)))))))
+
+(define* (build #:key source #:allow-other-keys)
+  "Build a new gem using the gemspec from the SOURCE gem."
 
   ;; Build a new gem from the current working directory.  This also allows any
   ;; dynamic patching done in previous phases to be present in the installed
@@ -134,6 +136,7 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
 (define %standard-phases
   (modify-phases gnu:%standard-phases
     (delete 'configure)
+    (add-before 'build 'extract-gemspec extract-gemspec)
     (replace 'build build)
     (replace 'unpack unpack)
     (replace 'install install)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index ccd2d5c103..6640b56523 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -53,22 +53,24 @@
 identical, #f otherwise."
   (let ((st1 (stat file1))
         (st2 (stat file2)))
-    (and (eq? (stat:type st1) 'regular)
-         (eq? (stat:type st2) 'regular)
-         (= (stat:size st1) (stat:size st2))
-         (call-with-input-file file1
-           (lambda (port1)
-             (call-with-input-file file2
-               (lambda (port2)
-                 (define len 8192)
-                 (define buf1 (make-bytevector len))
-                 (define buf2 (make-bytevector len))
-                 (let loop ()
-                   (let ((n1 (get-bytevector-n! port1 buf1 0 len))
-                         (n2 (get-bytevector-n! port2 buf2 0 len)))
-                     (and (equal? n1 n2)
-                          (or (eof-object? n1)
-                              (loop))))))))))))
+    ;; When deduplication is enabled, identical files share the same inode.
+    (or (= (stat:ino st1) (stat:ino st2))
+        (and (eq? (stat:type st1) 'regular)
+             (eq? (stat:type st2) 'regular)
+             (= (stat:size st1) (stat:size st2))
+             (call-with-input-file file1
+               (lambda (port1)
+                 (call-with-input-file file2
+                   (lambda (port2)
+                     (define len 8192)
+                     (define buf1 (make-bytevector len))
+                     (define buf2 (make-bytevector len))
+                     (let loop ()
+                       (let ((n1 (get-bytevector-n! port1 buf1 0 len))
+                             (n2 (get-bytevector-n! port2 buf2 0 len)))
+                         (and (equal? n1 n2)
+                              (or (eof-object? n1)
+                                  (loop)))))))))))))
 
 (define* (union-build output inputs
                       #:key (log-port (current-error-port)))
diff --git a/guix/cve.scm b/guix/cve.scm
index 8e76f42f0d..088e39837a 100644
--- a/guix/cve.scm
+++ b/guix/cve.scm
@@ -19,11 +19,14 @@
 (define-module (guix cve)
   #:use-module (guix utils)
   #:use-module (guix http-client)
+  #:use-module ((guix build utils) #:select (mkdir-p))
   #:use-module (sxml ssax)
   #:use-module (web uri)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
+  #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 vlist)
@@ -46,8 +49,8 @@
 (define-record-type <vulnerability>
   (vulnerability id packages)
   vulnerability?
-  (id         vulnerability-id)
-  (packages   vulnerability-packages))
+  (id         vulnerability-id)                   ;string
+  (packages   vulnerability-packages))            ;((p1 v1 v2 v3) (p2 v1) ...)
 
 (define %now
   (current-date))
@@ -73,7 +76,7 @@
 
 (define (call-with-cve-port uri ttl proc)
   "Pass PROC an input port from which to read the CVE stream."
-  (let ((port (http-fetch/cached uri #:ttl ttl)))
+  (let ((port (http-fetch uri)))
     (dynamic-wind
       (const #t)
       (lambda ()
@@ -91,18 +94,45 @@
 
 (define (cpe->package-name cpe)
   "Converts the Common Platform Enumeration (CPE) string CPE to a package
-name, in a very naive way.  Return #f if CPE does not look like an application
-CPE string."
-  (and=> (regexp-exec %cpe-package-rx (string-trim-both cpe))
+name, in a very naive way.  Return two values: the package name, and its
+version string.  Return #f and #f if CPE does not look like an application CPE
+string."
+  (cond ((regexp-exec %cpe-package-rx (string-trim-both cpe))
+         =>
          (lambda (matches)
-           (cons (match:substring matches 2)
-                 (string-append (match:substring matches 3)
-                                (match (match:substring matches 4)
-                                  ("" "")
-                                  (patch-level
-                                   ;; Drop the colon from things like
-                                   ;; "cpe:/a:openbsd:openssh:6.8:p1".
-                                   (string-drop patch-level 1))))))))
+           (values (match:substring matches 2)
+                   (string-append (match:substring matches 3)
+                                  (match (match:substring matches 4)
+                                    ("" "")
+                                    (patch-level
+                                     ;; Drop the colon from things like
+                                     ;; "cpe:/a:openbsd:openssh:6.8:p1".
+                                     (string-drop patch-level 1)))))))
+        (else
+         (values #f #f))))
+
+(define (cpe->product-alist products)
+  "Given PRODUCTS, a list of CPE names, return the subset limited to the
+applications listed in PRODUCTS, with names converted to package names:
+
+  (cpe->product-alist
+    '(\"cpe:/a:gnu:libtasn1:4.7\" \"cpe:/a:gnu:libtasn1:4.6\" \"cpe:/a:gnu:cpio:2.11\"))
+  => ((\"libtasn1\" \"4.7\" \"4.6\") (\"cpio\" \"2.11\"))
+"
+  (fold (lambda (product result)
+          (let-values (((name version) (cpe->package-name product)))
+            (if name
+                (match result
+                  (((previous . versions) . tail)
+                   ;; Attempt to coalesce NAME and PREVIOUS.
+                   (if (string=? name previous)
+                       (alist-cons name (cons version versions) tail)
+                       (alist-cons name (list version) result)))
+                  (()
+                   (alist-cons name (list version) result)))
+                result)))
+        '()
+        (sort products string<?)))
 
 (define %parse-vulnerability-feed
   ;; Parse the XML vulnerability feed from
@@ -130,12 +160,12 @@ CPE string."
                             ;; Some entries have no vulnerable-software-list.
                             rest)
                            ((products id . rest)
-                            (match (filter-map cpe->package-name products)
+                            (match (cpe->product-alist products)
                               (()
                                ;; No application among PRODUCTS.
                                rest)
                               (packages
-                               (cons (vulnerability id (reverse packages))
+                               (cons (vulnerability id packages)
                                      rest))))))
                         (x
                          seed)))
@@ -154,28 +184,85 @@ CPE string."
 vulnerability objects."
   (reverse (%parse-vulnerability-feed port '())))
 
-(define (current-vulnerabilities)
-  "Return the current list of Common Vulnerabilities and Exposures (CVE) as
-published by the US NIST."
-  (define (read-vulnerabilities uri ttl)
-    (call-with-cve-port uri ttl
+(define vulnerability->sexp
+  (match-lambda
+    (($ <vulnerability> id packages)
+     `(v ,id ,packages))))
+
+(define sexp->vulnerability
+  (match-lambda
+    (('v id (packages ...))
+     (vulnerability id packages))))
+
+(define (fetch-vulnerabilities year ttl)
+  "Return the list of <vulnerability> for YEAR, assuming the on-disk cache has
+the given TTL (fetch from the NIST web site when TTL has expired)."
+  ;; Note: We used to keep the original XML files in cache but parsing it
+  ;; would take typically ~15s for a year of data.  Thus, we instead store a
+  ;; summarized version thereof as an sexp, which can be parsed in 1s or so.
+  (define cache
+    (string-append (cache-directory) "/cve/" (number->string year)))
+
+  (define (do-fetch)
+    (call-with-cve-port (yearly-feed-uri year) ttl
       (lambda (port)
         ;; XXX: The SSAX "error port" is used to send pointless warnings such as
         ;; "warning: Skipping PI".  Turn that off.
+        (format (current-error-port) "fetching CVE database for ~a...~%" year)
         (parameterize ((current-ssax-error-port (%make-void-port "w")))
           (xml->vulnerabilities port)))))
 
-  (append-map read-vulnerabilities
-              (list (yearly-feed-uri %past-year)
-                    (yearly-feed-uri %current-year))
-              (list %past-year-ttl
-                    %current-year-ttl)))
+  (define (update-cache)
+    (mkdir-p (dirname cache))
+    (let ((vulns (do-fetch)))
+      (with-atomic-file-output cache
+        (lambda (port)
+          (write `(vulnerabilities
+                   1                              ;format version
+                   ,(map vulnerability->sexp vulns))
+                 port)))
+      vulns))
+
+  (define (old? file)
+    ;; Return true if PORT has passed TTL.
+    (let* ((s   (stat file))
+           (now (current-time time-utc)))
+      (< (+ (stat:mtime s) ttl) (time-second now))))
+
+  (catch 'system-error
+    (lambda ()
+      (if (old? cache)
+          (update-cache)
+          (match (call-with-input-file cache read)
+            (('vulnerabilities 1 vulns)
+             (map sexp->vulnerability vulns))
+            (x
+             (update-cache)))))
+    (lambda args
+      (update-cache))))
+
+(define (current-vulnerabilities)
+  "Return the current list of Common Vulnerabilities and Exposures (CVE) as
+published by the US NIST."
+  (let ((past-years (unfold (cut > <> 3)
+                            (lambda (n)
+                              (- %current-year n))
+                            1+
+                            1))
+        (past-ttls  (unfold (cut > <> 3)
+                            (lambda (n)
+                              (* n %past-year-ttl))
+                            1+
+                            1)))
+    (append-map fetch-vulnerabilities
+                (cons %current-year past-years)
+                (cons %current-year-ttl past-ttls))))
 
 (define (vulnerabilities->lookup-proc vulnerabilities)
   "Return a lookup procedure built from VULNERABILITIES that takes a package
 name and optionally a version number.  When the version is omitted, the lookup
-procedure returns a list of version/vulnerability pairs; otherwise, it returns
-a list of vulnerabilities affection the given package version."
+procedure returns a list of vulnerabilities; otherwise, it returns a list of
+vulnerabilities affecting the given package version."
   (define table
     ;; Map package names to lists of version/vulnerability pairs.
     (fold (lambda (vuln table)
@@ -183,8 +270,8 @@ a list of vulnerabilities affection the given package version."
               (($ <vulnerability> id packages)
                (fold (lambda (package table)
                        (match package
-                         ((name . version)
-                          (vhash-cons name (cons version vuln)
+                         ((name . versions)
+                          (vhash-cons name (cons vuln versions)
                                       table))))
                      table
                      packages))))
@@ -195,11 +282,14 @@ a list of vulnerabilities affection the given package version."
     (vhash-fold* (if version
                      (lambda (pair result)
                        (match pair
-                         ((v . vuln)
-                          (if (string=? v version)
+                         ((vuln . versions)
+                          (if (member version versions)
                               (cons vuln result)
                               result))))
-                     cons)
+                     (lambda (pair result)
+                       (match pair
+                         ((vuln . _)
+                          (cons vuln result)))))
                  '()
                  package table)))
 
diff --git a/guix/download.scm b/guix/download.scm
index 67c55aff33..9b238dcbdf 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -98,14 +98,28 @@
        "http://savannah.c3sl.ufpr.br/"
        "http://www.centervenus.com/mirrors/nongnu/"
        "http://download.savannah.gnu.org/releases-noredirect/")
-      (sourceforge
+      (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/
        "http://prdownloads.sourceforge.net/"
        "http://heanet.dl.sourceforge.net/sourceforge/"
-       "http://surfnet.dl.sourceforge.net/sourceforge/"
        "http://dfn.dl.sourceforge.net/sourceforge/"
-       "http://mesh.dl.sourceforge.net/sourceforge/"
-       "http://ovh.dl.sourceforge.net/sourceforge/"
-       "http://osdn.dl.sourceforge.net/sourceforge/")
+       "http://freefr.dl.sourceforge.net/sourceforge/"
+       "http://internode.dl.sourceforge.net/sourceforge/"
+       "http://iweb.dl.sourceforge.net/sourceforge/"
+       "http://jaist.dl.sourceforge.net/sourceforge/"
+       "http://kaz.dl.sourceforge.net/sourceforge/"
+       "http://kent.dl.sourceforge.net/sourceforge/"
+       "http://liquidtelecom.dl.sourceforge.net/sourceforge/"
+       "http://nbtelecom.dl.sourceforge.net/sourceforge/"
+       "http://nchc.dl.sourceforge.net/sourceforge/"
+       "http://ncu.dl.sourceforge.net/sourceforge/"
+       "http://netcologne.dl.sourceforge.net/sourceforge/"
+       "http://netix.dl.sourceforge.net/sourceforge/"
+       "http://pilotfiber.dl.sourceforge.net/sourceforge/"
+       "http://superb-sea2.dl.sourceforge.net/sourceforge/"
+       "http://tenet.dl.sourceforge.net/sourceforge/"
+       "http://ufpr.dl.sourceforge.net/sourceforge/"
+       "http://vorboss.dl.sourceforge.net/sourceforge/"
+       "http://netassist.dl.sourceforge.net/sourceforge/")
       (kernel.org
        "http://www.all.kernel.org/pub/"
        "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
@@ -159,13 +173,22 @@
        "ftp://artfiles.org/cpan.org/"
        "http://www.cpan.org/"
        "ftp://cpan.rinet.ru/pub/mirror/CPAN/"
-       "http://cpan.cu.be/"
        "ftp://cpan.inode.at/"
        "ftp://cpan.iht.co.il/"
        "ftp://ftp.osuosl.org/pub/CPAN/"
        "ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
        "http://mirrors.163.com/cpan/"
-       "ftp://cpan.mirror.ac.za/")
+       "ftp://cpan.mirror.ac.za/"
+       "http://cpan.mirrors.ionfish.org/"
+       "http://cpan.mirror.dkm.cz/pub/CPAN/"
+       "http://cpan.mirror.iphh.net/"
+       "http://mirrors.teentelecom.net/CPAN/"
+       "http://mirror.teklinks.com/CPAN/"
+       "http://cpan.weepeetelecom.be/"
+       "http://mirrors.xservers.ro/CPAN/"
+       "http://cpan.yimg.com/"
+       "http://mirror.yazd.ac.ir/cpan/"
+       "http://ftp.belnet.be/ftp.cpan.org/")
       (cran
        ;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html
        ;; This one automatically redirects to servers worldwide
diff --git a/guix/grafts.scm b/guix/grafts.scm
index 6bec999ad2..53e697688a 100644
--- a/guix/grafts.scm
+++ b/guix/grafts.scm
@@ -252,16 +252,23 @@ derivations to the corresponding set of grafts."
          (deps                                    ;one or more dependencies
           (mlet %state-monad ((grafts (mapm %state-monad dependency-grafts deps))
                               (cache  (current-state)))
-            (let* ((grafts  (delete-duplicates (concatenate grafts) equal?))
-                   (origins (map graft-origin-file-name grafts)))
-              (if (find (cut member <> deps) origins)
-                  (let* ((new    (graft-derivation/shallow store drv grafts
-                                                           #:guile guile
-                                                           #:system system))
-                         (grafts (cons (graft (origin drv) (replacement new))
-                                       grafts)))
-                    (return/cache cache grafts))
-                  (return/cache cache grafts))))))))))
+            (let* ((grafts     (delete-duplicates (concatenate grafts) equal?))
+                   (origins    (map graft-origin-file-name grafts)))
+              (match (filter (lambda (graft)
+                               (member (graft-origin-file-name graft) deps))
+                             grafts)
+                (()
+                 (return/cache cache grafts))
+                ((applicable ..1)
+                 ;; Use APPLICABLE, the subset of GRAFTS that is really
+                 ;; applicable to DRV, to avoid creating several identical
+                 ;; grafted variants of DRV.
+                 (let* ((new    (graft-derivation/shallow store drv applicable
+                                                          #:guile guile
+                                                          #:system system))
+                        (grafts (cons (graft (origin drv) (replacement new))
+                                      grafts)))
+                   (return/cache cache grafts))))))))))))
 
 (define* (graft-derivation store drv grafts
                            #:key (guile (%guile-for-build))
diff --git a/guix/graph.scm b/guix/graph.scm
index ad93403a1e..735d340c2c 100644
--- a/guix/graph.scm
+++ b/guix/graph.scm
@@ -37,7 +37,9 @@
 
             node-edges
             node-back-edges
+            traverse/depth-first
             node-transitive-edges
+            node-reachable-count
 
             %graphviz-backend
             graph-backend?
@@ -99,13 +101,13 @@ returns its back edges.  NODES is taken to be the sinks of the global graph."
                (lambda (source target edges)
                  (vhash-consq target source edges))))
 
-(define (node-transitive-edges nodes node-edges)
-  "Return the list of nodes directly or indirectly connected to NODES
-according to the NODE-EDGES procedure.  NODE-EDGES must be a one-argument
-procedure that, given a node, returns its list of direct dependents; it is
-typically returned by 'node-edges' or 'node-back-edges'."
+(define (traverse/depth-first proc seed nodes node-edges)
+  "Do a depth-first traversal of NODES along NODE-EDGES, calling PROC with
+each node and the current result, and visiting each reachable node exactly
+once.  NODES must be a list of nodes, and NODE-EDGES must be a one-argument
+procedure as returned by 'node-edges' or 'node-back-edges'."
   (let loop ((nodes   (append-map node-edges nodes))
-             (result  '())
+             (result  seed)
              (visited (setq)))
     (match nodes
       (()
@@ -115,9 +117,23 @@ typically returned by 'node-edges' or 'node-back-edges'."
            (loop tail result visited)
            (let ((edges (node-edges head)))
              (loop (append edges tail)
-                   (cons head result)
+                   (proc head result)
                    (set-insert head visited))))))))
 
+(define (node-transitive-edges nodes node-edges)
+  "Return the list of nodes directly or indirectly connected to NODES
+according to the NODE-EDGES procedure.  NODE-EDGES must be a one-argument
+procedure that, given a node, returns its list of direct dependents; it is
+typically returned by 'node-edges' or 'node-back-edges'."
+  (traverse/depth-first cons '() nodes node-edges))
+
+(define (node-reachable-count nodes node-edges)
+  "Return the number of nodes reachable from NODES along NODE-EDGES."
+  (traverse/depth-first (lambda (_ count)
+                          (+ 1 count))
+                        0
+                        nodes node-edges))
+
 
 ;;;
 ;;; Graphviz export.
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 29116d79f0..9ba9a10ba0 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -43,8 +43,8 @@ failure."
 (define (find-extension url)
   "Return the extension of the archive e.g. '.tar.gz' given a URL, or
 false if none is recognized"
-  (find (lambda x (string-suffix? (first x) url))
-        (list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar")))
+  (find (lambda (x) (string-suffix? x url))
+        (list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar" ".tgz")))
 
 (define (updated-github-url old-package new-version)
   ;; Return a url for the OLD-PACKAGE with NEW-VERSION.  If no source url in
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 8355af7a48..ce8a11fbe5 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -811,6 +811,7 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc."
                          #:search-paths search-paths)))
 
     (gexp->derivation "profile" builder
+                      #:system system
                       #:modules '((guix build profiles)
                                   (guix build union)
                                   (guix build utils)
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 9ba487d1eb..ebe966f9cf 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -333,11 +333,11 @@ requisite store items i.e. the union closure of all the inputs."
     (requisites*
      (match input
        ((drv output)
-        (derivation->output-path drv output))
+        (list (derivation->output-path drv output)))
        ((drv)
-        (derivation->output-path drv))
+        (list (derivation->output-path drv)))
        ((? direct-store-path? path)
-        path))))
+        (list path)))))
 
   (mlet %store-monad ((reqs (sequence %store-monad
                                       (map input->requisites inputs))))
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 4ec9ff9dca..8db28138c8 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -229,7 +229,8 @@ Invoke the garbage collector.\n"))
         ((list-references)
          (list-relatives references))
         ((list-requisites)
-         (list-relatives requisites))
+         (list-relatives (lambda (store item)
+                           (requisites store (list item)))))
         ((list-referrers)
          (list-relatives referrers))
         ((optimize)
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index d594be18e5..7db0c9d610 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +24,7 @@
   #:use-module (guix serialization)
   #:use-module (guix nar)
   #:use-module (guix utils)
+  #:use-module ((guix build syscalls) #:select (fcntl-flock))
   #:use-module ((guix build utils) #:select (which mkdir-p))
   #:use-module (guix ui)
   #:use-module (srfi srfi-1)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 697afc17c3..e2e37098fc 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -794,9 +794,13 @@ processed, #f otherwise."
   (define transform (options->transformation opts))
 
   (define (transform-entry entry)
-    (manifest-entry
-      (inherit entry)
-      (item (transform store (manifest-entry-item entry)))))
+    (let ((item (transform store (manifest-entry-item entry))))
+      (manifest-entry
+        (inherit entry)
+        (item item)
+        (version (if (package? item)
+                     (package-version item)
+                     (manifest-entry-version entry))))))
 
   ;; First, process roll-backs, generation removals, etc.
   (for-each (match-lambda
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 0efc190b22..209f0d8be9 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -258,38 +258,36 @@ downloaded and authenticated; not updating~%")
 
 (define (list-dependents packages)
   "List all the things that would need to be rebuilt if PACKAGES are changed."
-  (with-store store
-    (run-with-store store
-      ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE
-      ;; because it includes implicit dependencies.
-      (mlet %store-monad ((edges (node-back-edges %bag-node-type
-                                                  (all-packages))))
-        (let* ((dependents (node-transitive-edges packages edges))
-               (covering   (filter (lambda (node)
-                                     (null? (edges node)))
-                                   dependents)))
-          (match dependents
-            (()
-             (format (current-output-port)
-                     (N_ "No dependents other than itself: ~{~a~}~%"
-                         "No dependents other than themselves: ~{~a~^ ~}~%"
-                         (length packages))
-                     (map package-full-name packages)))
+  ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE
+  ;; because it includes implicit dependencies.
+  (mlet %store-monad ((edges (node-back-edges %bag-node-type
+                                              (all-packages))))
+    (let* ((dependents (node-transitive-edges packages edges))
+           (covering   (filter (lambda (node)
+                                 (null? (edges node)))
+                               dependents)))
+      (match dependents
+        (()
+         (format (current-output-port)
+                 (N_ "No dependents other than itself: ~{~a~}~%"
+                     "No dependents other than themselves: ~{~a~^ ~}~%"
+                     (length packages))
+                 (map package-full-name packages)))
 
-            ((x)
-             (format (current-output-port)
-                     (_ "A single dependent package: ~a~%")
-                     (package-full-name x)))
-            (lst
-             (format (current-output-port)
-                     (N_ "Building the following package would ensure ~d \
+        ((x)
+         (format (current-output-port)
+                 (_ "A single dependent package: ~a~%")
+                 (package-full-name x)))
+        (lst
+         (format (current-output-port)
+                 (N_ "Building the following package would ensure ~d \
 dependent packages are rebuilt: ~*~{~a~^ ~}~%"
-                         "Building the following ~d packages would ensure ~d \
+                     "Building the following ~d packages would ensure ~d \
 dependent packages are rebuilt: ~{~a~^ ~}~%"
-                         (length covering))
-                     (length covering) (length dependents)
-                     (map package-full-name covering))))
-          (return #t))))))
+                     (length covering))
+                 (length covering) (length dependents)
+                 (map package-full-name covering))))
+      (return #t))))
 
 
 ;;;
@@ -381,31 +379,36 @@ update would trigger a complete rebuild."
             (some                                 ; user-specified packages
              some))))
     (with-error-handling
-      (cond
-       (list-dependent?
-        (list-dependents packages))
-       (update?
-        (let ((store (open-connection)))
-          (parameterize ((%openpgp-key-server
-                          (or (assoc-ref opts 'key-server)
-                              (%openpgp-key-server)))
-                         (%gpg-command
-                          (or (assoc-ref opts 'gpg-command)
-                              (%gpg-command))))
-            (for-each
-             (cut update-package store <> updaters
-                  #:key-download key-download)
-             packages))))
-       (else
-        (for-each (lambda (package)
-                    (match (package-update-path package updaters)
-                      ((? upstream-source? source)
-                       (let ((loc (or (package-field-location package 'version)
-                                      (package-location package))))
-                         (format (current-error-port)
-                                 (_ "~a: ~a would be upgraded from ~a to ~a~%")
-                                 (location->string loc)
-                                 (package-name package) (package-version package)
-                                 (upstream-source-version source))))
-                      (#f #f)))
-                  packages))))))
+      (with-store store
+        (run-with-store store
+          (cond
+           (list-dependent?
+            (list-dependents packages))
+           (update?
+            (parameterize ((%openpgp-key-server
+                            (or (assoc-ref opts 'key-server)
+                                (%openpgp-key-server)))
+                           (%gpg-command
+                            (or (assoc-ref opts 'gpg-command)
+                                (%gpg-command))))
+              (for-each
+               (cut update-package store <> updaters
+                    #:key-download key-download)
+               packages)
+              (with-monad %store-monad
+                (return #t))))
+           (else
+            (for-each (lambda (package)
+                        (match (package-update-path package updaters)
+                          ((? upstream-source? source)
+                           (let ((loc (or (package-field-location package 'version)
+                                          (package-location package))))
+                             (format (current-error-port)
+                                     (_ "~a: ~a would be upgraded from ~a to ~a~%")
+                                     (location->string loc)
+                                     (package-name package) (package-version package)
+                                     (upstream-source-version source))))
+                          (#f #f)))
+                      packages)
+            (with-monad %store-monad
+              (return #t)))))))))
diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm
index be1e8ca087..f28832ce90 100644
--- a/guix/scripts/size.scm
+++ b/guix/scripts/size.scm
@@ -91,15 +91,16 @@ if ITEM is not in the store."
               (sort profile
                     (match-lambda*
                       ((($ <profile> _ _ total1) ($ <profile> _ _ total2))
-                       (> total1 total2)))))))
+                       (> total1 total2)))))
+    (format port (_ "total: ~,1f MiB~%") (/ whole MiB 1.))))
 
 (define display-profile*
   (lift display-profile %store-monad))
 
-(define (substitutable-requisites store item)
-  "Return the list of requisites of ITEM based on information available in
+(define (substitutable-requisites store items)
+  "Return the list of requisites of ITEMS based on information available in
 substitutes."
-  (let loop ((items  (list item))
+  (let loop ((items  items)
              (result '()))
     (match items
       (()
@@ -113,23 +114,23 @@ substitutes."
                (append (append-map substitutable-references info)
                        result)))))))
 
-(define (requisites* item)
+(define (requisites* items)
   "Return as a monadic value the requisites of ITEMS, based either on the
 information available in the local store or using information about
 substitutes."
   (lambda (store)
     (guard (c ((nix-protocol-error? c)
-               (values (substitutable-requisites store item)
+               (values (substitutable-requisites store items)
                        store)))
-      (values (requisites store item) store))))
+      (values (requisites store items) store))))
 
-(define (store-profile item)
+(define (store-profile items)
   "Return as a monadic value a list of <profile> objects representing the
-profile of ITEM and its requisites."
-  (mlet* %store-monad ((refs  (>>= (requisites* item)
+profile of ITEMS and their requisites."
+  (mlet* %store-monad ((refs  (>>= (requisites* items)
                                    (lambda (refs)
                                      (return (delete-duplicates
-                                              (cons item refs))))))
+                                              (append items refs))))))
                        (sizes (mapm %store-monad
                                     (lambda (item)
                                       (>>= (file-size item)
@@ -137,7 +138,7 @@ profile of ITEM and its requisites."
                                              (return (cons item size)))))
                                     refs)))
     (define (dependency-size item)
-      (mlet %store-monad ((deps (requisites* item)))
+      (mlet %store-monad ((deps (requisites* (list item))))
         (foldm %store-monad
                (lambda (item total)
                  (return (+ (assoc-ref sizes item) total)))
@@ -273,7 +274,7 @@ Report the size of PACKAGE and its dependencies.\n"))
       (match files
         (()
          (leave (_ "missing store item argument\n")))
-        ((file)
+        ((files ..1)
          (leave-on-EPIPE
           ;; Turn off grafts because (1) hydra.gnu.org does not serve grafted
           ;; packages, and (2) they do not make any difference on the
@@ -285,13 +286,12 @@ Report the size of PACKAGE and its dependencies.\n"))
                                  #:substitute-urls urls)
 
               (run-with-store store
-                (mlet* %store-monad ((item    (ensure-store-item file))
-                                     (profile (store-profile item)))
+                (mlet* %store-monad ((items   (mapm %store-monad
+                                                    ensure-store-item files))
+                                     (profile (store-profile items)))
                   (if map-file
                       (begin
                         (profile->page-map profile map-file)
                         (return #t))
                       (display-profile* profile)))
-                #:system system)))))
-        ((files ...)
-         (leave (_ "too many arguments\n")))))))
+                #:system system)))))))))
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 5cdc55f2b2..81ce770dc5 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -889,7 +889,11 @@ DESTINATION as a nar file.  Verify the substitute against ACL."
     ;; Tell the daemon what the expected hash of the Nar itself is.
     (format #t "~a~%" (narinfo-hash narinfo))
 
-    (format (current-error-port) "Downloading ~a~:[~*~; (~a installed)~]...~%"
+    (format (current-error-port)
+            ;; TRANSLATORS: The second part of this message looks like
+            ;; "(4.1MiB installed)"; it shows the size of the package once
+            ;; installed.
+            (_ "Downloading ~a~:[~*~; (~a installed)~]...~%")
             (store-path-abbreviation store-item)
             ;; Use the Nar size as an estimate of the installed size.
             (narinfo-size narinfo)
diff --git a/guix/store.scm b/guix/store.scm
index 4d89f4a413..e3033ee61a 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -803,12 +803,12 @@ the list of references")
             (loop items tail
                   (cons head result)))))))))
 
-(define* (fold-path store proc seed path
+(define* (fold-path store proc seed paths
                     #:optional (relatives (cut references store <>)))
-  "Call PROC for each of the RELATIVES of PATH, exactly once, and return the
+  "Call PROC for each of the RELATIVES of PATHS, exactly once, and return the
 result formed from the successive calls to PROC, the first of which is passed
 SEED."
-  (let loop ((paths  (list path))
+  (let loop ((paths  paths)
              (result seed)
              (seen   vlist-null))
     (match paths
@@ -822,10 +822,10 @@ SEED."
       (()
        result))))
 
-(define (requisites store path)
-  "Return the requisites of PATH, including PATH---i.e., its closure (all its
-references, recursively)."
-  (fold-path store cons '() path))
+(define (requisites store paths)
+  "Return the requisites of PATHS, including PATHS---i.e., their closures (all
+its references, recursively)."
+  (fold-path store cons '() paths))
 
 (define (topologically-sorted store paths)
   "Return a list containing PATHS and all their references sorted in
diff --git a/guix/ui.scm b/guix/ui.scm
index 8310974ac7..cbc9dc841a 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
+;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -313,6 +313,10 @@ There is NO WARRANTY, to the extent permitted by law.
   (exit 0))
 
 (define (show-bug-report-information)
+  ;; TRANSLATORS: The placeholder indicates the bug-reporting address for this
+  ;; package.  Please add another line saying "Report translation bugs to
+  ;; ...\n" with the address for translation bugs (typically your translation
+  ;; team's web or email address).
   (format #t (_ "
 Report bugs to: ~a.") %guix-bug-report-address)
   (format #t (_ "
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index f9fd61adde..ae78e65199 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -1106,8 +1106,10 @@ void DerivationGoal::repairClosure()
 
     /* Get the output closure. */
     PathSet outputClosure;
-    foreach (DerivationOutputs::iterator, i, drv.outputs)
+    foreach (DerivationOutputs::iterator, i, drv.outputs) {
+        if (!wantOutput(i->first, wantedOutputs)) continue;
         computeFSClosure(worker.store, i->second.path, outputClosure);
+    }
 
     /* Filter out our own outputs (which we have already checked). */
     foreach (DerivationOutputs::iterator, i, drv.outputs)
@@ -1289,7 +1291,6 @@ void DerivationGoal::tryToBuild()
        now hold the locks on the output paths, no other process can
        build this derivation, so no further checks are necessary. */
     validPaths = checkPathValidity(true, buildMode == bmRepair);
-    assert(buildMode != bmCheck || validPaths.size() == drv.outputs.size());
     if (buildMode != bmCheck && validPaths.size() == drv.outputs.size()) {
         debug(format("skipping build of derivation `%1%', someone beat us to it") % drvPath);
         outputLocks.setDeletion(true);
@@ -1717,7 +1718,7 @@ void DerivationGoal::startBuilder()
 
     /* In a sandbox, for determinism, always use the same temporary
        directory. */
-    tmpDirInSandbox = useChroot ? "/tmp/guix-build-" + drvName + "-0" : tmpDir;
+    tmpDirInSandbox = useChroot ? canonPath("/tmp", true) + "/guix-build-" + drvName + "-0" : tmpDir;
 
     /* For convenience, set an environment pointing to the top build
        directory. */
@@ -2319,6 +2320,8 @@ void DerivationGoal::registerOutputs()
        outputs to allow hard links between outputs. */
     InodesSeen inodesSeen;
 
+    Path checkSuffix = "-check";
+
     /* Check whether the output paths were created, and grep each
        output path to determine what other paths it references.  Also make all
        output paths read-only. */
@@ -2344,7 +2347,7 @@ void DerivationGoal::registerOutputs()
                 && redirectedBadOutputs.find(path) != redirectedBadOutputs.end()
                 && pathExists(redirected))
                 replaceValidPath(path, redirected);
-            if (buildMode == bmCheck)
+            if (buildMode == bmCheck && redirected != "")
                 actualPath = redirected;
         }
 
@@ -2428,9 +2431,20 @@ void DerivationGoal::registerOutputs()
         PathSet references = scanForReferences(actualPath, allPaths, hash);
 
         if (buildMode == bmCheck) {
+            if (!store->isValidPath(path)) continue;
             ValidPathInfo info = worker.store.queryPathInfo(path);
-            if (hash.first != info.hash)
-                throw Error(format("derivation `%1%' may not be deterministic: hash mismatch in output `%2%'") % drvPath % path);
+            if (hash.first != info.hash) {
+                if (settings.keepFailed) {
+                    Path dst = path + checkSuffix;
+                    if (pathExists(dst)) deletePath(dst);
+                    if (rename(actualPath.c_str(), dst.c_str()))
+                        throw SysError(format("renaming `%1%' to `%2%'") % actualPath % dst);
+                    throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs from ‘%3%’")
+                        % drvPath % path % dst);
+                } else
+                    throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs")
+                        % drvPath % path);
+            }
             continue;
         }
 
@@ -2475,9 +2489,11 @@ void DerivationGoal::registerOutputs()
         checkRefs("disallowedReferences", false, false);
         checkRefs("disallowedRequisites", false, true);
 
-        worker.store.optimisePath(path); // FIXME: combine with scanForReferences()
+        if (curRound == nrRounds) {
+            worker.store.optimisePath(path); // FIXME: combine with scanForReferences()
 
-        worker.store.markContentsGood(path);
+            worker.store.markContentsGood(path);
+        }
 
         ValidPathInfo info;
         info.path = path;
@@ -2490,10 +2506,37 @@ void DerivationGoal::registerOutputs()
 
     if (buildMode == bmCheck) return;
 
-    if (curRound > 1 && prevInfos != infos)
-        throw NotDeterministic(
-            format("result of ‘%1%’ differs from previous round; rejecting as non-deterministic")
-            % drvPath);
+    /* Compare the result with the previous round, and report which
+       path is different, if any.*/
+    if (curRound > 1 && prevInfos != infos) {
+        assert(prevInfos.size() == infos.size());
+        for (auto i = prevInfos.begin(), j = infos.begin(); i != prevInfos.end(); ++i, ++j)
+            if (!(*i == *j)) {
+                Path prev = i->path + checkSuffix;
+                if (pathExists(prev))
+                    throw NotDeterministic(
+                        format("output ‘%1%’ of ‘%2%’ differs from ‘%3%’ from previous round")
+                        % i->path % drvPath % prev);
+                else
+                    throw NotDeterministic(
+                        format("output ‘%1%’ of ‘%2%’ differs from previous round")
+                        % i->path % drvPath);
+            }
+        assert(false); // shouldn't happen
+    }
+
+    if (settings.keepFailed) {
+        for (auto & i : drv.outputs) {
+            Path prev = i.second.path + checkSuffix;
+            if (pathExists(prev)) deletePath(prev);
+            if (curRound < nrRounds) {
+                Path dst = i.second.path + checkSuffix;
+                if (rename(i.second.path.c_str(), dst.c_str()))
+                    throw SysError(format("renaming ‘%1%’ to ‘%2%’") % i.second.path % dst);
+            }
+        }
+
+    }
 
     if (curRound < nrRounds) {
         prevInfos = infos;
@@ -3480,8 +3523,17 @@ void LocalStore::repairPath(const Path & path)
 
     worker.run(goals);
 
-    if (goal->getExitCode() != Goal::ecSuccess)
-        throw Error(format("cannot repair path `%1%'") % path, worker.exitStatus());
+    if (goal->getExitCode() != Goal::ecSuccess) {
+        /* Since substituting the path didn't work, if we have a valid
+           deriver, then rebuild the deriver. */
+        Path deriver = queryDeriver(path);
+        if (deriver != "" && isValidPath(deriver)) {
+            goals.clear();
+            goals.insert(worker.makeDerivationGoal(deriver, StringSet(), bmRepair));
+            worker.run(goals);
+        } else
+            throw Error(format("cannot repair path `%1%'") % path, worker.exitStatus());
+    }
 }
 
 
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 11f61ae030..347e8a703f 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -606,10 +606,10 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe
        users group); we check for this case below. */
     if (st.st_uid != geteuid()) {
 #if HAVE_LCHOWN
-        if (lchown(path.c_str(), geteuid(), (gid_t) -1) == -1)
+        if (lchown(path.c_str(), geteuid(), getegid()) == -1)
 #else
         if (!S_ISLNK(st.st_mode) &&
-            chown(path.c_str(), geteuid(), (gid_t) -1) == -1)
+            chown(path.c_str(), geteuid(), getegid()) == -1)
 #endif
             throw SysError(format("changing owner of `%1%' to %2%")
                 % path % geteuid());
@@ -1213,6 +1213,9 @@ template<class T> T LocalStore::getIntLineFromSubstituter(RunningSubstituter & r
 PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
 {
     PathSet res;
+
+    if (!settings.useSubstitutes) return res;
+
     foreach (Paths::iterator, i, settings.substituters) {
         if (res.size() == paths.size()) break;
         RunningSubstituter & run(runningSubstituters[*i]);
@@ -1239,6 +1242,8 @@ PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
 void LocalStore::querySubstitutablePathInfos(const Path & substituter,
     PathSet & paths, SubstitutablePathInfos & infos)
 {
+    if (!settings.useSubstitutes) return;
+
     RunningSubstituter & run(runningSubstituters[substituter]);
     startSubstituter(substituter, run);
     if (run.disabled) return;
diff --git a/nix/libstore/pathlocks.cc b/nix/libstore/pathlocks.cc
index 830858ff8d..9797ddd7ab 100644
--- a/nix/libstore/pathlocks.cc
+++ b/nix/libstore/pathlocks.cc
@@ -162,7 +162,11 @@ bool PathLocks::lockPaths(const PathSet & _paths,
 
 PathLocks::~PathLocks()
 {
-    unlock();
+    try {
+        unlock();
+    } catch (...) {
+        ignoreException();
+    }
 }
 
 
diff --git a/nix/libutil/xml-writer.cc b/nix/libutil/xml-writer.cc
deleted file mode 100644
index 01794001b2..0000000000
--- a/nix/libutil/xml-writer.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <assert.h>
-
-#include "xml-writer.hh"
-
-
-namespace nix {
-    
-
-XMLWriter::XMLWriter(bool indent, std::ostream & output)
-    : output(output), indent(indent)
-{
-    output << "<?xml version='1.0' encoding='utf-8'?>" << std::endl;
-    closed = false;
-}
-
-
-XMLWriter::~XMLWriter()
-{
-    close();
-}
-
-
-void XMLWriter::close()
-{
-    if (closed) return;
-    while (!pendingElems.empty()) closeElement();
-    closed = true;
-}
-
-
-void XMLWriter::indent_(unsigned int depth)
-{
-    if (!indent) return;
-    output << string(depth * 2, ' ');
-}
-
-
-void XMLWriter::openElement(const string & name,
-    const XMLAttrs & attrs)
-{
-    assert(!closed);
-    indent_(pendingElems.size());
-    output << "<" << name;
-    writeAttrs(attrs);
-    output << ">";
-    if (indent) output << std::endl;
-    pendingElems.push_back(name);
-}
-
-
-void XMLWriter::closeElement()
-{
-    assert(!pendingElems.empty());
-    indent_(pendingElems.size() - 1);
-    output << "</" << pendingElems.back() << ">";
-    if (indent) output << std::endl;
-    pendingElems.pop_back();
-    if (pendingElems.empty()) closed = true;
-}
-
-
-void XMLWriter::writeEmptyElement(const string & name,
-    const XMLAttrs & attrs)
-{
-    assert(!closed);
-    indent_(pendingElems.size());
-    output << "<" << name;
-    writeAttrs(attrs);
-    output << " />";
-    if (indent) output << std::endl;
-}
-
-
-void XMLWriter::writeAttrs(const XMLAttrs & attrs)
-{
-    for (XMLAttrs::const_iterator i = attrs.begin(); i != attrs.end(); ++i) {
-        output << " " << i->first << "=\"";
-        for (unsigned int j = 0; j < i->second.size(); ++j) {
-            char c = i->second[j];
-            if (c == '"') output << "&quot;";
-            else if (c == '<') output << "&lt;";
-            else if (c == '>') output << "&gt;";
-            else if (c == '&') output << "&amp;";
-            /* Escape newlines to prevent attribute normalisation (see
-               XML spec, section 3.3.3. */
-            else if (c == '\n') output << "&#xA;";
-            else output << c;
-        }
-        output << "\"";
-    }
-}
-
-
-}
diff --git a/nix/libutil/xml-writer.hh b/nix/libutil/xml-writer.hh
deleted file mode 100644
index 3cefe3712c..0000000000
--- a/nix/libutil/xml-writer.hh
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-
-#include <iostream>
-#include <string>
-#include <list>
-#include <map>
-
-
-namespace nix {
-
-using std::string;
-using std::map;
-using std::list;
-
-
-typedef map<string, string> XMLAttrs;
-
-
-class XMLWriter
-{
-private:
-
-    std::ostream & output;
-
-    bool indent;
-    bool closed;
-
-    list<string> pendingElems;
-
-public:
-
-    XMLWriter(bool indent, std::ostream & output);
-    ~XMLWriter();
-
-    void close();
-
-    void openElement(const string & name,
-        const XMLAttrs & attrs = XMLAttrs());
-    void closeElement();
-
-    void writeEmptyElement(const string & name,
-        const XMLAttrs & attrs = XMLAttrs());
-
-private:
-    void writeAttrs(const XMLAttrs & attrs);
-
-    void indent_(unsigned int depth);
-};
-
-
-class XMLOpenElement
-{
-private:
-    XMLWriter & writer;
-public:
-    XMLOpenElement(XMLWriter & writer, const string & name,
-        const XMLAttrs & attrs = XMLAttrs())
-        : writer(writer)
-    {
-        writer.openElement(name, attrs);
-    }
-    ~XMLOpenElement()
-    {
-        writer.closeElement();
-    }
-};
-
-
-}
diff --git a/nix/local.mk b/nix/local.mk
index 3c15531f54..07a92f74ea 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -21,7 +21,7 @@
 # Integration of the `guix-daemon' code taken from upstream Nix.
 #
 
-BUILT_SOURCES += nix/libstore/schema.sql.hh
+BUILT_SOURCES += %D%/libstore/schema.sql.hh
 CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service etc/guix-daemon.conf
 
 noinst_LIBRARIES = libformat.a libutil.a libstore.a
@@ -30,80 +30,78 @@ noinst_LIBRARIES = libformat.a libutil.a libstore.a
 AM_CXXFLAGS = -Wall -std=c++11
 
 libformat_a_SOURCES =				\
-  nix/boost/format/free_funcs.cc		\
-  nix/boost/format/parsing.cc			\
-  nix/boost/format/format_implementation.cc
+  %D%/boost/format/free_funcs.cc		\
+  %D%/boost/format/parsing.cc			\
+  %D%/boost/format/format_implementation.cc
 
 libformat_headers =				\
-  nix/boost/throw_exception.hpp			\
-  nix/boost/format.hpp				\
-  nix/boost/assert.hpp				\
-  nix/boost/format/macros_default.hpp		\
-  nix/boost/format/format_fwd.hpp		\
-  nix/boost/format/format_class.hpp		\
-  nix/boost/format/exceptions.hpp		\
-  nix/boost/format/group.hpp			\
-  nix/boost/format/feed_args.hpp		\
-  nix/boost/format/internals_fwd.hpp		\
-  nix/boost/format/internals.hpp
+  %D%/boost/throw_exception.hpp			\
+  %D%/boost/format.hpp				\
+  %D%/boost/assert.hpp				\
+  %D%/boost/format/macros_default.hpp		\
+  %D%/boost/format/format_fwd.hpp		\
+  %D%/boost/format/format_class.hpp		\
+  %D%/boost/format/exceptions.hpp		\
+  %D%/boost/format/group.hpp			\
+  %D%/boost/format/feed_args.hpp		\
+  %D%/boost/format/internals_fwd.hpp		\
+  %D%/boost/format/internals.hpp
 
 libformat_a_CPPFLAGS =				\
   -I$(top_srcdir)/nix
 
 libutil_a_SOURCES =				\
-  nix/libutil/archive.cc			\
-  nix/libutil/affinity.cc			\
-  nix/libutil/serialise.cc			\
-  nix/libutil/util.cc				\
-  nix/libutil/xml-writer.cc			\
-  nix/libutil/hash.cc				\
-  nix/libutil/gcrypt-hash.cc
+  %D%/libutil/archive.cc			\
+  %D%/libutil/affinity.cc			\
+  %D%/libutil/serialise.cc			\
+  %D%/libutil/util.cc				\
+  %D%/libutil/hash.cc				\
+  %D%/libutil/gcrypt-hash.cc
 
 libutil_headers =				\
-  nix/libutil/affinity.hh			\
-  nix/libutil/hash.hh				\
-  nix/libutil/serialise.hh			\
-  nix/libutil/xml-writer.hh			\
-  nix/libutil/util.hh				\
-  nix/libutil/archive.hh			\
-  nix/libutil/types.hh				\
-  nix/libutil/gcrypt-hash.hh			\
-  nix/libutil/md5.h				\
-  nix/libutil/sha1.h				\
-  nix/libutil/sha256.h				\
-  nix/libutil/sha512.h
+  %D%/libutil/affinity.hh			\
+  %D%/libutil/hash.hh				\
+  %D%/libutil/serialise.hh			\
+  %D%/libutil/util.hh				\
+  %D%/libutil/archive.hh			\
+  %D%/libutil/types.hh				\
+  %D%/libutil/gcrypt-hash.hh			\
+  %D%/libutil/md5.h				\
+  %D%/libutil/sha1.h				\
+  %D%/libutil/sha256.h				\
+  %D%/libutil/sha512.h
 
 libutil_a_CPPFLAGS =				\
   -I$(top_builddir)/nix				\
-  -I$(top_srcdir)/nix/libutil			\
+  -I$(top_srcdir)/%D%/libutil			\
   $(libformat_a_CPPFLAGS)
 
 libstore_a_SOURCES =				\
-  nix/libstore/gc.cc				\
-  nix/libstore/globals.cc			\
-  nix/libstore/misc.cc				\
-  nix/libstore/references.cc			\
-  nix/libstore/store-api.cc			\
-  nix/libstore/optimise-store.cc		\
-  nix/libstore/local-store.cc			\
-  nix/libstore/build.cc				\
-  nix/libstore/pathlocks.cc			\
-  nix/libstore/derivations.cc
+  %D%/libstore/gc.cc				\
+  %D%/libstore/globals.cc			\
+  %D%/libstore/misc.cc				\
+  %D%/libstore/references.cc			\
+  %D%/libstore/store-api.cc			\
+  %D%/libstore/optimise-store.cc		\
+  %D%/libstore/local-store.cc			\
+  %D%/libstore/build.cc				\
+  %D%/libstore/pathlocks.cc			\
+  %D%/libstore/derivations.cc
 
 libstore_headers =				\
-  nix/libstore/references.hh			\
-  nix/libstore/pathlocks.hh			\
-  nix/libstore/globals.hh			\
-  nix/libstore/worker-protocol.hh		\
-  nix/libstore/derivations.hh			\
-  nix/libstore/misc.hh				\
-  nix/libstore/local-store.hh			\
-  nix/libstore/store-api.hh
+  %D%/libstore/references.hh			\
+  %D%/libstore/pathlocks.hh			\
+  %D%/libstore/globals.hh			\
+  %D%/libstore/worker-protocol.hh		\
+  %D%/libstore/derivations.hh			\
+  %D%/libstore/misc.hh				\
+  %D%/libstore/local-store.hh			\
+  %D%/libstore/store-api.hh
 
 libstore_a_CPPFLAGS =				\
   $(libutil_a_CPPFLAGS)				\
-  -I$(top_srcdir)/nix/libstore			\
-  -I$(top_builddir)/nix/libstore		\
+  -I$(top_srcdir)/%D%/libstore			\
+  -I$(top_builddir)/%D%/libstore		\
   -DNIX_STORE_DIR=\"$(storedir)\"		\
   -DNIX_DATA_DIR=\"$(datadir)\"			\
   -DNIX_STATE_DIR=\"$(localstatedir)/guix\"	\
@@ -121,29 +119,29 @@ bin_PROGRAMS = guix-daemon
 sbin_PROGRAMS = guix-register
 
 guix_daemon_SOURCES =				\
-  nix/nix-daemon/nix-daemon.cc			\
-  nix/nix-daemon/guix-daemon.cc
+  %D%/nix-daemon/nix-daemon.cc			\
+  %D%/nix-daemon/guix-daemon.cc
 
 guix_daemon_CPPFLAGS =				\
   -DLOCALEDIR=\"$(localedir)\"			\
   $(libutil_a_CPPFLAGS)				\
-  -I$(top_srcdir)/nix/libstore
+  -I$(top_srcdir)/%D%/libstore
 
 guix_daemon_LDADD =				\
   libstore.a libutil.a libformat.a -lbz2	\
   $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
 
 guix_daemon_headers =				\
-  nix/nix-daemon/shared.hh
+  %D%/nix-daemon/shared.hh
 
 
 guix_register_SOURCES =				\
-  nix/guix-register/guix-register.cc
+  %D%/guix-register/guix-register.cc
 
 guix_register_CPPFLAGS =			\
   $(libutil_a_CPPFLAGS)				\
   $(libstore_a_CPPFLAGS)			\
-  -I$(top_srcdir)/nix/libstore
+  -I$(top_srcdir)/%D%/libstore
 
 # XXX: Should we start using shared libs?
 guix_register_LDADD =				\
@@ -155,7 +153,7 @@ noinst_HEADERS =						\
   $(libformat_headers) $(libutil_headers) $(libstore_headers)	\
   $(guix_daemon_headers)
 
-nix/libstore/schema.sql.hh: nix/libstore/schema.sql
+%D%/libstore/schema.sql.hh: %D%/libstore/schema.sql
 	$(AM_V_GEN)$(GUILE) --no-auto-compile -c		\
 	  "(use-modules (rnrs io ports))			\
 	   (call-with-output-file \"$@\"			\
@@ -165,20 +163,20 @@ nix/libstore/schema.sql.hh: nix/libstore/schema.sql
 	           (write (get-string-all in) out)))))"
 
 nodist_pkglibexec_SCRIPTS =			\
-  nix/scripts/list-runtime-roots		\
-  nix/scripts/substitute
+  %D%/scripts/list-runtime-roots		\
+  %D%/scripts/substitute
 
 if BUILD_DAEMON_OFFLOAD
 
 nodist_pkglibexec_SCRIPTS +=			\
-  nix/scripts/offload
+  %D%/scripts/offload
 
 endif BUILD_DAEMON_OFFLOAD
 
 
 # XXX: It'd be better to hide it in $(pkglibexecdir).
 nodist_libexec_SCRIPTS =			\
-  nix/scripts/guix-authenticate
+  %D%/scripts/guix-authenticate
 
 # The '.service' file for systemd.
 systemdservicedir = $(libdir)/systemd/system
@@ -203,9 +201,9 @@ etc/guix-daemon.conf: etc/guix-daemon.conf.in	\
 	mv "$@.tmp" "$@"
 
 EXTRA_DIST +=					\
-  nix/libstore/schema.sql			\
-  nix/AUTHORS					\
-  nix/COPYING					\
+  %D%/libstore/schema.sql			\
+  %D%/AUTHORS					\
+  %D%/COPYING					\
   etc/guix-daemon.service.in	\
   etc/guix-daemon.conf.in
 
diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in
index 60c6ab32d5..29816f8b80 100644
--- a/po/packages/POTFILES.in
+++ b/po/packages/POTFILES.in
@@ -49,8 +49,8 @@ gnu/packages/scheme.scm
 gnu/packages/search.scm
 gnu/packages/serveez.scm
 gnu/packages/telephony.scm
+gnu/packages/tex.scm
 gnu/packages/texinfo.scm
-gnu/packages/texlive.scm
 gnu/packages/textutils.scm
 gnu/packages/version-control.scm
 gnu/packages/webkit.scm
diff --git a/tests/bournish.scm b/tests/bournish.scm
new file mode 100644
index 0000000000..0f529ce42f
--- /dev/null
+++ b/tests/bournish.scm
@@ -0,0 +1,42 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-bournish)
+  #:use-module (guix build bournish)
+  #:use-module (system base compile)
+  #:use-module (system base language)
+  #:use-module (srfi srfi-64))
+
+
+(test-begin "bournish")
+
+(test-equal "single statement"
+  '(chdir "/foo")
+  (read-and-compile (open-input-string "cd /foo")
+                    #:from %bournish-language #:to 'scheme))
+
+(test-equal "multiple statements"
+  '(begin
+     (chdir "/foo")
+     (getcwd)
+     ((@@ (guix build bournish) ls-command-implementation)))
+  (read-and-compile (open-input-string "cd /foo\npwd\nls")
+                    #:from %bournish-language #:to 'scheme))
+
+(test-end "bournish")
+
diff --git a/tests/containers.scm b/tests/containers.scm
index c11cdd1ce5..5a0f9937bb 100644
--- a/tests/containers.scm
+++ b/tests/containers.scm
@@ -79,6 +79,18 @@
        (assert-exit (file-exists? "/testing")))
      #:namespaces '(user mnt))))
 
+(test-equal "call-with-container, mnt namespace, wrong bind mount"
+  `(system-error ,ENOENT)
+  ;; An exception should be raised; see <http://bugs.gnu.org/23306>.
+  (catch 'system-error
+    (lambda ()
+      (call-with-container '(("/does-not-exist" device "/foo"
+                              "none" (bind-mount) #f #f))
+        (const #t)
+        #:namespaces '(user mnt)))
+    (lambda args
+      (list 'system-error (system-error-errno args)))))
+
 (test-assert "call-with-container, all namespaces"
   (zero?
    (call-with-container '()
diff --git a/tests/cve.scm b/tests/cve.scm
index 26e710ce70..3fbb22d3c6 100644
--- a/tests/cve.scm
+++ b/tests/cve.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,12 +32,10 @@
   (list
    ;; CVE-2003-0001 has no "/a" in its product list so it is omitted.
    ;; CVE-2004-0230 lists "tcp" as an application, but lacks a version number.
-   (vulnerability "CVE-2008-2335" '(("phpvid" . "1.1") ("phpvid" . "1.2")))
-   (vulnerability "CVE-2008-3522" '(("enterprise_virtualization" . "3.5")
-                                    ("jasper" . "1.900.1")))
-   (vulnerability "CVE-2009-3301" '(("openoffice.org" . "2.1.0")
-                                    ("openoffice.org" . "2.3.0")
-                                    ("openoffice.org" . "2.2.1")))
+   (vulnerability "CVE-2008-2335" '(("phpvid" "1.2" "1.1")))
+   (vulnerability "CVE-2008-3522" '(("enterprise_virtualization" "3.5")
+                                    ("jasper" "1.900.1")))
+   (vulnerability "CVE-2009-3301" '(("openoffice.org" "2.3.0" "2.2.1" "2.1.0")))
    ;; CVE-2015-8330 has no software list.
    ))
 
@@ -48,9 +46,8 @@
   %expected-vulnerabilities
   (call-with-input-file %sample xml->vulnerabilities))
 
-(test-equal ""
-  (list `(("1.1" . ,(first %expected-vulnerabilities))
-          ("1.2" . ,(first %expected-vulnerabilities)))
+(test-equal "vulnerabilities->lookup-proc"
+  (list (list (first %expected-vulnerabilities))
         '()
         '()
         (list (second %expected-vulnerabilities))
diff --git a/tests/graph.scm b/tests/graph.scm
index 32317195d7..1ce06cc817 100644
--- a/tests/graph.scm
+++ b/tests/graph.scm
@@ -275,4 +275,17 @@ edges."
         (return (lset= eq? (node-transitive-edges (list p2) edges)
                        (list p1a p1b p0)))))))
 
+(test-equal "node-reachable-count"
+  '(3 3)
+  (run-with-store %store
+    (let* ((p0  (dummy-package "p0"))
+           (p1a (dummy-package "p1a" (inputs `(("p0" ,p0)))))
+           (p1b (dummy-package "p1b" (inputs `(("p0" ,p0)))))
+           (p2  (dummy-package "p2" (inputs `(("p1a" ,p1a) ("p1b" ,p1b))))))
+      (mlet* %store-monad ((all -> (list p2 p1a p1b p0))
+                           (edges  (node-edges %package-node-type all))
+                           (back   (node-back-edges %package-node-type all)))
+        (return (list (node-reachable-count (list p2) edges)
+                      (node-reachable-count (list p0) back)))))))
+
 (test-end "graph")
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index 0a7ea481fc..5ea6c49263 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -44,6 +44,16 @@ else
     test $? = 42
 fi
 
+# Make sure file-not-found errors in mounts are reported.
+if guix environment --container --ad-hoc --bootstrap guile-bootstrap \
+	--expose=/does-not-exist -- guile -c 1 2> "$tmpdir/error"
+then
+    false
+else
+    grep "/does-not-exist" "$tmpdir/error"
+    grep "[Nn]o such file" "$tmpdir/error"
+fi
+
 # Make sure that the right directories are mapped.
 mount_test_code="
 (use-modules (ice-9 rdelim)
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index 5ad8dfa82a..0b5123ab45 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -57,6 +57,21 @@ else
     test $? = 42
 fi
 
+case "`uname -m`" in
+    x86_64)
+	# On x86_64, we should be able to create a 32-bit environment.
+	guix environment --bootstrap --ad-hoc guile-bootstrap --pure	\
+	     -- guile -c '(exit (string-prefix? "x86_64" %host-type))'
+	guix environment --bootstrap --ad-hoc guile-bootstrap --pure	\
+	     -s i686-linux						\
+	     -- guile -c '(exit (string-prefix? "i686" %host-type))'
+	;;
+    *)
+	echo "nothing to do" >&2
+	;;
+esac
+
+
 # Same as above, but with deprecated -E flag.
 if guix environment --bootstrap --ad-hoc guile-bootstrap --pure \
         -E "guile -c '(exit 42)'"
diff --git a/tests/guix-lint.sh b/tests/guix-lint.sh
index c105521ec7..7ddc7c265b 100644
--- a/tests/guix-lint.sh
+++ b/tests/guix-lint.sh
@@ -54,7 +54,7 @@ grep_warning ()
 # 2) the synopsis starts with a lower-case letter;
 # 3) the description has a single space following the end-of-sentence period.
 
-out=`guix lint dummy 2>&1`
+out=`guix lint -c synopsis,description dummy 2>&1`
 if [ `grep_warning "$out"` -ne 3 ]
 then false; else true; fi
 
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 28c34dbc6a..68a1946aa0 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -140,6 +140,20 @@ rm "$profile" "$profile"-[0-9]-link
 guix gc -d "$real_profile"
 [ ! -d "$real_profile" ]
 
+# Package transformations.
+
+# Make sure we get the right version number when using '--with-source'.
+mkdir "$module_dir"
+emacs_tarball="$module_dir/emacs-42.5.9rc7.tar.gz"
+touch "$emacs_tarball"
+guix package -p "$profile" -i emacs --with-source="$emacs_tarball" -n \
+     2> "$tmpfile"
+grep -E 'emacs[[:blank:]]+42\.5\.9rc7[[:blank:]]+.*-emacs-42.5.9rc7' \
+     "$tmpfile"
+rm "$emacs_tarball" "$tmpfile"
+rmdir "$module_dir"
+
+
 #
 # Try with the default profile.
 #
diff --git a/tests/size.scm b/tests/size.scm
index fcd590283d..068ebc1d68 100644
--- a/tests/size.scm
+++ b/tests/size.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,7 +54,7 @@
     (mbegin %store-monad
       (built-derivations (list file2))
       (mlet %store-monad ((profiles (store-profile
-                                     (derivation->output-path file2)))
+                                     (list (derivation->output-path file2))))
                           (bash     (interned-file
                                      (search-bootstrap-binary
                                       "bash" (%current-system)) "bash"
diff --git a/tests/store.scm b/tests/store.scm
index eeadcb94f8..38b8efce96 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -205,7 +205,8 @@
                                                         (%current-system))))
              (d  (derivation s "the-thing" b '("--help")
                              #:inputs `((,b)))))
-        (references/substitutes s (list (derivation->output-path d) b))))))
+        (references/substitutes s (list (derivation->output-path d) b))
+        #f))))
 
 (test-assert "references/substitutes with substitute info"
   (with-store s
@@ -231,6 +232,32 @@
                   (,t1)                           ;refs of T2
                   ()))))))                        ;refs of T1
 
+(test-equal "substitutable-path-info when substitutes are turned off"
+  '()
+  (with-store s
+    (set-build-options s #:use-substitutes? #f)
+    (let* ((b  (add-to-store s "bash" #t "sha256"
+                             (search-bootstrap-binary "bash"
+                                                      (%current-system))))
+           (d  (derivation s "the-thing" b '("--version")
+                           #:inputs `((,b))))
+           (o  (derivation->output-path d)))
+      (with-derivation-narinfo d
+        (substitutable-path-info s (list o))))))
+
+(test-equal "substitutable-paths when substitutes are turned off"
+  '()
+  (with-store s
+    (set-build-options s #:use-substitutes? #f)
+    (let* ((b  (add-to-store s "bash" #t "sha256"
+                             (search-bootstrap-binary "bash"
+                                                      (%current-system))))
+           (d  (derivation s "the-thing" b '("--version")
+                           #:inputs `((,b))))
+           (o  (derivation->output-path d)))
+      (with-derivation-narinfo d
+        (substitutable-paths s (list o))))))
+
 (test-assert "requisites"
   (let* ((t1 (add-text-to-store %store "random1"
                                 (random-text) '()))
@@ -244,10 +271,12 @@
       (and (= (length x) (length y))
            (lset= equal? x y)))
 
-    (and (same? (requisites %store t1) (list t1))
-         (same? (requisites %store t2) (list t1 t2))
-         (same? (requisites %store t3) (list t1 t2 t3))
-         (same? (requisites %store t4) (list t1 t2 t3 t4)))))
+    (and (same? (requisites %store (list t1)) (list t1))
+         (same? (requisites %store (list t2)) (list t1 t2))
+         (same? (requisites %store (list t3)) (list t1 t2 t3))
+         (same? (requisites %store (list t4)) (list t1 t2 t3 t4))
+         (same? (requisites %store (list t1 t2 t3 t4))
+                (list t1 t2 t3 t4)))))
 
 (test-assert "derivers"
   (let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))